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