2025年4月10日 星期四

12750202 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 ,AO.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;
}







沒有留言:

張貼留言