2012年6月17日 星期日

作業五:元智風景

主題:元智風景

程式設計與寫作方法:

這次作業延用部分第四次作業。使用3Ds Max來製作Modules之後,匯出成object,再來以OpenGL讀取object來輸出至螢幕上面。

使用者可以使用上、下、左、右鍵來控制場景的轉換。上鍵控制縮小視野以放大Modules;下鍵控制擴張視野以看到全景;左鍵控制視野向左邊旋轉;右鍵控制視野向右邊旋轉。

Modules成功讀取之後,其實場景看起來會非常地暗,這時我使用Lighting功能來使場景更加逼真,Lighting功能是使用了diffuse、position、ambient、specular這四種來實現。燈光家進場景之後,Modules就更加逼真也更清楚了。

成果展示:




心得:

這學期接觸到OpenGL之後,讓我開了不少眼界。除了學習到OpenGL的基礎之外,也學會使用3Ds Max來製作Module。到目前為止,我不敢說學得很熟練,但我相信,可以實現物件的製作、轉動、平移、打光....等等功能的語言絕對不只有OpenGL,往後的日子裡,可以藉由這學期所學到的電腦繪圖基礎,再往更廣、更深的領域去探索、研究、玩更新、更複雜但更強大的繪圖知識。

2012年6月11日 星期一

作業四:有了燈光的元智

主題:有了燈光的元智

程式設計與寫作方法:

這次直接沿用作業三的模型場景做修改,加入燈光之後似乎整個場景都變成白天,而且模型都更加逼真了!

成果展示:( 可以使用上、下、左、右鍵來控制 )




心得:

之前作業三的成果一直不是很滿意,原因就是因為場景看起來都非常黯淡,顏色不鮮艷,導致模型看起來疫點也不逼真,但經過這次加入lighting的功能之後,整個場景都亮起來了!每個物件都變得很逼真,視角移動,燈光照在物件上面的反射也更顯真實。

這次花很多時間研究如何將Light架設起來,之前忽略掉有使用Scale的功能來放大物件,所以一直沒有效果出來,後來加上glEnable( GL_NORMALIZE )才有明顯的不同。

2012年5月20日 星期日

作業三:元智走透透!

主題:元智走透透!


程式設計與寫作方法:

我將這次作業總共分成兩部分來完成,第一部分是先利用3Ds Max的輔助來建構modules,製作完成之後匯出成為obj。第二部分則是再使用OpenGL來讀取obj,最後輸出。

第一部份:製作modules
在第二次作業的時候就已經做好一館的module了,這次我再對它進行一些加工,加上窗戶以及樓梯,始之看起來更為逼真,雖然做好之後還是差不多樣子啦哈哈!

自來就是其他的部分,因為考慮到時間的問題,我只將六館以及花圃的部分用一些簡單的幾何來表示,更細微精緻的部分就在此次作業之後,再慢慢加上去。

至於樹的部分,3Ds Max中有一個建立擴展圖形的功能,利用那個功能就可以畫出一個樣式簡單的樹了,再對他進行一些修改就完成了。

第二部份:讀取obj
在讀取obj時,要注意座標位置的問題。有時讀取成功之後會發現module根本不再螢幕裡面,可以稍微調整一下座標,或是利用glScalef來找到module。

成果展示:(可以使用上、下、左、右鍵來控制)


全景:

 全景另一角度:

 一館:

從花圃看一館和六館:

從六館看花圃和一館:


心得:

這次的作業真的很好玩,要不是製作module的時間非常的長,不然真的很想把元智1~7館加上活動中心、宿舍、和體育館全部畫出來,能夠控制自己在自己做出的module中遊走的感覺真的很有趣!如果之後可以學會如何精確控制一個物體的運動,那麼又可以在場景中加上人物的module,控制人物在校園中行走,那感覺又會不一樣了!

2012年4月30日 星期一

作業二:元智一館,重新轉動你的世界!

主題介紹:元智一館,重新轉動你的世界!

程式設計與寫作方法:


這次的構圖,是使用了Autodesk 3Ds Max 這個設計軟體。

使用個個軟體畫出一個元智一館的Model,然後匯出成為Object之後,

在OpenGL中利用glm 以及 glut來讀取Object並且輸出到螢幕上。

glm則是使用網路上別人分享的glm.cpp 和 glm.h來做讀取Object,

對於glm的使用,將會在這次作業之後進行更進一步的認識。


成果展示:


使用者可以使用w, a, s, d來進行旋轉,並且看到元智一館的任一角度。






心得:


這次作業的時間雖然很長,但是因為許多作業都卡在期中考之後,而且原本想利用程式碼來直接進行繪圖動作,但後來才發現,畫出來的東西並不是那麼美觀,實在是事半功倍。

後來才經由朋友的介紹,得知有3Ds Max這個軟體可以直接製作模型,但此時已經為時已晚了!我花 了很長一段時間在摸索3Ds Max這個軟體的使用,想畫出一個好模型真的是非常耗時間的。到了最後時間實在來不及讓我完成窗戶的部分,只能夠做出外觀而已。

交出作業之後,我也會繼續摸索如何使用3Ds Max來做出我理想中的模型,並且研究glm中分析obj的技巧,將來在建構更大量的obj時才能派上用場!



2012年3月16日 星期五

作業一 - 元智大學一館2D外觀圖繪製

主題介紹:元智大學一館之超難畫的圓柱體

程式設計與寫作方法:
主要就是大量地使用 glBegin(GL_POLYGON),偶爾使用到 glBegin(GL_TRIANGLES)、glBegin(GL_LINES),以及 glBegin(GL_POINTS)。


這是我的參考圖:












一開始是先建構出一個一館的外觀模型:










一開始是使用兩個 glBegin(GL_POLYGON)來做模型。我之前用過 glBegin(GL_QUAD_STRIP)來做,但是若去換顏色的話,會變成漸層的效果,這並不是我要的,所以我選擇了用 glBegin(GL_POLYGON)來做模型。
好的,其實後來發現,從這邊開始就已經很不像原圖了,雖然我很想做出逼真的一館,但是你們應該也知道,到最後其實牽一髮動全身呀!


因為到目前為止所學有限,估狗神爺上面的資料雖然不算少,但是資料大多非常古老了。所以其實我的寫法是非常暴力,可以說是一點一線慢慢描繪出來的。


成果展示:










這是我的結果。我使用的glOrtho是以1000為單位,因為用預設1的話,我眼睛會脫窗。


左右兩邊的窗戶其實用幾個for迴圈,在微調一下就可以達成。


左邊的樹我很偷懶,先設定好範圍,用rand()取座標值,再用GL_POINTS來隨機亂點畫,至於點的大小是使用了 glPointSize(size)來決定大小。樹幹部分,是用glBegin(GL_POLYGON)做出來的結果。


花最多時間的或許就是那個圓柱體了。我一直在思考怎樣去表達圓弧的樣子,但是沒有用到更厲害的函式好像就做不太出來。最後我只能用顏色的深淺來分辨,這樣做就不太逼真;(


心得與討論:


這是我第一次用OpenGl,感覺真的很陌生又新鮮,陌生的是對他的語法完全不熟,新鮮的是,能夠用文字寫出一幅圖畫真的很有成就感!


這次的2D讓我認識了OpenGl一些基本的使用,雖然只是基本,但已經花掉我不少頭腦了哈哈!我覺得最困難的部分是座標的判斷、比例、以及顏色的調整,我畫到後來都是用小畫家來找座標。


相信學到最後,再回頭來看今天的作業,應該會很簡單吧!畢竟學到後面已經是3D的動畫了!很期待接下來的課程!