2025年4月10日 星期四

12750140_week08

 課堂作業1

//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(); //還原矩陣



 課堂作業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
//慢慢把「切割開」的模式,逐一組合起來
//四個檔案拉進來 body.obj body.mtl Diffuse.jpg A0.jpg
// 頭的2個檔案 head.obj head.mtl
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;
}



沒有留言:

張貼留言