2025年4月10日 星期四

week08_11131301賴珮語

 2025-04-10 Week08

1. 複習:T-R-T 及階層轉動
2. HW2 驗收
3. 考試:T-R-T 如何轉動
4. 主題:讀入3D模型


課堂練習1
一個3D鋼彈模型
//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);
  scale(10,-10,10); //step04 把模型放大 shape(10)上下要倒過來
  shape(gundam,0,0); //step02 畫出3D模型
popMatrix(); //還原矩陣




課堂練習2
//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();
}


課堂練習3
//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);
  lights();
  translate(width/2,height/2+100);
  pushMatrix();
    scale(10,-10,10);
    rotateY(radians(frameCount));
    shape(gundam,0,0);
  popMatrix();
}


課堂練習4
//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,22.5); //step03 再掛回原本的地方
    rotate(radians(x)); //step02 轉動 
    //translate(x/10,y/10); //要放小x,y的座標
    //println(x/10,y/10); //印出座標 等等要取上面的數
    translate(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;
}








沒有留言:

張貼留言