2020年6月22日 星期一

黃姓小女紙寫程式~~Week18

Week 18

本日前提要緊:

今天終於是最後一堂課了,爽啦,雖然我抱著很大的怨念來上課QQ,好想在家睡覺阿!!
但還是只能認分的來寫程式,首先今天要先寫出新的東西鋼彈勇士的模型,是大二下才會看到的,現在就讓我們來看看吧。

步驟1:

程式碼:
             PShape gundam;  ///宣告3D模型的,跟前面交的Image宣告差不多
             void setup( ){
                 size (500,500,P3D); ///一樣是用在3D模型的
                 gundam = loadShape("Gundam.obj");
             }
             void draw( ){
                 shape(gundam); 
             }
解讀:
記得把照片檔案拖曳進來喔~
注意!!!!!!!!!! 
檔名什麼的都不可以寫錯,會有程式的問題,這時跟著以下這張圖~~~

步驟2:

程式碼:
              PShape gundam;
              void setup( ){
                  size (500,500,P3D);
                  gundam = loadShape("Gundam.obj");
              }
              void draw( ){
                  scale(10,10,10); ///可調大模型的縮放比例(x,y,z)
                 shape(gundam); 
              }
解讀: 
3D模型基本需要用到的三個東西: scale是縮放 translate縮放 rotate旋轉
為什麼沒有辦法置中??? 因為MAYA在建模型時,放在中間,所以圖一開始的中心在(0,0)

步驟3:


程式碼:
              PShape gundam;
              void setup( ){
                  size (500,500,P3D);
                  gundam = loadShape("Gundam.obj");
               }
               void draw( ){
                   translate(250,0,0);    ///用translate 移動250,是圖的一半
                   scale(10,10,10);
                   shape(gundam); 
               }

步驟4:

程式碼:
              PShape gundam;
              void setup( ){
                  size (500,500,P3D);
                  gundam = loadShape("Gundam.obj");
              }
              void draw( ){
                  rotate(1);    ///旋轉一弧度 單位是radians( )
                  translate(250,0,0);
                  scale(10,10,10);
                  shape(gundam); 
              }
解釋:
圖左上角的星星是鋼彈的中心(0,0)

步驟5:

程式碼:
             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變負的
                 rotateY(radians(frameCount)); ///對Y軸旋轉
                shape(gundam); 
             }
解釋:
在3D操作中移動 旋轉 縮放 程式的順序不同,結果會差很多

這樣鋼彈勇士模型就完成了!
接下來進入本日的第二個模型 "地球"

先來看一遍完整版的了解一下在幹嘛吧!

程式碼:
              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);
                 noStroke( );
                 translate(width/2,height/2);
                 rotate(radians(frameCount));
                 shape(globe); 
            }
接下來就從頭手做一遍吧~~~

步驟一:

程式碼:
             PImage img;
             void setup( ){
                 size(300,300,P3D);
                 img = loadImage("earth.jpg");
             }
             void draw( ){
                 image(img,0,0);
             }
解釋:
把圖檔匯進來是很重要的,跟上面直接匯模型不太一樣,要注意!!!

步驟二:

程式碼:
              PImage img;
              PShape globe;
              void setup( ){
                  size(300,300,P3D);
                  img = loadImage("earth.jpg");
                  globe=createShape(SPHERE,100);
              }
              void draw( ){
                  image(img,0,0);
                  ///sphere(100); ///用這一行是指畫出一個圓球,但後來要改它,所以不用
                  shape(globe);
              }
解釋:
雖然只有sphere(100)很簡單,但是因為後續的問題,所以要該城多三行,功能就會比較強大,先用PShare處理,只因為它可以改變最後一行的shape

步驟三:

程式碼:
              PImage img;
              PShape globe;
              void setup( ){
                  size(300,300,P3D);
                  img = loadImage("earth.jpg");
                  globe=createShape(SPHERE,100);
                  globe.setTexture(img);   ///所以可以設定貼圖
             }
             void draw( ){
               //image(img,0,0);
               //sphere(100);
               shape(globe);  ///變成shape比較厲害
             }

步驟四:

程式碼:
              PImage img;
              PShape globe;
              void setup( ){
                  size(300,300,P3D);
                  img = loadImage("earth.jpg");
                  globe=createShape(SPHERE,100);
                  globe.setTexture(img);
             }
            void draw( ){
                //image(img,0,0);
                //sphere(100);
                translate(width/2,height/2);   ///因為要固定它的大小,不能用(300/2,300/2)
                shape(globe);
            }
本學期最後一堂,結束!!下課!!
喜歡可以訂閱加關注喔,開啟小鈴鐺
但應該不會在更新吧哈哈~~

沒有留言:

張貼留言