Projects for CG Class

CG Class Project 1: 2D cartoon figure

Posted in _ by bizkit4cg on October 1, 2008

  • 實作:
  1. 使用的語言為 python 搭配 PyOpenGL 模組,語法與 C/C++ 的 OpenGL library 完全相同。
  2. 以線段逼近橢圓形與圓形,並寫成自己的 function (oval, circle)。function 傳入長短半徑、逼近次數、開始結束角度,回傳一個包含數個 2D 座標的陣列。嘴巴部份也是用這個 function 畫弧線。
  3. 有框線的物件用 GL_LINE_LOOP 與 GL_POLYGON 搭配而成。 (function linedPoly)
  4. 耳朵黃色部份使用自己寫的 function 做平面懸轉。(function D2rotateArray)
  5. 使用 glTranslatef 在不同層面繪圖。
  6. 使用 glRotatef 搭配 glutKeyboardFunc ,使用鍵盤(ad, ws, qe)控制 X, Y, Z 三個方向的旋轉。
  • 心得:
  1. 一開始把計算橢圓圖形的功能與繪圖功能寫在一起,都放在 display callback function 裡。寫玩旋轉之後發現程式反應速度很慢。經過分析後發現時間都花費在計算功能上。所以改將計算功能寫在 myInit() 中,只計算一次,並且把計算結果存在數個陣列中。這樣在 display callback function 不斷的 loop 時,只需要去記憶體中取出算好的座標點,不需要不斷的重覆運算。
  2. 框線是用粗線寬的 GL_LINE_LOOP 做的,效果沒有很好,會看出節點。如果也改成 GL_POLYGON 可能會比較好看。
  • Code:
  1. Main Program: https://bizkit4cg.wordpress.com/project1project1py/
  2. My Library: https://bizkit4cg.wordpress.com/project1libgraphicspy/

 

後來又用現有的架構與 library 寫了個時鐘,比寫卡通人物時容易很多,只改了幾十行 code 就完成了。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: