2025年4月10日 星期四

12750591_week08

//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; //要再把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(0);

  translate(width/2,height/2+100);

  pushMatrix();

    scale(10,-10,10);

    rotateY(radians(frameCount));

    shape(gundam,0,0);

  popMatrix();

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

}









沒有留言:

張貼留言