week08-1_loadShape_shape
// week08_1_loadShape_shape size(400,400,P3D); // Step03: 要有 P3D 的 OpenGL 3D 功能 PShape gundam = loadShape("Gundam.obj"); // Step01: 讀入 3D 模型 translate(width/2, height/2); pushMatrix(); // 備份矩陣 translate(0,100); // Step05: 再往下一點點,比較好看 scale(10,-10,10); // Step04: 把模型放大 shape(10) 上下要再倒過來 shape(gundam,0,0); // Step02: 畫出 3D 模型 popMatrix(); // 還原矩陣
用老師給的模型做出一個鋼彈Step01 就是把模型拉到程式week08-2_PShape_gundam_setup_draw_push_scale_shape_pop
// week08_2_PShape_gundam_setup_draw_push_scale_shape_pop
// 轉動它,要改成互動模式的程式風格
PShape gundam; // 要再把 Gundam.obj 等檔案,拉進來
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_large_bad_mtl
// week08_3_another_obj_large_bad_mtl PShape gundam; // 要再把 Gundam.obj 等檔案,拉進來 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_gunda_bodym_head// week08_4_ // 慢慢把「切割開」的模型,逐一組合起來 size(400,400,P3D); translate(width/2, height/2+100); // 身體的4個檔案body.obj、body.mtl、AO.jpg、Diffuse.jpg PShape body = loadShape("body.obj"); scale(10,-10,10); shape(body,0,0);將老師傳的檔案匯入body.obj、body.mtl、AO.jpg、Diffuse.jpg先做身體// week08_4_ // 慢慢把「切割開」的模型,逐一組合起來 // 身體的4個檔案body.obj、body.mtl、AO.jpg、Diffuse.jpg PShape body, head; // 頭的2個檔案 head.obj、head.mtl 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(x/10,y/10); // 要放在小x,y的座標 shape(head,0,0); popMatrix(); shape(body,0,0); } float x = 0, y = 0; void mouseDragged(){ x += mouseX - pmouseX; y -= mouseY - pmouseY; }一開始讓頭可以跟著滑鼠移動// week08_4_gunda_bodym_head // 慢慢把「切割開」的模型,逐一組合起來 // 身體的4個檔案body.obj、body.mtl、AO.jpg、Diffuse.jpg PShape body, head; // 頭的2個檔案 head.obj、head.mtl 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,+22.5); // Step03: 再掛回原來的地方 rotate(radians(-x)); // Step02: 轉動 //translate(x/10,y/10); // 要放在小x,y的座標 //println(x/10,y/10); // 印出座標,等下要取代上面的數值 translate(0.0,-22.5); // Step01: 我們的頭的中心,有放在旋轉中心 shape(head,0,0); popMatrix(); shape(body,0,0); } float x = 0, y = 0; void mouseDragged(){ x += mouseX - pmouseX; y -= mouseY - pmouseY; }一開始可以跟著滑鼠做x座標的轉動
沒有留言:
張貼留言