吐槽完之后,文羽拿著PS游戲光盤進(jìn)了地下室,將這盤《龍珠斗士Z》扔進(jìn)了拆分者。
雖然動漫風(fēng)格的材質(zhì)球文羽是能研究出來的,可萬代僅僅給出了5天時間,想要自己研究出來需要花費太多的時間,況且接下來還有更多的技術(shù)問題需要去解決。
好在擁有拆分者,那種獨特的漫畫材質(zhì)球很快被拆分者拆解了出來,文羽將材質(zhì)球交給了溫斯頓,讓他根據(jù)原有的制作思路,重新再優(yōu)化一次。
3D美術(shù)機(jī)器人的工作已經(jīng)完成,文羽打開了模型進(jìn)行查看。
獨角獸模型算是比較中規(guī)中矩的傳統(tǒng)高達(dá)外形,但最特殊的在于獨角獸高達(dá)擁有特別的精神骨架。
總所周知,精神骨架被一般裝甲覆蓋,進(jìn)入戰(zhàn)斗會后會暴露在外,而顏色也根據(jù)機(jī)體不同而又有不同的區(qū)別。因此這個部分將擁有變形的動畫,以及顏色變化的特性。
骨骼技術(shù)是3D動畫中最廣泛使用的動畫技術(shù),將一套骨骼套入模型,使其與3D模型綁定,然后通過對骨骼點的控制來實現(xiàn)3D模型的運動。
3D美術(shù)機(jī)器人將精神骨架和外部裝甲做了一個簡單的骨骼變化作為子骨骼,而在上面再套入一層父級別骨架,作為獨角獸機(jī)體的主要動作骨骼。這便是傳統(tǒng)的復(fù)合動畫設(shè)定。
文羽絲毫沒有懷疑這些游戲工廠里的機(jī)器人,工作效率和質(zhì)量高的令人發(fā)指。
僅僅10多個小時的時間,居然連高達(dá)模型的骨骼都已經(jīng)綁定完成,動畫也都調(diào)節(jié)完成。這樣也就只需要將模型導(dǎo)入進(jìn)UE4虛幻引擎,就可以測試模型動作和原動畫的匹配度了。
文羽隨后又查看了溫斯頓的工作情況,特殊的動漫材質(zhì)球已經(jīng)寫好,溫斯頓為材質(zhì)球設(shè)置了5層貼圖,以此來達(dá)到動畫的特殊效果。
但“動態(tài)遮蓋技術(shù)”的程序卻依舊沒有完成。
這個看似簡單的程序,其實是極難實現(xiàn)的,畢竟場景中的模型,貼圖,燈光,特效等等,都會進(jìn)入到GPU進(jìn)行計算,想要動態(tài)的遮蓋,更是難上加難。
為此溫斯頓已經(jīng)開始在重新修改攝像機(jī)的基本工作原理。
UE4虛幻引擎提供了多種攝像機(jī),這也算是非常重要的一個元素。
通俗的講,這個攝像機(jī)就是玩家視角。攝像機(jī)所捕捉到的畫面將是最終游戲的畫面。
因此必須更改原有引擎中的默認(rèn)攝像機(jī)程序,才能實現(xiàn)最難的“動態(tài)遮蓋”技術(shù)。
溫斯頓不得不返回底層開始嘗試修改基層代碼,加入特殊的函數(shù),才能進(jìn)行特殊的實時動態(tài)計算,以此來打通攝像機(jī)和模型貼圖之間的動態(tài)數(shù)據(jù)計算。這樣反反復(fù)復(fù),耽誤了太多的時間。
這就好比現(xiàn)在的安卓陣營手機(jī)廠商,他們都擁有自己的一套系統(tǒng),就如小米的MIUI,華為的EMUI,魅族的FLYME。這些系統(tǒng)的底層都是安卓原生系統(tǒng),在這之上進(jìn)行修改,加強(qiáng),優(yōu)化,從而變成了自己獨特的,富有更多完善功能的自制安卓系統(tǒng)。
UE4虛幻引擎同樣如此,只要擁有優(yōu)秀的程序員,你就可以基于UE4引擎開發(fā)出更具獨特功能的程序。
美術(shù)方面沒有什么大問題,文羽簡單的測試了下獨角獸的骨骼動畫,又與動畫中的打斗分鏡頭反復(fù)進(jìn)行了對比。
不知不覺,一天的時間又過去了。
時間很快來到了第4天。
溫斯頓已經(jīng)完成第一版的動漫效果材質(zhì)球,只是動態(tài)遮蓋技術(shù)依舊沒有完成。
文羽查看了下程序的總體進(jìn)度,大概在80%左右,要知道在這幾天中,溫斯頓幾乎是超負(fù)荷工作,但依舊還有很多技術(shù)問題需要解決。
沒有辦法,文羽只得先將動漫材質(zhì)球應(yīng)用到完成好的獨角獸模型上。這樣他才能瀏覽最后的渲染效果。
期初的測試非常好,畫面和文羽自己預(yù)計的一樣,完完全全還原了動畫片中高達(dá)模型的質(zhì)感。而且這還是高清畫質(zhì),1080P模式下,畫面保持在了40-50幀。
可當(dāng)來到動畫的最后階段,獨角獸機(jī)體覺醒,一塊塊的外部裝甲被彈開,暴露出了獨角獸獨有的精神骨架,隨后精神骨架開始爆發(fā)出青色的光芒,配合上巨量的光影特效,這一幕可謂擁有不亞于科幻大片的震撼感。
雖然震撼,可文羽一點也高興不起來,畫面的FPS參數(shù)已經(jīng)掉到了15幀。。。隨著特效的不斷變化,畫面也從順滑變成了幻燈片!
文羽揉了揉太陽穴,無奈的嘆出了一口氣,看來這個動態(tài)遮蓋技術(shù)不完成,玩家也無法體驗到這極具震撼力的動畫。
晚上11點50,溫斯頓雖然是火力全開,可最關(guān)鍵的動態(tài)遮蓋依然無法實現(xiàn)。而問題的關(guān)鍵就出在了這個“動態(tài)”上面。
在程序里面,只要牽扯到動態(tài)問題,無疑都會讓程序員頭痛不已。
程序內(nèi)部,各條指令環(huán)環(huán)相扣,動態(tài)函數(shù)不計其數(shù),越多的使用動態(tài)函數(shù)無疑會加大CPU的運算負(fù)擔(dān)。
假如獨角獸的正面為1,那么為1的部分進(jìn)入GPU進(jìn)行運算。背面則為0,不進(jìn)行計算。
當(dāng)獨角模型轉(zhuǎn)動的時候,正面轉(zhuǎn)到了背面,那么要如何讓計算機(jī)來判定呢?
溫斯頓的做法是調(diào)用模型的旋轉(zhuǎn)坐標(biāo)函數(shù),根據(jù)坐標(biāo)的變化,來判斷模型的朝向,以此來判定那個部位應(yīng)該進(jìn)入GPU進(jìn)行計算。
那么獨角獸變形的時候呢?獨角獸作出各種戰(zhàn)斗動作的時候呢?
這個時候就需要調(diào)動更多的坐標(biāo),方向函數(shù),乃至于縮放函數(shù)。
如此一來,CPU的運算負(fù)荷極具增加。
凌晨3點,溫斯頓完成了動態(tài)遮蓋技術(shù),文羽在測試了效果以后,也是無奈的搖了搖頭。
在進(jìn)入最后階段,F(xiàn)PS只能維持在23-26幀左右,雖然有了很大的提升,可依然無法滿足30幀的最低要求。畫面一旦低于30幀,給玩家造成的傷害可是致命的。
文羽抓著頭皮,在地下室反復(fù)的踱步,時間不停的在流逝。這時外面響起了雞鳴聲。
文羽打開UE4引擎后臺,開始查看硬件工作數(shù)據(jù)信息。一大串的數(shù)據(jù)像是刷屏一般的快速掠過屏幕。
按了下暫停,文羽拿出眼藥水滴了幾滴,眨巴了眼見,然后重新按下開始,繼續(xù)快速查看。
文羽知道目前“動態(tài)遮蓋”其實已經(jīng)完成,他確實可以減少當(dāng)前場景40-45%GPU占用率,而且程序起到了該有的作用,將一開始的15幀提升到了幾乎25幀。
其實問題出在“動態(tài)遮蓋”程序自己的身上,由于大量的調(diào)用各種動態(tài)函數(shù),因此這個程序在運行的時候,降低了GPU的負(fù)載,卻增加了CPU的負(fù)擔(dān),因此這個卡頓是來自CPU的。