week08
// week08-1_loadShape_shape
size(400, 400, P3D); // (3)要有P3D 的 OpenGL 3D 功能
PShape gundam = loadShape("Gundam.obj");// (1) 讀入 3D 模型
translate(width/2, height/2);// 放到畫面中心
pushMatrix();// 備份矩陣
translate(0, 100);// (5) 再往下移一點點,比較好看
scale(10, -10, 10);// (4) 把模型放大 shape(10) 上下要倒過來
shape(gundam, 0, 0);// (2) 畫出 3D 模型
popMatrix();// 還原矩陣
// week08-2_PShape_gundam_setup_draw_push_scale_shape_pop
// 轉動它,要改成互動模式的程式風格
PShape gundam;
void setup(){
size(400, 400, P3D);
gundam = loadShape("Gundam.obj");
}
void draw(){
background(128);
translate(width/2, height/2+100);
pushMatrix();
scale(10, -10, 10);
rotateY(radians(frameCount));
shape(gundam, 0, 0);
popMatrix();
pushMatrix();
translate(100, 0, 0);
scale(10, -10, 10);
shape(gundam, 0, 0);
popMatrix();
}
// week08-3_another_obj_largePShape gundam;void setup(){size(400, 400, P3D);gundam = loadShape("FinalBaseMesh.obj");}void draw(){background(128);translate(width/2, height/2+100);pushMatrix();scale(10, -10, 10);rotateY(radians(frameCount));shape(gundam, 0, 0);popMatrix();}
// week08-4_gundam_body_head
// 慢慢把「切割開」的模型, 逐一組合起來
PShape body, head;
void setup(){
size(400, 400, P3D);
body= loadShape("body.obj");
head= loadShape("head.obj");
}
void draw(){
background(255);
translate(width/2, height/2+100);
sphere(10);// 基準點
scale(10, -10, 10);
pushMatrix();
translate(0.0, +22.5);// (3) 再掛回原來的地方
rotate(radians(x));// (2) 轉動
//translate(x/10, y/10);// 要放在小 x,y 的座標
//println(x/10,y/10);// 印出座標, 等下要取上面的數
translate(0.0, -22.5);// (1) 我們頭的中心, 有放在旋轉中心
shape(head, 0, 0);
popMatrix();
shape(body, 0, 0);
}
float x=0, y=0;
void mouseDragged(){
x+= mouseX - pmouseX;
y-= mouseY - pmouseY;
}
沒有留言:
張貼留言