2011年5月15日 星期日

CG Assignment #4 3D場景悠遊

主題介紹

下一站,元智



過程與成果展示
  首先先在學校官網上找了上圖的校區平面圖作為這次作業的參考圖,我先將最基底的草地著色出來以確定之後擺放各建築物的空間,然後把紅磚道和路旁的樹木擺上,接下來將一~七館繪製出來,利用glutSolidCube搭配glScalef來建構不同大小的立方體、利用gluCylinder來建構有圓柱造型的建築。加上了光源後整個畫面變得真實許多,最後覺得畫面有點空曠就又加上了幾棵樹跟烏龜池。
  調整視角的部分我使用了glutKeyboardFunc和glutSpecialFunc,在KeyboardFunc設定WASD各控制了前進、往左移動、往右移動和後退,在SpecialFunc中設定鍵盤的上下左右分邊控制視角的俯視、仰視、左旋轉和右旋轉。

初始畫面

俯視圖

側視圖


近照圖

心得與討論
這次作業花的時間明顯比上一個作業要長得多,因為對於空間的概念不是很熟悉,所以光是一開始設定視角和建構環境和各館時就花掉了大部分的時間。一開始在參考老師和網路上的範例時遇到了無法Compile的問題,詢問了許多同學也找了很多方法依然不得其門而入。一開始對於繪製3D物件很沒概念,所以只能一個參數一個參數下去微調直到放到自己滿意的位子,後來熟悉用法之後建立這些物件也就比較駕輕就熟了。完成這個3D悠遊元智校園的程式讓我感到相當的滿意也很有成就感。

2011年5月13日 星期五

Assignment #3 太陽系(the solar system)

主題介紹

九大國度


這是我們所居住的太陽系,美麗的九大行星(現已為八大行星)各自繞著太陽公轉和自轉,這次我就來讓他們在畫面上呈現吧。

過程與成果展示

首先將畫面大小及一些基本參數設定好之後就要開始繪製太陽,將太陽的座標設定在畫面的正中央,利用glColor3f和glutWireSphere繪製出太陽。接下來利用glRotatef和glTranslatef讓地球繞著太陽作公轉和自轉的動作,月球再繞著地球轉。

接著上網搜尋了九大行星的公轉字轉週期表,依照各行星公轉和自轉的週期繪製其他七顆行星。

太陽系模擬的完成圖,另外我還加上了特殊鍵SpecialKeyFunc的功能,利用鍵盤的"↑"讓轉動加速,鍵盤的"↓"讓轉動減速,實際運作情況可由下面的影片觀賞。


心得與討論

首先要先抱怨一下Blog回朔的問題,讓我星期四就打好的網誌又得全部重打一次,實在是沒什麼心情。這次作業由於可以找到畫球的範例所以起頭相當順利,但在繪製地球的時候就碰到了瓶頸,glRotatef和glTranslatef的順序讓我吃足了苦頭,地球很任性的一直不肯乖乖的照著我的想法轉,後來慢慢的嘗試終於成功了。另外一個就是在寫其他八顆行星時由於有些行星的公轉週期實在太長導致在畫面上幾乎成停滯的狀態,所以我就自行調整了各行星的公轉比率,讓所有行星看起來都會轉動。經過這次作業讓我對於繪圖越來越有信心,希望之後的作業也能夠這麼順利。