2011年6月19日 星期日

CG Assignment #6 自訂主題3D動畫程式

主題介紹

夢幻的元智樂園


元智大學八館的模擬圖,由世界知名的建築師所設計的大作將會落成在元智校園中,只是我們在學的期間可能還無法完成,就藉由這個作業來觀摩一下吧!

過程與成果展示


這次的作業主要是以上個作業 - 元智校園為架構下去做更新補充,這次的作業基本需求有Lighting, Texture Mapping, Object Loading, Transformation and Viewing,其中幾項已經在上一次作業中有應用過了,所以就不在這次網誌中贅述。


程式初始畫面

Object Loading - Castle
GLMmodel *glm_model_1;
glm_model_1= glmReadOBJ( "castle.obj" );
glmUnitize( glm_model_1 );
glmScale( glm_model_1, .1 );
glmFacetNormals( glm_model_1 );
glmVertexNormals( glm_model_1, 90 );
list_id = glmList( glm_model_1,  GLM_SMOOTH );
glmDelete( glm_model_1 );







Object Loading + Transformation - Dolphin

Texture Mapping - Moon


心得與討論
這次的作業整體來說並沒有花比上次作業來的久,因為架構都已經有了,不過在尋找obj也是花了蠻多的時間,因為網路上找到的obj大多都是要付費不然就是要轉檔,所以要找適合的obj並不容易。載入之後還花了蠻多時間在貼圖上,原本是想把建築物的外觀貼圖,但是嘗試了許久都找不到貼不上去的原因,最後只有利用球體貼圖成功,這學期的計圖作業就在此告一段落了,如果以後有機會的話希望還有這學期的熱誠!

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的順序讓我吃足了苦頭,地球很任性的一直不肯乖乖的照著我的想法轉,後來慢慢的嘗試終於成功了。另外一個就是在寫其他八顆行星時由於有些行星的公轉週期實在太長導致在畫面上幾乎成停滯的狀態,所以我就自行調整了各行星的公轉比率,讓所有行星看起來都會轉動。經過這次作業讓我對於繪圖越來越有信心,希望之後的作業也能夠這麼順利。

2011年3月27日 星期日

Assignment#1 元智夜景繪製

1.主題介紹: 星空夜語 - 元智六館


參考圖(一)


參考圖(二)
  
  


2.執行結果呈現
 完成圖:


      使用GL_POLYGON和GL_LINE_LOOP畫出多邊形和圓型,繪製出六館外型和草地以及路燈和樹木,星星是利用兩個三角形組成的,最後利用srand()搭配glScalef和glTranslatef製造出隨機位置和隨機大小的星星。
  

  繪圖步驟:背景 → 六館 → 草地 → 路燈&樹木 → 星星











 3.心得與討論

  第一份計算機圖學的作業,使用OpenGL對於我來說很新鮮也很陌生。雖然之前在視窗程式設計中有使用過,但是當時並沒有很深入的去了解每個函式所代表的意思和用法,這次實做元智夜景,從取材到設計完成都是自己花時間所造就的心血,所以特別有成就感。大部分使用到的函式都是教授上課投影片中有使用過的函式,另外還請教同學使用了隨機在不同位置產生不同大小的物件的方法,讓我對自己的作品更加滿意,也對於接下來的學習更有動力。