2020年6月20日 星期六

Week18

利用Gundam資料夾中的五個檔案移到P語言裡.
PShape gundam;
void setup(){
  size(500,500,P3D);
  gundam = loadShape("Gundam.obj");///檔名記得不要打錯.
}
void draw(){
  shape(gundam);
}


因為圖太小 所以我們加一條程式去讓它放大!

縮放scale(10,10,10);///x,y,z的大小
Q.為什麼只有一半?
A:MAYA件模型時,放在中間

移動translate(250,0,0);///把Gundam往右移500的一半250.
旋轉rotate();
要清背景不然會有殘影 background();
Ps.radians可以把我的熟悉的度,轉成radians

3D操作中,移動、旋轉、縮放 程式的順序不同,結果會差很多。
*1sec = 60 frame.
-------------------------------------
PShape gundam;
void setup(){
  size(500,500,P3D);
  gundam = loadShape("Gundam.obj");
}
void draw(){
  background(128);
  translate(250,400,0);
  scale(10,-10,10);///放大10倍,但y變負的,先對Y軸旋轉。
  rotateY(radians(frameCount));///1 sec 轉60度,6 sec 便可以轉360度。
  shape(gundam);

}



比較&講解 earth地球 vs. Gundam鋼彈 的在draw()畫圖時的差別~

earth檔案中:translate(width/2,height/2);
300/2 300/2 的是要把它移到中間。
那300是上面,原本寬度width:300 高度height:300.
把 sphere(100)畫的圓球,變成3行 PShape globe 再 globe=createShape(SPHERE,100)再 shape(globe)來畫-------------------------------------------------------
PImage img;
PShape globe;   ///現在變三行,Pshape處理.
void setup(){
  size (300,300,P3D);
  img = loadImage("earth.jpg");
  globe = createShape(SPHERE, 100);   ///功能可以比較強大
}
void draw(){
  ///image( img, 0, 0);   ///它變成Pshape比較厲害.
   //sphere(100);   ///原本只畫圓球,不能改.
   shape(globe);   ///因為它變成可改變的shape.

}


那因為現在的圖在左上角,我們要把它放到中間,所以他必須往右移300/2 + 往下300/2.

--------------------------------------------------------------
PImage img;
PShape globe;
void setup(){
  size (300,300,P3D);
  img = loadImage("earth.jpg");
  globe = createShape(SPHERE, 100);
  globe.setStroke(false);
  globe.setTexture(img);
}
void draw(){
   background(128);
   translate(width/2, height/2);
   rotateY(radians(frameCount));
   shape(globe);
}
這個地球在中間 + 轉動。
Ps.lights();打光後,像立體
noStroke();不要畫stroke外框

沒有留言:

張貼留言