2011年6月16日星期四

CG作業6 自定主題3D動畫程式

1,主題名稱:

以元智大學3D校園場景為背景的一個小game.
主要意思是: 一個小機器人被困在元智大學的一個地方,你要拯救他, 但是拯救他需要在找到場景中的3個寶物才可以. 這個3個寶物的位置random產生, 你需要在3分鐘內全部拿到, 主要尋找的時候不能碰到bomb, 不讓就會死亡...
在行走的過程中, 有下角落會有一個小地圖, 大致表明你所在之位置與所需找物品之位置.
場景建立與skybox之中, skybox使用貼圖.
元智各個建築採用load obj model的方式呈現.
你所控制的機器人有幾個model組成, 行走時候不斷切換, 以達到走路時的動作效果.

2,過程與展示:

圖片:
開始game時的提示說明.
begin your game, right corner of the screen is the small map, red point is your position, green position is the position of treasures.
Now your friend say to you how to save him, that is find the treasures.
Then you begin your treasures finding. 從此踏上了尋寶之路...
See that , that is one. you are happy, and you are going to pick it.



-----由於錄影軟體限制, 錄製太長就會出現錯誤. 所以下面是分段的錄影.

first you find your friend..

find the treasures....


you can see you friend is rescued after you have found all the treasures...


-------------

3,心得與討論:
這個program的寫作費了不少功夫, 第一個問題, 文字如何顯示的?
這裡用到了glWindowPos, 本來這個函數子OpenGL1.4之後都支持的, 但是在windows系統上卻一直不能用, 不過好在glWindowPos並不複雜, 我把它放到了我的程式中的glwindow.h裡面, 然後在需要的地方就inclde "glwindowpos.h"就可以使用了.
Android機器人行走的問題. 此處引用3個不同的Android robot model, 用以表示不同的動作, 放到3個displaylist裡面, 向前或後時循環調用, 就可以出來這樣的效果了. 雖不精緻, 然大抵還是可以的.
至於skybox的問題, 自己已經比較熟悉了, 於是並不感到困難.
視角的變化亦是前面已經做過了的.
texture mapping 主要在skybox上面, model裡面的texture由於是jpg格式, 需要一些修改, 暫時還沒有做, 故看上去有的有一些顏色, 其實是material+lighting的緣故.
-------------

keyboard function:
w: look up
s: look down
a: turn left
d: trun right
UP: move forward
DOWN: move back
LEFT: move left
RIGHT: move right
-------------

2011年5月13日星期五

作業4元智3D地圖



   (a)主題介紹

撰寫一個OpenGL程式,建立元智大學的3D地圖,地圖場景空間中至少必須包括地面與元智大學的主要建築物1-7(你可以不同的立體物件如圓柱體、立方體等來代表各棟建築物)。這個程式必需讓使用者利用上,,,右鍵等鍵盤按鍵在所建立的虛擬元智大學空間場景中悠遊行走。)

(2)過程與成果展示


建築都是用cube, 偶爾譬如2館, 用一個quadric來畫, 之後貼圖, 大約如此,  skybox是一個巨大的cube, 所以物件都在其中----
5-building
-------
2-building
------------
6-building


video:


--key function-----
'w' look up
's' look down
'a' look left
'd' look right
left key ---- move left
right    ---- move right
up       ---- move forward
down     ---- move back

'u' --viewer rise
'j' --viewer down
 'Esc'-- quit fullscreen 
---mosue motion function----
click to left side of the screen --- look left , same as keyfunc 'a'
click to  right side of the screen ---look right, same as keyfunc 'd'

(2)心得與討論。
加了SkyBox.
每一棟建築的位置放到一個displayList裡面, 因為每棟建築都有貼圖, 如果不放到displayList裡面的話會很慢.
這次作業的重點因該是遊走, 然後向各個方向看. 就是練習使用viewing, 作業裡面使用gluperspecive 控制投影方式為透視投影, 使用gluLookAt來實現左右看, 上下看, 向前走, 向後走的目的. 
加了Lighting及TextureMapping, 因為自己在3D課程上已經學了這些, 所以就加上去了.2
http://yzucs317s971462.blogspot.com        ---My 3D Animation homework page







太陽系(the solar system)

撰寫一個OpenGL程式,模擬立體太陽系(the solar system)中行星與衛星的自轉與公轉等運動模型。

運行結果:




Video:




心得:
八大行星直接的距離並沒有按照實際的比例去寫, 因為那樣後面幾個行星, 天王星, 海外星距離太遠, 軌道太大, 如果進着看, 會看不到後面幾顆, 如果遠着看,則會顯得近處幾個很小很小. 同樣的問題是週期, 後面幾個行星週期很長, 比如天王星公轉週期是84年, 如果按比例寫的話, 就如同靜止一般. 還有大小的問題, 也同樣.
為了解決上述問題. 所以, 行星的大小, 公轉週期在這裡並不完全等比例與實際.
使用了 Lighting, Light位與太陽的位置.
使用gluPerspective透視投影, 使用gluLookAt設定相機位置. 上下鍵可旋轉整個畫面以便從不同角度觀看.


2011年3月25日星期五

作業 1 元智一景 (元智夜景)

(a)主題介紹

極低無限Mobius Gate




這個是位於操場邊的一個創意建築. 名字叫做"極低無限", Mobius Gate. 它以莫比烏斯環為設計概念, 并以四面清水模为建材打造出新的入口,命名为“极低无限Mobius Gate”,希望以理工起家的元智大学,能够与艺术感性交织,呈现出不同以往的校园氛围。



(b)過程與結果展示

最終結果圖案:



1.先畫出天空和大地:

如圖:
2.畫出:
中間的建築體:




3.畫出下面台基:


4.video


(c)心得討論
圖學第一次作業, 但是卻是自己第二次用OpenGL寫作業. 第一次還是前些天上次寫3D作業, 因為同時修了3D 和圖學兩門課, 這次作業畫的圖也並非完全是平面的, 本來畫的是一個平面的. 後來還是覺得不夠好, 就最終還是用了自己剛寫的3D的模型, 這樣看起來也更加逼真一些.
畫這個圖比較難的地方是1. 畫圓, 看到的地面是一個圓的一部分, 其實畫的是一個整體的圓, 只是比較大而已.
2.畫圓柱, 圓柱可以自己寫循環去畫, 也可以用二次曲線的方法去畫, 這個圖裡面都有用到. 中間那個完整的圓柱上用二次曲面的方面畫出的. 先定義一個GLUquadricObj, 用二次曲線的畫法也是自己通過Google查的. 還有就是另外一種方法, 通過畫出兩個平行的圓, 在連接兩個圓, 就能得到一個圓柱, 當然在畫的時候是先計算出頂點, 放倒一個數組中, 然後才畫出來, 這樣效率比一個個glVertex*畫要效率高一些.
最後一個步驟是畫台基. 畫台基的目將兩邊的圓柱體的下面"埋入"台基中. 這樣才比較符合原來的圖畫.
當然, 自己在畫這個圖的時候, 雖然效果基本上出來了. 但是對於一些轉換, rotate, translate, 還有就是視角, view還不算特別清楚. 但是, 相信隨著學習的深入和自己寫代碼的的增多. 也會對這些function有更深的了解.