2025年4月10日 星期四

12751036-徐詩淳_week08









// 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); // 下移一點比較好看

  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;
// 頭的兩個檔案 head.obj head.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;
}














沒有留言:

張貼留言