3D AR特效如何在相機(jī)中無縫應(yīng)用
編輯導(dǎo)語:設(shè)計沒有思路,3D AR特效不會應(yīng)用在相機(jī)中?作者分享了自己將3D AR特效應(yīng)用在相機(jī)中的做法,我們一起來看下。
為迎接牛年春節(jié),給大家?guī)硇履甑淖8:蜌g樂,我們圍繞關(guān)鍵詞“?!痹O(shè)計了一系列針對QQ相機(jī)業(yè)務(wù)相關(guān)的玩法濾鏡,包括“牛轉(zhuǎn)乾坤”、“牛氣沖天”、“牛勢已到”、“招財童子吐福字”等等,以創(chuàng)新的互動能力為QQ用戶提供新奇的玩法體驗(yàn)和情感表達(dá)。
其中:
- “牛轉(zhuǎn)乾坤”以3D變臉技術(shù)為基礎(chǔ),讓用戶能從普通人臉變成牛臉,酷炫的風(fēng)格配上節(jié)奏感極強(qiáng)的音樂,給用戶帶來新奇感。
- “牛氣沖天”則是以互動游戲的形式,讓玩家在游戲中通過收集各種氛圍元素不斷積攢牛氣,獲得更高的牛氣值和更厲害的稱號,享受不斷刷分帶來的樂趣。
- “牛勢已到”則嘗試以臉部為驅(qū)動,配合臉部表情驅(qū)動模型產(chǎn)生變化以及左右搖擺帶來的物理隨動效果,配合一些春節(jié)氛圍元素,趣味十足。
- “招財童子吐祝?!眲t結(jié)合了中國傳統(tǒng)民俗,以拜年送祝福的形式,福氣又添財?shù)鹊取?/li>
項目中攻克了不少問題難點(diǎn),篇幅有限,本文僅以“牛勢已到”的設(shè)計制作過程,和大家分享下設(shè)計背后的故事。拋磚引玉,希望和大家學(xué)習(xí)交流。
一、問題攻堅,剝開盲區(qū)
對我們設(shè)計團(tuán)隊來說,這次的玩法設(shè)計中涉及到很多以前較少接觸的技術(shù)領(lǐng)域,比如將3DMM、Blendshape、AR、多段3D動畫合并與觸發(fā),面部識別等多能力復(fù)合應(yīng)用的體驗(yàn)把握、效果和性能控制,這對我們設(shè)計團(tuán)隊來說是一次不小的挑戰(zhàn)。
本次的美術(shù)制作管線(Art Pipeline)需要結(jié)合不同DCC工具制作不同階段的美術(shù)資源,然后還要在新版工具完成配置,這與常見的游戲制作流程有很大不同。
多能力復(fù)合應(yīng)用不僅帶來了新的摸索成本,在技術(shù)落地上也帶來實(shí)際的困難,不少技術(shù)黑盒的存在使得在效果還原的過程中不斷踩坑。
因?yàn)闃?biāo)準(zhǔn)的不確定性,導(dǎo)致對于模型的面數(shù),比例,貼圖,動畫長度等等存在很多的未知難點(diǎn)。
二、流程探索,高效落地
雖然存在很多的不確定性,但有挑戰(zhàn)才有突破的機(jī)會。我們嘗試借鑒常見的3D游戲制作流程,邊推進(jìn)邊調(diào)整。
1. 玩法設(shè)定
因?yàn)槭腔赒Q相機(jī)的AR玩法,所以我們將整體交互設(shè)定為以用戶的臉為主體,當(dāng)引擎識別出用戶的臉后,可以將引擎中的模型臉與用戶的臉相匹配,然后用戶可以通過頭的搖晃和面部表情驅(qū)動模型變化。
2. 風(fēng)格設(shè)定
在這個玩法中,由于是以虛擬形象結(jié)合玩家的臉部作為游戲主角,所以關(guān)于主角的風(fēng)格設(shè)定尤為關(guān)鍵。為找到想要的春節(jié)氛圍,前期搜集了很多春節(jié)相關(guān)的參考,主要有2個方向。
方案A的方向是通用的春節(jié)的喜慶元素,關(guān)鍵詞:財神、紅包、福袋、春節(jié)、牛年、Q萌。
圖片來源于網(wǎng)絡(luò)
方案B的方向是更加本土和有特色的文化,關(guān)鍵詞:國潮、陜北外套、腰鼓、喜慶、牛年頭套、春節(jié)。
圖片來源于網(wǎng)絡(luò)
從關(guān)鍵詞和靈感圖中,我們創(chuàng)作了2個版本的原畫概念方案。
經(jīng)過討論,確定以方案A為最終形象設(shè)定,原因是方案A更加符合用戶對春節(jié)的期望:化身財神,小孩子的形象也比較有親切感。因?yàn)轭^部到時候會替換用戶的臉,所以這里不需要設(shè)計角色的臉部造型。
3. 3D模型設(shè)計
有了明確的2D形象設(shè)計后,接下來要做的工作就是把它轉(zhuǎn)化成3D模型,最終的模型設(shè)計因?yàn)橐胶夂眯阅芎推焚|(zhì),相比于2D設(shè)計,3D設(shè)計流程顯得復(fù)雜很多。這里的關(guān)鍵步驟有以下幾點(diǎn):
(1)中模設(shè)計
先根據(jù)原畫設(shè)定做好中模設(shè)計,這一步主要是確認(rèn)模型的基本造型,便于溝通和調(diào)整。
這個階段可以先不考慮小細(xì)節(jié),比如衣服褶皺那些可以在高模中雕刻。當(dāng)然,也可以根據(jù)3D模型的具體情況在2D原畫的基礎(chǔ)上做一些適當(dāng)設(shè)計發(fā)揮。
(2)雕刻高模
確定中模的結(jié)構(gòu)后,接下來就需要完成高模的設(shè)計。有些人可能覺得好奇,最終用到模型資源是低模,那為什么還要做高模呢?
其實(shí),高模的作用就是為低模而準(zhǔn)備的。通過高模烘焙出法線貼圖,AO貼圖,金屬度貼圖等等紋理貼圖,能夠讓低模也擁有高模的細(xì)節(jié),這樣做的原因主要是為了降低性能消耗。
精度要求不高的模型在非專業(yè)雕刻軟件中,比如C4D中就能完成雕刻,而精細(xì)度更高的高模則需要到專業(yè)的雕刻軟件,比如Zbrush中雕刻會更加方便。
雕刻要注意把細(xì)節(jié)雕刻的足夠明顯,甚至可以夸張一些,目的是為了在烘焙后能得到更多細(xì)節(jié)的貼圖。
這樣最終烘焙出來的貼圖才能方便調(diào)整,比如效果太強(qiáng)可以適當(dāng)減弱,但如果效果太弱是沒法再增加細(xì)節(jié)的。
(3)拓?fù)涞湍?/strong>
高模的面數(shù)一般會非常多,考慮性能問題,一般來說是不能最終使用的,這個時候還需要對模型進(jìn)行拓?fù)洌簿褪侵匦虏季€。
拓?fù)涞淖饔檬莾?yōu)化布線,減少面數(shù),而優(yōu)化好的布線也更方便拆UV。這里面有2個需要注意的地方:
- 保持面片,不通過擠壓做出封閉厚度。需要做厚度的地方,用面片彎曲來實(shí)現(xiàn)。
- 用點(diǎn)多的高模來做(可以通過加細(xì)分來得到更多點(diǎn)的模型),精度更高的模型會更加方便吸附選擇,這樣最終得到的布線可以更加規(guī)則。
(4)拆UV
這里一般建議用更加專業(yè)的拆UV工具來做,比如Uvlayout ,Maya等,不建議用C4D直接拆UV。
我這里由于是在C4D中做的模型,所以通過在C4D中整理好模型導(dǎo)出.fbx文件,導(dǎo)入Maya中進(jìn)行拆分,然后再導(dǎo)出拆分好UV的.fbx文件來畫貼圖。
注意將單個部件拆分在一個完整區(qū)域中,會更方便定位。
(5)畫貼圖
把拆分好的.fbx導(dǎo)入到SP,然后在SP中進(jìn)行比較細(xì)致的紋理設(shè)計。
如果對這個軟件不熟悉,也可以在C4D中簡單畫一些貼圖大概范圍,然后在Ps里細(xì)化貼圖。
當(dāng)然,用SP的好處就是可以烘焙出非常多的細(xì)節(jié)貼圖,主要用到的貼圖包括Diffuse、Normal、Metallic、Roughness方便后續(xù)使用。
(6)烘焙
確定好貼圖后,通過SP可以將各種需要的貼圖烘焙出來,用到最終的低模上。烘焙的時候需要注意,低模和高模中的Mesh命名要一一對應(yīng)。
烘焙出來的貼圖可能有問題,如出現(xiàn)破裂,可以用Ps的內(nèi)容識別工具進(jìn)行修復(fù),主要修復(fù)法線貼圖上過渡比較銳利的地方。
(7)確定最終模型效果
貼圖制作完成后,可以得到最終的靜態(tài)渲染效果。
4. 骨骼綁定
模型和UV確定后,接下來需要進(jìn)行骨骼綁定和權(quán)重分配。
因?yàn)楹罄m(xù)需要在引擎中加上物理隨動效果,所以這里的綁定規(guī)范會跟常規(guī)的3D動畫綁定要求有所不同,它要求哪里需要產(chǎn)生動畫就要將骨骼頂點(diǎn)添加到Mesh的末端點(diǎn),以獲得更加精確的模型控制。
所以,在實(shí)時3D內(nèi)容的設(shè)計中,僅靠權(quán)重控制不能做到足夠靈敏。至于綁定的工具,用自己熟悉的軟件即可,比如C4D,Maya ,Blender等等。
5. 動畫設(shè)定
在這次的項目中,需要做多達(dá)5段的動畫,其難點(diǎn)在于,這套多段動畫會分為循環(huán)動畫、非循環(huán)動畫,其中拆分開的循環(huán)動畫,需要首尾完全相同,并又能準(zhǔn)確銜接到下一個動畫。
這又是與3D動畫設(shè)計不同的地方,對動畫節(jié)奏提出了更高的要求。
為了提升溝通效率,向開發(fā)說明這里的動畫邏輯,制作了一張動畫時間線圖。
最終把動畫拆分成5段進(jìn)行輸出:
而為了實(shí)現(xiàn)這樣一套復(fù)雜的動畫內(nèi)容,經(jīng)過了反復(fù)的測試,我們使用Blender導(dǎo)出最終的多段動畫,實(shí)現(xiàn)了復(fù)雜邏輯控制。
這里會選擇使用Blender輸出,主要原因是Blender的動畫規(guī)則更符合引擎的讀取需要,效果更加接近引擎中的實(shí)際效果,便于測試。
因?yàn)樾枰郉CC工具的配合,在不斷導(dǎo)入導(dǎo)出的過程中出現(xiàn)了各種疑難雜癥。這里面有幾個點(diǎn)尤其需要注意:
(1) 要用正確的Blender版本進(jìn)行動畫合成輸出,Blender版本問題會產(chǎn)生各種bug。這里建議用Blender 2.8 版本進(jìn)行動畫輸出,兼容性更高,導(dǎo)出錯誤率較低。想要更方便導(dǎo)出.glb動畫格式,也建議大家嘗試用Maya+Babylon插件。
其中有個細(xì)節(jié)需要注意下,Blender2.9軟件操作更加便捷,但輸出動畫時,skin值會丟失,導(dǎo)致動畫運(yùn)行不正常,暫時只能通過換到更低的2.8版本來解決。
(2)在導(dǎo)入Blender前,需要在C4D中把除了骨骼動畫外的所有動畫軌道全部刪除清理,這樣導(dǎo)入Blender中的動畫軌道才是最干凈好處理的。
6. 氛圍細(xì)節(jié)
因?yàn)楫嬅媸且阅槻窟\(yùn)動為驅(qū)動的,所以模型會在整個屏幕產(chǎn)生移動,為了讓畫面更加合理,即人物不可能是沒理由的漂浮在空中,所以給人物增加了站在云上面的設(shè)定。
為了強(qiáng)化春節(jié)氛圍,還增加了元寶和春聯(lián)的裝飾元素。
并結(jié)合用戶的面部表情觸發(fā),設(shè)計了觸發(fā)前后的狀態(tài)變化給用戶帶來驚喜,提升可玩性。
7. 背景音樂
同時,增加了背景音樂,這里面有個小細(xì)節(jié)點(diǎn)是結(jié)合了人物面部表情對音樂進(jìn)行卡點(diǎn)。當(dāng)用戶張嘴的時候,音樂也會同步變化,會模仿畫面喊出“財神到!”,帶動用戶一起互動。
同時也用C4D+AE制作了完整的玩法Demo,便于開發(fā)做效果還原。
8. 性能問題
做3D內(nèi)容設(shè)計相較于做3D動畫設(shè)計,會有更多的技術(shù)性的思考,性能就是一個重點(diǎn)。
做動畫設(shè)計時,怎么好看就可以怎么來,但對于實(shí)時交互的3D效果來說,因?yàn)樽罱K是需要在手機(jī)QQ中上線,需要兼容到各種不同的機(jī)型,所以我們對于資源包要求非常苛刻,需要做很多美術(shù)效果的平衡。
整個的優(yōu)化思路包括以下幾點(diǎn):
- 當(dāng)前期做完減面后,依然發(fā)現(xiàn)性能不符合要求需要減面時,可以利用Blender的減面修改器進(jìn)行減面。利用這個修改器做減面對模型效果影響比較小,又能快速實(shí)現(xiàn)減面能力,非常方便。
- 經(jīng)過測試發(fā)現(xiàn)整體性能消耗上,動畫帶來的頂點(diǎn)變換產(chǎn)生的性能開銷最大,所以要平衡好動畫元素。做性能優(yōu)化時,可以考慮從小動畫上入手,去掉一些不太能注意到的小骨骼動畫,減少頂點(diǎn)變換量,從而提升性能。
- 優(yōu)化貼圖大小,合并貼圖。貼圖存儲的不單是顏色,還包含了各種信息,例如各種黑白圖,能改變粗糙度,金屬度等等。所以可以將貼圖利用不同通道的方式合并到一張圖中,縮小貼圖的文件大小。
以最好機(jī)型為基礎(chǔ),做出性能允許的最佳資源,以這個標(biāo)準(zhǔn)效果向下兼容,打包出幾個性能區(qū)段的素材包,包括:
- 動畫+物理隨動,高端機(jī)型
- 只有少部分動畫,中端機(jī)型
- 沒動畫,沒物理隨動,低端機(jī)型
9. 上線效果
最后,經(jīng)過復(fù)雜的引擎配置流程,材質(zhì)調(diào)整,平衡了一部分效果后最終得以上線,這是最終上線后的效果,可以在QQ相機(jī)中進(jìn)行體驗(yàn)。
三、規(guī)范梳理,反思沉淀
在這個項目中遇到很多的難題,為了讓后續(xù)類似玩法能夠更好的推進(jìn),也對整個項目中需要注意的事項和制作輸出規(guī)范進(jìn)行了沉淀,形成了規(guī)范文檔。
項目上線后,我們也進(jìn)行了反思,從3D動畫設(shè)計到實(shí)時3D內(nèi)容設(shè)計需要做一定的思維轉(zhuǎn)換,比如一開始就需要評估清楚玩法和用戶使用時的真實(shí)場景,不止步與靜態(tài)渲染。
這個玩法主要是應(yīng)用在用戶自拍的過程中,那么用戶拍攝的范圍多半只能是上半身,想要讓用戶體驗(yàn)到完整的模型資源,在人物的比例上,可以優(yōu)化為頭身比為1:1,頭套可以比身體稍大一些,會顯得更加可愛。
拓?fù)淇梢宰龅母泳乱恍?,在主要部位上的面?shù)可以適當(dāng)多一些,非重要的元素,面數(shù)可以更少,減面也需要差異化處理。
當(dāng)時留的時間比較緊張,沒有做太細(xì)致得貼圖。后續(xù)如果繼續(xù)做好的話,模型上的重點(diǎn)展示區(qū)域貼圖可以做的更加細(xì)致一些,提高品質(zhì)的同時也提升了效率。
實(shí)時3D內(nèi)容相比動畫,也更注重互動性,比如拍攝比例,張嘴互動、骨骼反饋的靈敏度等等,這些都是與3D動畫渲染所不同的地方。
在落地的過程中,還會有比較多技術(shù)項的思考,比如減面優(yōu)化、適配降級、對接引擎過程中的各種疑難問題解決等等。
四、挑戰(zhàn)與機(jī)遇,未來可期
對于設(shè)計師來說,這次項目挑戰(zhàn)不小,同時也收獲頗豐。
從0-1的過程中,熟悉了非常多以前不常接觸的技術(shù)流程,比如模型雕刻、貼圖烘焙、骨骼綁定、權(quán)重分配、多段動畫的合并、多DCC工具的配合等等。
這些技術(shù)點(diǎn)的學(xué)習(xí),為后續(xù)的項目提供了經(jīng)驗(yàn)支撐。有挑戰(zhàn)才能有進(jìn)步,跳出自己的舒適區(qū),才能成長的更快。
對于未來,基于多動畫,物理隨動的玩法能力,也可以應(yīng)用到更多的創(chuàng)意玩法中,比如與臉部驅(qū)動,身體隨動之類玩法,都能以這次的項目探索作為經(jīng)驗(yàn)沉淀而快速復(fù)用,值得期待。
最后,想體驗(yàn)文中所說的玩法,可以在QQ相機(jī)中找到這些濾鏡,操作路徑是:打開QQ聊天窗口——找到相機(jī)選擇右下角的表情圖標(biāo)——選擇最新選項——下滑找到“牛勢已到”,點(diǎn)擊即可玩起來。
本文由 @騰訊ISUX 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Pixabay,基于CC0協(xié)議
- 目前還沒評論,等你發(fā)揮!