2012年4月29日 星期日

作業二 元智一館

主題介紹
資工一館 樂高版
這次的作業二跟作業一畫法不太不ㄧ樣,因為要畫出一館的每個面,所以我使用的方法有點像在堆積木、玩樂高的方式,慢慢的堆起來,才會每面都出現,而且有立體3D的感覺,因此我把這次作業定的名字就是,資工一館 樂高版。

設計概念
由於這次作業是要畫出整個一館的3D模型,因此每個面都需要畫出來,所以我跟同學借了相機拍了一館每個面的照片,再一一仔細描繪。

操作說明
可以對著畫面按下滑鼠右鍵,會跑出選擇操作的選單
1.      選擇rotate,可以使用鍵盤上下左右鍵,對模型進行旋轉,按上下鍵是對y軸作旋轉,左右鍵是對x軸作旋轉。
2.      選擇move,可以使用鍵盤上下左右鍵,對模型進行上下左右的移動。
3.      不管選擇哪個模式,按鍵盤的A(a)鍵可以對模型進行放大,按鍵盤的D(d)
可以對模型縮小。
4.      選擇exit,就是直接關閉程式。

執行成果呈現
影片 (因為動太快,錄起來會失焦,所以我很緩慢的做旋轉移動和放大,請見諒)
而最後是想要呈現出,可以透過將模型移動和放大,讓使用者可以看清楚各個想看見的角度

1. 使用平行投影的效果



2. 使用Frustum投影的效果




正面

右面

背面
左面

程式設計
除了作業一寫的三個部分以外,作業二我多了以下幾個方法。
1.      使用 z-buffer algorithm
OpenGL有一個內建的z-buffer演算法,使用之後可以自動測試景深,如果被遮住的地方就完全不會畫出來,如此一來只要把Z軸位置設定好,就可以不用像作業ㄧ每次畫什麼物件還要考慮誰要先畫的問題。

2.      使用Reshape call back function
寫作業一的時候因為還沒學過這個function的用途,所以發現把視窗放大縮小後,整個影像的比例都亂掉了,因此這次寫了reshape call back function,只要視窗一改變,就會自動調整viewportviewing volume,讓整個影像還是跟著視窗的比例作縮放。

3.      TransformationKeyboard call back function
為了能讓使用者看到整個3D模型的每個面,我使用剛學到的transformation方法,讓整個物體可以搭配keyboard call back function的輸入,作rotate(旋轉)translate(移動)scale(放大縮小)

4.      Menu function
為了可以調整操作模式,使用 menu function 搭配滑鼠右鍵作呼叫使用。

心得與討論
這次的作業真的比作業一還要麻煩太多了! 光是一根柱子就要畫六個面,當然有些被檔住可以少畫幾個面。為了增加寫作的效率,我幾乎都把所有的座標位置寫在陣列裡面,另外再寫好六個面的Code,之後要畫的時候就複製一下把變數改一下就畫好一根柱子了,而寫在陣列裡面的好處是如果想要修改座標,只要簡單改一下陣列裡面的內容,其他code都不用動到,很好修改。

而描繪的過程,就有點像是小時候玩樂高一樣,先把整個主架構(大矩形)畫出來後,再慢慢的一根柱子,一塊地板的疊上去,必要時後還會再修改原本的架構矩形,有點像是挖洞一樣,挖好之後再繼續把想要的東西疊上去。

至於要選擇哪個投影的方式,是讓我最後最困擾的地方,我一開始都是平行投影的方法來寫,直到這禮拜老師講述 Frustum的方法,呈現出比較像人眼看到的效果,所以我也嘗試了一下發現真的看起來比較像,不過我最後上傳的作業還是以一開始的平行投影為主。

雖然整個寫作業的過程很複雜,花了很多時間,但是其實還蠻好玩的,當一根一根柱子疊出來,整個影像越來越像的時候,超級有成就感的,不過因為這次大部份的時間都花在如何作出逼真立體的模型,所以花在整個顏色調配上的時間就大為減少了,因此就單個面來講,感覺作業ㄧ看起來還是比較真實一點,這是我覺得這次比較可惜的地方。

 

11 則留言:

  1. 恭喜你,跨領域了,跨到了建築學系。
    "逼真立體的模型",……………………………………

    回覆刪除
  2. 這樣弄下去,當心吧。我覺得搞模型美觀度逼真,已經沒必要了。
    只怕,你們學第二遍計算機圖形學的時候,會對現在的圖學很生氣。
    看看《3D計算機圖形學》這本書吧,這本書是蔡o庭老師的課的教材。
    不要再弄美觀了,考試不考配色和建模,那是industry design學生考核的內容。

    回覆刪除
    回覆
    1. 如果不弄美觀的話要弄什麼阿 0.0?
      這作業不就是要作一個3D的模型嗎..
      所以不是才要弄得很3D -.-?

      刪除
  3. 你們都被蘇O平和王o贊騙了。作業要求重點在從各個角度看模型。
    我被欺負了半年。很3D?計算機圖形學研究的是從3D到2D如何顯示在display上,計算機視覺才是從2D圖像建模成3D模型,這是王任贊老師說的,時間是2011年7月16日(我從交大多媒體研究所回來的後一天)。
    他們,就是欺負你們不知道業內的職業分工。你玩過蒼之濤嗎,正版附送第N版企劃書,裏面提到了職業分工,包含引擎描述,是劇本組的毛獸叔叔寫的。2004年的game,經典。
    總的來說,大家,除了個別人(3350,3304,3331),都在做計算機視覺的工作,甚至,就是美工組的建模師的工作。你如果真的不相信你被騙了,找蔡o庭老師,或者是去國立交通大學資工一趟,觀摩下他們的CG在學些什么。
    美觀,是美術總監(或者原畫總監,作畫監督之類的boss)說了算,程式員不可能插足這方面。美術總監,建模師,特效師,動作指導,原畫師,專門打光的,寫分鏡頭的……這些都不是程式員,程式員寫底層代碼,比如,1個cube如何顯示在display上;圖形工作站渲染過熱后爆炸了,該怎麼處理。
    有人要我不要再提起去年的兩場悲劇。好啊,那228,你忘了嗎?去年992圖學掛在美麗貼圖上,992 3D掛在3D建模上。拿美麗貼圖欺負學生的助教畢業了,拿3D建模欺負學生的助教就是蘇xx。現在這個樣,不就是繼承了我們的悲劇嗎?6月15日眼淚還不夠多,要今年6月最後1次課大家再一起無奈地拿著包哭著走人?王老師和助教之間的改程式要求不一樣,不過王老師的要求可以說是名存實亡了,不便繼續說下去……所以,助教看美觀,要求和32歲的職業美工的一樣高,不足為奇。
    君要臣死(被去搞美觀度),臣不得不死(大家一起被嗆)。這是你的FATE,你只能認了,除非去教務處。
    喜歡計算機圖形學的話,你肯定要和我一樣,學第二遍和第三遍。這不是計圖。

    回覆刪除
  4. 占個地,謝謝:)

    “由於十數名同學在作業2沒有使用此二種buffer, 導致結果看起來怪異或不如預期, 於附件中提示如何使用之(見.ppt檔) ”
    蘇O平先生:
    1.你的內容基本上是在抄同學的部落格和ppt,部落格上,早有了depth問題的解答,既然沒人看,沒人相互學習z-buffer與depth,占分數50%的blogger報告,意義何在?

    http://yzu1002cs314s971555.blogspot.com/,
    “上網找了解決的方法glEnable(GL_DEPTH_TEST);來解決物體間的相互遮蔽問題,解決完遮蔽後,遇到的問題就是,所描繪出的窗戶和門都會變得看不是很清楚,為了讓窗戶和門能夠完全的呈現在眼前,所以,將座標調整比牆面多出了一點點就可以解決了。”

    http://yzu1002cs314s981235.blogspot.com/
    “c)遇到的困難
    1.一開始當我完成長方體時,前面那面都會被後面的那一面吃掉,導致永遠只出現後面那一面,後來蒐集了很多資料發現,只要增加glEnable(GL_DEPTH_TEST)就能解決這次問題。
    2.接下來就是遇到圖形一直亂跳的窘境,後來把glFlush()整行註解掉後,畫面就順利的執行了。”

    http://yzu1002cs314s981452.blogspot.com/ 很好!
    “創造物件時,會有後景蓋前景的狀況,也就是深度depth沒設定好得問題。
    這個問題讓我不斷的翻閱老師給的z buffer參考範例
    結果問題超級好解決,只要在繪圖前,加入函式glEnable(GL_DEPTH_TEST);
    便會自動計算深度,避免這種覆蓋狀況。
    剩下的,就是不斷地裝飾主體,但這部份真的很多,畫得有點不耐煩,只好簡單裝飾就給他過去嚕~~~”

    http://yzu1002cs314s981505.blogspot.com/
    “心得與討論
    此次作業在3D建模上, 因為使用長方體所以較簡單, 而時間花最久的是在解決透明化 , 要使用
    glEnable( GL_DEPTH_TEST ) ,GLUT_DOUBLE , glutSwapBuffers() 這三個函式,
    雖然解決了透明化, 但是我又碰到會閃爍的狀況, 將窗戶平面拉出來後解決閃爍, 卻又造成整個一館左右相反, 不知道是DEPTH的問題還是什麼 至今我還找不到解答”

    http://yzu1002cs314s981529.blogspot.com/ 他說了閃爍,即百葉窗效應
    提到depth的人很多,說明是重點知識,學生提到了PPT。我當年也是看PPT過來的。

    http://yzu1002cs314s981547.blogspot.com/
    “我現在才明白老師要大家發布blog文章的用意了,在blog貼出之後幾天,有朋友指導了簡單的小撇步,巧妙的解決了閃爍的問題,其實這個方法也相當單純,就是繪圖的時候不要畫在同一個平面上,所以窗戶跟牆面都有0.01的間距XD,這樣圖片就不會一直閃爍了!!!真的是很偷懶的小撇步XD((感謝981535 同學”
    熱心好同學,981535,~\(≧▽≦)/~

    http://yzu1002cs314s983306.blogspot.com/ 他也說了depth

    欣裕的手繪很漂亮

    可見,王老師上課時候說過,不能將兩個物件畫在一個面上,會有井深判斷問題,是上課多次強調的z buffer與depth。我在寒假,就給出了0.5 depth檢測的思路,即BSP樹算法,但目前沒有從底層修改過判斷距離。兩層貼圖時,百葉窗(dazzling)bug更明顯。兩個物件(比如兩個面)不僅不能畫在一個面上,靠的太近,將來也會看到百葉窗效應。所以,畫交錯物件前,請仔細想想,或者,先好好K書準備其他科目去吧。

    2.十數名同學,請你列出人員清單,我看不出來有10左右的人,很少數人。或者,請解釋,去年3D作業提示課件中,總人數爲什麽少了30個人。系辦給出的數字是72人,最大人數70人,那麼,第一次作業只有40人,缺的30個人呢?或者,最終統計36人,王家O停修,那麼37人,總人數40人,多出來的三個人是誰呢?

    3.怪異,不如預期,從側面看出,你的改程式方式是看美術不看代碼複雜度。看起來怪異,也許是picasso風情的程式。蘇O平,你不懂藝術。(我也不懂藝術,萬物皆藝術)

    4.我從971401學長的代碼中,看到他對openGL API的基礎模板架構的掌握程度是一塌糊塗。這可能是很多同學的共同問題,大量時間搞美術去了,忽視了openGL入門程式的架構。但考試要考的openGL入門程式的架構,算法編程題,大約20分

    5.我很中意交大。3D和CG是我的恨。要什麽,寫信給怪物學妹981454吧,沒關係,改代碼,微積分,化妝水,好吃好喝的都可以。

    “在1201A使用時, 疑因glut32.dll版本不同導致無法開啟.exe執行檔, 故放入助教的glut32.dll版本, 如還是不能開啟再聯絡助教”

    對不起,爲什麽我在1201A,從來沒有這樣的情況,包括換別人的PC。所以,請你給出具體是哪個PC不能順利demo,并將相關訊息送到系辦,系辦會對PC 的dll庫update的。老師PC背後的PC,我經常用的,沒有問題,我沒裝過dll。蘇o平先生,你可以在那個PC上DEMO。你真的去過1201A嗎?關於聯絡助教,我一直在等蘇先生助教的關於GLM思路的回信呢,我等了10.4個月了。

    回覆刪除
  5. 我只覺得10.4個月未免也太精準了吧 ˊ_>ˋ

    回覆刪除
  6. come,給你看看我的信。

    2011年6月21日晚上,就是知道元智大學媒體安全實驗室的某些不為人知的2010年8月的事情之後,寫的信
    Akechi Murasakine(Gmail)(名字是假的,爲了保護姓名權利)
    11-6-21
    发送至 windwalker5678
    would it be a really easy job to load mixture texture obj in changing the glm?

    助教回信:
    蘇XY s1996007399@mail.yzh.edx.tw
    11-6-22
    It will be easier to write/find an obj parser, then use its data structure to combine with glut.
    我的回信:
    11-6-22
    发送至 蘇XY
    so would you dare to do it?I did a cheating teacher thing , but it cannot cheat myself.
    我說的是當時改了GLM作者的BUG,但畢竟核心不是我的,我把它交給王老師,顯然會被判為抄襲。最後沒給老師。

    不為人知的事,就是我見到的溫馨的1411b,是虛假的,完全是由於我的特殊校際身份偽裝出來的樣子。
    聽完這些事情,我心很痛。我努力,但是間接坑掉了我的學長姐們。因為,他們見到的,是完全另外一個樣子……

    2011年6月22日,12-1.54=10.46,3位有效數字,則是10.4個月。媒體的安全,隱藏在數字裡。

    回覆刪除
  7. 解讀下HW3的題目:
    1002 CG Assignment #3
    Deadline May 21 2012
    Assignment #3 幾何轉換與看視
    撰寫一個OpenGL程式,讓使用者可以在校園不同的位置與角度視野遊走觀看(重點),建model不重要,順便建置下元智校園3D空間場景啦(次要)。
    場景如建築物最好先用簡單的幾何物件(如立方體,圓柱體等)替代(貼圖不美麗沒關係),走道的設計方面先不設限(有碰撞偵測能力當然最好,因為資料結構要大改了)。助教是否按照老師要求改,還是給隨機分,就說不准了。

    回覆刪除
  8. http://www.gamelook.com.cn/2011/06/42233
    找到一份美術,策劃,程式員的分工講解。看看吧,有個數。我沒有胡說,別在求職時候抓包……
    碰撞偵測,不簡單……nehe上有。

    回覆刪除