// 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; // 要再把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 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_gundam_body_head // 慢慢把[切割開]的模式 , 逐一組合起來.// 四個檔案拉進來 body.obj body.mtl Diffuse.jpg AO.jpg PShape body,head; // 頭的 2個檔案 head.obj dead.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.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; }




沒有留言:
張貼留言