week 16 教學軟體筆記 呂郁欣
1.VR 噴漆
Capturing Dynamic Textured Surfaces of Moving Targets
2.Project Tango Test in my Room
這個程式會去把目前抓到的深度資訊,重新建立出 3D 的模型出來;而當 Kinect 移動的時候,他則會連續性地追蹤 Kinect 的位置變化(6DOF、而且是不需要特徵點的方法)、並將新的資料結合到目前的模型裡;這些動作,都是使用 GPGPU 的技術、即時做到的。
TOF :TIME OF Flight 飛行時間
4.scanning the David
Q: 那戶外大型建築怎麼掃描?
A: 義大利有許多大型的雕像,可能5-10公尺高, "數位米開朗基羅計畫" 由跨國的團隊,把大型的雕像掃描起來。
A: 義大利有許多大型的雕像,可能5-10公尺高, "數位米開朗基羅計畫" 由跨國的團隊,把大型的雕像掃描起來。
5.
int xRes,yRes,zRes, bunny[][][], inside[][][], millis0;
float angleX=0, angleY=0, myScale=1;
void setup(){
size(600,400,P3D);
byte b[]=loadBytes("bunny40.mira");//("bunny80.mira");
xRes=((b[8] &0x00FF)<<8)+(b[9] &0x00FF);
yRes=((b[10]&0x00FF)<<8)+(b[11]&0x00FF);
zRes=((b[12]&0x00FF)<<8)+(b[13]&0x00FF);
myScale=0.3*width/float(xRes);
bunny=new int[xRes][yRes][zRes]; inside=new int[xRes][yRes][zRes];
for(int i=0;i<xRes*yRes*zRes;i++){
int x=int(i/(yRes*zRes)), y=int(i/zRes)%yRes, z=i%zRes;
bunny[x][y][z]=b[256+(xRes+yRes+zRes)*8+i];
}
for(int i=1;i<xRes-1;i++)
for(int j=1;j<yRes-1;j++)
for(int k=1;k<zRes-1;k++)
if(bunny[i-1][j][k]!=0 && bunny[i+1][j][k]!=0 && bunny[i][j-1][k]!=0 && bunny[i][j+1][k]!=0
&& bunny[i][j][k-1]!=0 && bunny[i][j][k+1]!=0) inside[i][j][k]=1;
}
void draw(){
println("fps: "+frameRate);
background(128); noStroke();
pointLight(128,255,128, width, height, height);
directionalLight(30,30,30, 0,0,-1);
directionalLight(40,40,40, 0,1,-1);
translate(width/2,height/2,0);
rotateX(-angleY);
rotateY(angleX);
rotateX(PI/2);
scale(myScale);
translate(-xRes,-yRes,-zRes);
for(int i=0;i<xRes;i++){
for(int j=0;j<yRes;j++){
for(int k=0;k<zRes;k++){
if(bunny[i][j][k]!=0 && inside[i][j][k]==0){
pushMatrix();
translate(2*i,2*j,2*k);
box(2);
popMatrix();
}
}
}
}
}
void mouseDragged(){
angleX+=0.01*(mouseX-pmouseX);
angleY+=0.01*(mouseY-pmouseY);
}
int xRes,yRes,zRes, bunny[][][], inside[][][], millis0;
float angleX=0, angleY=0, myScale=1;
void setup(){
size(600,400,P3D);
byte b[]=loadBytes("bunny40.mira");//("bunny80.mira");
xRes=((b[8] &0x00FF)<<8)+(b[9] &0x00FF);
yRes=((b[10]&0x00FF)<<8)+(b[11]&0x00FF);
zRes=((b[12]&0x00FF)<<8)+(b[13]&0x00FF);
myScale=0.3*width/float(xRes);
bunny=new int[xRes][yRes][zRes]; inside=new int[xRes][yRes][zRes];
for(int i=0;i<xRes*yRes*zRes;i++){
int x=int(i/(yRes*zRes)), y=int(i/zRes)%yRes, z=i%zRes;
bunny[x][y][z]=b[256+(xRes+yRes+zRes)*8+i];
}
for(int i=1;i<xRes-1;i++)
for(int j=1;j<yRes-1;j++)
for(int k=1;k<zRes-1;k++)
if(bunny[i-1][j][k]!=0 && bunny[i+1][j][k]!=0 && bunny[i][j-1][k]!=0 && bunny[i][j+1][k]!=0
&& bunny[i][j][k-1]!=0 && bunny[i][j][k+1]!=0) inside[i][j][k]=1;
}
void draw(){
println("fps: "+frameRate);
background(128); noStroke();
pointLight(128,255,128, width, height, height);
directionalLight(30,30,30, 0,0,-1);
directionalLight(40,40,40, 0,1,-1);
translate(width/2,height/2,0);
rotateX(-angleY);
rotateY(angleX);
rotateX(PI/2);
scale(myScale);
translate(-xRes,-yRes,-zRes);
for(int i=0;i<xRes;i++){
for(int j=0;j<yRes;j++){
for(int k=0;k<zRes;k++){
if(bunny[i][j][k]!=0 && inside[i][j][k]==0){
pushMatrix();
translate(2*i,2*j,2*k);
box(2);
popMatrix();
}
}
}
}
}
void mouseDragged(){
angleX+=0.01*(mouseX-pmouseX);
angleY+=0.01*(mouseY-pmouseY);
}
沒有留言:
張貼留言