2025年4月10日 星期四

123

 程式碼由下往上看(大範圍到小範圍)

//week08-1-loadShape-shape
size(400,400,P3D);//一定要有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;
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();
}

必須要有obj以及mtl檔才能顯現

//week08-3-another-obj-large-bad-mtl
PShape gundam;
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();
  
}

combination the robert

//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.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;
}








沒有留言:

張貼留言