學(xué)習(xí)GL的一些總結(jié)
在這個(gè)高速發(fā)展的社會(huì),很多人都想著掌握各種技能,對(duì)內(nèi)提升自己的內(nèi)容,自己的價(jià)值,對(duì)外提升自己的salary,就業(yè)機(jī)會(huì)
學(xué)習(xí),它應(yīng)該是一個(gè)學(xué)而時(shí)習(xí)之的過程,是一個(gè)提出目標(biāo),分析目標(biāo),行動(dòng),調(diào)整,之后達(dá)到目標(biāo)的過程。
目標(biāo)
回想08~09年,當(dāng)時(shí)的目標(biāo)是想用GL做畢業(yè)設(shè)計(jì),實(shí)現(xiàn)場(chǎng)景的一個(gè)簡(jiǎn)單3D場(chǎng)景+人物的動(dòng)畫還有簡(jiǎn)單的物理碰撞處理,物理碰撞部分是通過Lua進(jìn)行配置。
分析
- 第一:需要學(xué)習(xí)相應(yīng)的GL基礎(chǔ)知識(shí)
當(dāng)時(shí)國(guó)內(nèi)的資料非常非常少,那么最快捷的方式還是網(wǎng)絡(luò),百度就別想了,接近與0資源,那么只能依賴于google了,首先是中文的查詢,那么檢索相關(guān)的知識(shí)就需要進(jìn)行考慮,比如OpenGL, OpenGL 教程, OpenGL 例子,不過這個(gè)還是很少,因?yàn)間oogle上的資源英文還是最多的,那么進(jìn)行的是Opengl demo, opengl tutorial, opengl demo等.
- 第二:需要學(xué)習(xí)相應(yīng)的搭建場(chǎng)景的軟件
當(dāng)時(shí)很多都是max的資料,而且國(guó)內(nèi)仙劍系列也是用上了3D的基本不過在pc上直接使用的是dx的技術(shù),而且dx有相應(yīng)的x格式文件模型處理,GL只是統(tǒng)一的接口,沒有對(duì)應(yīng)的模型格式動(dòng)畫格式,這就一大難題了。
- 第三:人物動(dòng)畫的處理,既然dx的x格式不能用,那么就需要考慮換一種方式去處理才行。
- 第四:物理碰撞
很多情況啥叫物理碰撞呢?當(dāng)時(shí)連概念都不是很清楚,基本上是不能穿透過去吧。資料從哪里來?還是網(wǎng)絡(luò)上。
行動(dòng)
- GL基礎(chǔ)知識(shí)
好不容易在google上面找到了關(guān)于GL的教程最早的是NeHe的,這個(gè)就是我GL的啟蒙了,用到glut相關(guān)的庫,開始了我的學(xué)習(xí)之旅,而但是一大難點(diǎn)也是我的一大痛是英語,超級(jí)爛的英語,我只能依靠于英語詞典+源代碼編譯調(diào)試,首先是自己跟著教程一遍點(diǎn)著翻譯詞典,一遍一行一行的寫代碼,理解,之后編譯,經(jīng)常會(huì)出現(xiàn)編譯不過當(dāng)時(shí)的vc6.0也是這樣熟悉起來,學(xué)校里面什么是斷點(diǎn),什么是步進(jìn),概念也就一個(gè)說頭,到自己真正操作,里面就是霧水,得一邊學(xué)一邊里面,c++應(yīng)該很多人都會(huì)頭痛,內(nèi)存沒搞好,崩掉了,數(shù)據(jù)莫名其妙不對(duì)了啊,指針的指針啊,這些坑,一次一次的把我拖進(jìn)去,又爬出來,之后總算是把GL的基礎(chǔ)算是囫圇吞棗過了一遍,但是設(shè)計(jì)到圖形學(xué)這部分也是很頭大了,3D,這個(gè)xyz空間的變換,也是一遍的火海,烤得人焦頭爛額,什么法線貼圖,材質(zhì),紋理,shader也是各種頭大的名詞,和內(nèi)容往上冒,熬過了這個(gè)階段也只是一個(gè)小開始,接下來也不輕松。
- 模型制作部分
這一塊也是一個(gè)大頭,當(dāng)時(shí)能想到的場(chǎng)景用obj模型,因?yàn)榻Y(jié)構(gòu)簡(jiǎn)單,NeHe教程里面有相應(yīng)的讀取處理,算是抄過來處理了,不過有個(gè)問題就是,教程里面的沒有處理負(fù)數(shù)的索引,也是3dmax在導(dǎo)出obj的時(shí)候的一個(gè)問題,可能是導(dǎo)出自己沒設(shè)置好,那么問題就好了,做場(chǎng)景怎么做呢?又得從max開始學(xué)起,建模型,貼圖一點(diǎn)一點(diǎn)學(xué),這一塊也是一知半解的做了。
- 人物和動(dòng)畫
這一塊當(dāng)時(shí)有玩到《仙劍奇?zhèn)b傳四》特別的神往,最后人物直接用了主角的模型進(jìn)行的修改,網(wǎng)上有找到,但是沒有骨骼動(dòng)畫,這里實(shí)在傷了,在google上翻了,各種各樣可以在GL上播放骨骼動(dòng)畫的庫,差不多吧google上都翻爛了,也沒找到合適的,最后的最后,找到了《半條命》可以使用的庫,總算調(diào)試可以跑起來,下來就是如果綁定骨骼,如何做動(dòng)畫了,擺動(dòng)腳擺動(dòng)手臂等等,這里總算找到milkshap3D這個(gè)3d軟件制作骨骼和動(dòng)畫, 人物也就才懂了起來。
-物理部分
當(dāng)時(shí)已經(jīng)沒太多的做法,網(wǎng)絡(luò)上找到了相應(yīng)的思路,做的都是場(chǎng)景中簡(jiǎn)單的模型處理,正方體,長(zhǎng)方體,圓柱等等進(jìn)行的,也就是說,Lua配置上都是配置位置,相應(yīng)的這幾種簡(jiǎn)單的碰撞類型,角色使用的是圓柱(后面才知道,很多都是用的膠囊,而且有相應(yīng)的物理引擎做支持)我就直接配置和對(duì)位置范圍等等進(jìn)行的判斷處理的。
而對(duì)于這技術(shù)國(guó)內(nèi)的資料非常少,雖然已經(jīng)有不少游戲使用,那么學(xué)習(xí)的方式網(wǎng)絡(luò)是最快和直接的,當(dāng)時(shí)找到的GL基礎(chǔ)是NeHe的教程
調(diào)整
當(dāng)時(shí)涉及到了在制作過程的大量的調(diào)整,因?yàn)樘嗟奈粗?,花費(fèi)大量的時(shí)間,基本上大四都是在學(xué)習(xí)和制作畢業(yè)設(shè)計(jì)。
- 首先是是對(duì)工具vc6.0的使用,以前的課程設(shè)計(jì)都做的比較簡(jiǎn)單,更深入的時(shí)候根本沒太對(duì),這里需要大量的調(diào)試,認(rèn)識(shí)新的東西,不如指針,比如內(nèi)存調(diào)試,比如斷點(diǎn)的技巧,比如查看變量,等等。
- 再次是3dmax的學(xué)習(xí)到milkshap3d的學(xué)習(xí)這個(gè)是找了大量的資料人物動(dòng)畫的格式對(duì)于當(dāng)時(shí)的我沒有處理好的一個(gè)問題,只能依靠庫來處理,當(dāng)時(shí)也有開始了解ogre不過,他龐大的源代碼,我也只是學(xué)了他例子而已。
- 物理部分了解也沒那么多,后來在開始去了解了bullet這個(gè)物理引擎。
最后畢業(yè)設(shè)計(jì)算是勉強(qiáng)做出來了
一路做過來基本也就是:設(shè)定目標(biāo),分析,才分成可執(zhí)行目標(biāo),如果不知道目標(biāo)是否足夠小,嘗試,之后進(jìn)一步了解,如果這時(shí)知道了需要進(jìn)行拆分,那么在進(jìn)行相應(yīng)的才分,如果最后完成一個(gè)一個(gè)小目標(biāo),最后大目標(biāo)就這樣完成了,感覺好像拼圖一樣,N塊拼圖,每一塊都拼對(duì)了,大圖就出來了。
- 期間的收獲
1 搜索的重要性,關(guān)鍵字非常重要,一個(gè)合理范圍的關(guān)鍵字,直接里面定位要搜索的內(nèi)容。
2 動(dòng)手能力
也就是行動(dòng)力,GL基礎(chǔ)的學(xué)習(xí),看的和做根本是兩碼事,vc6.0這個(gè)的學(xué)習(xí)這樣工具的學(xué)習(xí),要靠大量的實(shí)踐,思考+查閱資料來掌握。
3 英語的重要性
這個(gè)坑我一直沒填好,國(guó)內(nèi)的技術(shù)資料都是很貧乏的,還有目前的百度,基本上已經(jīng)搜索不到太深入的東西了,而且在深入一些的基本上都是英文,而且理解需要閱讀+動(dòng)手才比較好掌握。
4 我更深入的了解了3D這個(gè)東東,學(xué)習(xí)了3dmax軟件等,當(dāng)時(shí)的學(xué)習(xí),培養(yǎng)了我對(duì)3D的一個(gè)根基,就像種子一樣,后面對(duì)3D的學(xué)習(xí),基本上就在這基礎(chǔ)上進(jìn)行深化,擴(kuò)展了,比如后面的maya,blender,或者上層的引擎都基本在這個(gè)的基礎(chǔ)上進(jìn)行架構(gòu),里面的貓膩,基本上在學(xué)習(xí)了CEGUI+ogre后整體后了大概的了解,如此一步一步的形成了這一塊的一個(gè)大觀。
至此
對(duì)很多的東西的了解是否也類似這樣,像種子一樣發(fā)芽生長(zhǎng)開花結(jié)果,如上解決的問題,分解,分解,在分解直到可以一下解決這個(gè)小問題,或者在探索中在進(jìn)行分解,當(dāng)解決所有小問題之后大問題也就解決。期間的特點(diǎn):知+行 循環(huán)往復(fù),是否很多東西都可以這樣呢?