MMD聯(lián)動(dòng)Unity學(xué)習(xí)筆記 Vol.16 使用HDRP時(shí)MMD的制作流程

前言
????在使用HDRP(高清渲染管線)后,Unity的畫(huà)面會(huì)提升到一個(gè)新的級(jí)別。我們使用HDRP來(lái)制作MMD會(huì)給以往的效果更加出色。這次共同研究在使用HDRP時(shí)MMD的制作流程。

事前準(zhǔn)備? ??
????這次我們不使用MMD4Mecanim來(lái)導(dǎo)入模型,我們用另一種方法來(lái)替代MMD4Mecanim。MMD4Mecanim有時(shí)導(dǎo)入動(dòng)作,可能會(huì)使面部表情缺失,所以我們這次選擇Blender。導(dǎo)入Blender時(shí)我們需要先安裝一款叫做MMD Tools的插件,這款插件導(dǎo)入模型的時(shí)候支持模型的貼圖,骨骼,剛體,動(dòng)作,非常全面,制作視頻所需要的所有元素都支持。下載地址:http://github.com/sugiany/blender_mmd_tools
mmd_tools的安裝
????設(shè)置語(yǔ)言在左上角的file > User preference,然后點(diǎn)擊右上角的system,拖拽滾動(dòng)條,到下面,勾選Internatonal fonts,然后把其他幾上按鈕點(diǎn)上。最后保存用戶設(shè)置。
????這樣之后,語(yǔ)言切換到了中文顯示。接下來(lái)是插件的安裝。
????首先解壓插件壓縮包。解壓之后會(huì)得到幾個(gè)文件。把其中的mmd_tools文件夾剪切,移動(dòng)到blender目錄的插件目錄,路徑是blener-2.78-scrpts-addon。其中的數(shù)字部分根據(jù)自己安裝的版本靈活應(yīng)變。Blender Foundation > Blender > 2.78 >scripts > addons,把剛才那個(gè)目錄粘貼到這里。
????然后,還要在blender里激活插件才能使用。同樣是在用戶設(shè)置面板,文件用戶設(shè)置中,點(diǎn)擊插件,在左邊搜索欄里輸入mmd,點(diǎn)擊小三角,展開(kāi)信息顯示。
????點(diǎn)擊方框,給它打上勾。最后保存用戶設(shè)置啟動(dòng)插件。

具體操作
????導(dǎo)入模型
????我們已經(jīng)將插件準(zhǔn)備好。現(xiàn)在可以開(kāi)始導(dǎo)入模型。

????選擇File>Import>MikuMikuDance Model,找到.pmd或.pmx模型文件,將其導(dǎo)入Blender中。

????或者在左邊可以看到插件工具條。其中的Import Model可以導(dǎo)入模型。找到模型文件導(dǎo)入,點(diǎn)擊Import Model file。

????這之后就開(kāi)始模型,按N鍵打開(kāi)信息,最下面有個(gè)GLSL,點(diǎn)擊后可以顯示角色的貼圖。

????點(diǎn)擊模型,再點(diǎn)擊左邊工具欄中Rigbody的Bulid,點(diǎn)擊生成剛體。添加成功后人物身上會(huì)出現(xiàn)很多虛線,沒(méi)有剛體人物的頭發(fā)就會(huì)出現(xiàn)一些奇怪的行為。
????現(xiàn)在可以導(dǎo)入動(dòng)作,首先要選中物骨骼,在右邊屬性欄找到MMD Display,勾選骨骼顯示,人物身上會(huì)出現(xiàn)很多骨骼類的物體。
????之后導(dǎo)入動(dòng)作,在左邊的工具欄找到導(dǎo)入導(dǎo)出,點(diǎn)擊下面的Import Motion,找到VMD后綴的動(dòng)作文件,點(diǎn)擊Import VMD file to MMD Model。

????也可以在文件>導(dǎo)入>MikuMikuDance Motion導(dǎo)入動(dòng)作文件。

????導(dǎo)入成功后就能在時(shí)間軸上看到很多黃色豎線。這時(shí)人物已經(jīng)可以被骨骼帶動(dòng),但是頭發(fā)和衣服不會(huì)跟隨人物。這時(shí)還需要結(jié)算剛體碰撞。

????在右邊屬性窗口點(diǎn)擊圖標(biāo)切換到場(chǎng)景分頁(yè),找到Rigid Body Cache(剛體緩存)擴(kuò)展欄,打開(kāi)標(biāo)簽,并點(diǎn)擊Bake All Dynamics(烘焙所有動(dòng)力學(xué))。這需要耐心等待,在導(dǎo)入動(dòng)作和烘焙剛體之前不要做多余的操作,那樣可能導(dǎo)致模型動(dòng)作異?;蛘咭路^發(fā)姿態(tài)的異常。

額外提示(下面步驟是應(yīng)用在Blender中的內(nèi)容,因?yàn)槲覀冎饕獙W(xué)習(xí)Untiy,不感興趣的同學(xué)可以跳過(guò)藍(lán)字)
導(dǎo)入鏡頭
????烘焙完成后接下來(lái)是鏡頭,也可以像人物那樣直接導(dǎo)動(dòng)作。
????首先選中攝像機(jī),然后在菜單里打開(kāi)文件,導(dǎo)入mikumikudance motion。導(dǎo)航到動(dòng)作數(shù)據(jù)文件,然后導(dǎo)入。時(shí)間軸同樣出現(xiàn)黃色豎線。
????需要注意的是,Blender導(dǎo)入U(xiǎn)nity的相機(jī)是有問(wèn)題的,所以導(dǎo)入鏡頭的步驟我們也可以省略。
渲染輸出
????渲染是單幀圖像渲染,動(dòng)畫(huà)是渲染視頻。分辨率就是圖像分辨率,幀率一般在導(dǎo)入動(dòng)作之后就自動(dòng)調(diào)好了,幀范圍同樣也是。
????輸出設(shè)置選項(xiàng),最上面一行是要輸出的位置,就是最終渲染的視頻存儲(chǔ)位置,文件格式可以直接設(shè)置成視頻的格式。
????編碼格式設(shè)置MPEG-4,編碼器H.264,比率1800,音頻編碼器:AAC。
????關(guān)于聲音,這里是可以直接添加聲音的,blender內(nèi)置非線性編輯工具,可以添加音軌,剪輯,做轉(zhuǎn)場(chǎng)效果,添加字幕等等。
????最后按下渲染動(dòng)畫(huà)的按鈕,等待完成即可。Blender是一款開(kāi)源免費(fèi)的3D軟件,雖然小巧但是功能強(qiáng)大,2.8版本增加了EEVEE渲染器,可以進(jìn)行實(shí)時(shí)渲染。

導(dǎo)出FBX? ?

我們切換到AV-sync,再播放動(dòng)畫(huà)看看效果。烘焙后衣服和頭發(fā)的問(wèn)題已經(jīng)修復(fù),模型的面部表情也保留下來(lái)。我們現(xiàn)在導(dǎo)出FBX文件。我們?cè)?D界面按A鍵?;蛘咴贠utline窗口Select Hierachy(選中層級(jí)),選中模型文件(這里注意要將骨骼顯示出來(lái))。


打開(kāi)File>Export>FBX。

????在左下角Export FBX擴(kuò)展欄中,我們按照上圖設(shè)置。選擇好輸出文件位置。點(diǎn)擊Export FBX按鈕。導(dǎo)出時(shí)在輸出FBX同時(shí)會(huì)生成*.fbm的文件夾,這個(gè)里面裝的是貼圖文件。

導(dǎo)入導(dǎo)出相機(jī)動(dòng)作
????這個(gè)步驟Up偷個(gè)懶,請(qǐng)移步下面方案,查看Up學(xué)習(xí)筆記的第四期。

????Up推薦步驟?MMDBridge導(dǎo)出abc文件 >?Maya導(dǎo)出FBX文件? > FBX導(dǎo)入U(xiǎn)nity?

導(dǎo)入導(dǎo)出場(chǎng)景
????導(dǎo)入場(chǎng)景Up建議和模型分開(kāi)進(jìn)行,場(chǎng)景導(dǎo)入Blender和模型前面的步驟基本一致。場(chǎng)景不需要進(jìn)行Build剛體和導(dǎo)入動(dòng)作。所以導(dǎo)入場(chǎng)景后我們就可以導(dǎo)出FBX文件了。

因?yàn)閳?chǎng)景不需要骨骼和動(dòng)畫(huà),所以我們只點(diǎn)選Mesh就可以。

在Unity中組裝
????預(yù)先設(shè)置
????首先,我們要?jiǎng)?chuàng)建HDRP模版的項(xiàng)目。

????根據(jù)之前的經(jīng)驗(yàn),創(chuàng)建項(xiàng)目要先進(jìn)行兩項(xiàng)設(shè)置。第一,在Asset文件夾中創(chuàng)建高清渲染管線資源,在項(xiàng)目設(shè)置中圖像的可編程渲染管線設(shè)置中,設(shè)置為新創(chuàng)建的HDRP資源。第二,將項(xiàng)目設(shè)置中Player的其它設(shè)置里的渲染下的顏色空間設(shè)為線性。
????導(dǎo)入資源
????我們將剛才導(dǎo)出好模型,場(chǎng)景,相機(jī)的FBX和音樂(lè)文件導(dǎo)入U(xiǎn)nity,可以直接將它們拖到Assets文件夾里面??梢钥吹侥P屯先險(xiǎn)nity后只是顯示白模,沒(méi)有貼圖。我們將與FBX同時(shí)生成的*.fbm直接拖到Material文件夾里面(如果導(dǎo)出FBX文件時(shí)沒(méi)有生成fbm文件夾,我們?cè)贛aterial文件夾里面創(chuàng)建一個(gè)新的文件夾(可以命名為Model),將貼圖文件夾和文件都拖到這個(gè)新建的文件夾里面)。

????我們點(diǎn)選模型的FBX文件,將Material的Location從Use Embedded Material(使用嵌入材質(zhì))切換到Use Exteral?Materials(Legacy)(使用外部材質(zhì)(遺留)),點(diǎn)擊下面Apply按鈕應(yīng)用??梢栽陬A(yù)覽窗口看到模型的貼圖已經(jīng)附著上。

????布置場(chǎng)景
????我們將模型拖入場(chǎng)景中,調(diào)整Transform參數(shù)。這里我們需要注意的是要讓模型符合相機(jī)的移動(dòng)范圍,我們要靈活地設(shè)置Scale大小,一般以原來(lái)值的10倍或一半進(jìn)行實(shí)驗(yàn)性的設(shè)置。

????我們展開(kāi)FBX文件,可在看到帶播放圖標(biāo)的文件,這個(gè)文件是FBX附帶的動(dòng)畫(huà)文件,我們將它拖到場(chǎng)景中的模型上。

????模型的Animator組件下Controller原來(lái)為None,拖入動(dòng)畫(huà)文件變?yōu)槟P兔?。這時(shí)模型的默認(rèn)動(dòng)畫(huà)已經(jīng)修改為剛剛拖入的動(dòng)畫(huà)。這時(shí)我們點(diǎn)擊播放按鈕就可以看到模型動(dòng)畫(huà)已經(jīng)設(shè)置完成了。

????Blender一般會(huì)給動(dòng)畫(huà)加入幾幀多余的空白幀。我們點(diǎn)選動(dòng)畫(huà)文件的檢查器的Edit(編輯)按鈕,對(duì)動(dòng)畫(huà)進(jìn)行編輯,要改變動(dòng)畫(huà)的幀范圍可以拖動(dòng)里面的刻度的滑桿。? ?
????場(chǎng)景FBX文件只需要將材質(zhì)以模型相同的處理步驟即可。? ??
????相機(jī)FBX文件導(dǎo)入Assets文件夾后,將FBX文件拖入場(chǎng)景中。點(diǎn)擊FBX后的小三角展開(kāi)里面內(nèi)容,將里面的動(dòng)畫(huà)文件拖到相機(jī)文件上。相機(jī)的動(dòng)畫(huà)一般Transform設(shè)為Reset,不需要再進(jìn)行調(diào)整,Up建議我們只修改模型和場(chǎng)景的Transform參數(shù),讓角色模型和場(chǎng)景適配相機(jī)即可。我們?cè)俳o相機(jī)增加Audio Source和Audio Listener兩個(gè)組件,將音樂(lè)文件拖到Audio Source組件的AudioClip后面的空白處。有了新相機(jī),那么原來(lái)的相機(jī)就可以禁用或者直接刪除掉了。

????我們還要給相機(jī)增加抗鋸齒,點(diǎn)擊Anti-aliasing后面的選項(xiàng)可以選擇四個(gè)級(jí)別的抗鋸齒。

????FXAA是輕度抗鋸齒,TAA比它稍好一些,SMAA是越高級(jí)的抗鋸齒。我們按自己需求的情況適當(dāng)設(shè)置抗鋸齒的級(jí)別。
????材質(zhì)設(shè)置
????使用HDRP后材質(zhì)和正常的情況下有很大的區(qū)別,這時(shí)我們要進(jìn)材質(zhì)進(jìn)行修正。

????我們保持材質(zhì)的Shader為HDRP/Lit,有些材質(zhì)的可見(jiàn)度現(xiàn)在是不正確的,我們要調(diào)整Surface Type的設(shè)置,Opaque為不透明,Transparent為透明。這時(shí)只要稍動(dòng)一下,就會(huì)發(fā)現(xiàn)不正常的材質(zhì)變正確了(各別材質(zhì)會(huì)這樣),而不是真得實(shí)際去改變?cè)O(shè)置。不排除升級(jí)HDRP材質(zhì)后,原材質(zhì)出現(xiàn)的Bug。
????下面我們?cè)賹aterial Type設(shè)置為對(duì)應(yīng)的材質(zhì),比如皮膚設(shè)為Subsurface Scattering(次表面分散),也就是傳說(shuō)中的SSS材質(zhì),把Transmission的勾選去掉。其它可以選擇Standard,高亮的材質(zhì)可以選擇Specular Color。材質(zhì)的詳細(xì)設(shè)置Up以后還要深入研究,我們現(xiàn)在先簡(jiǎn)單設(shè)置一下。
????環(huán)境設(shè)置
????HDRP下環(huán)境設(shè)置與正常情況時(shí)有很大區(qū)別,需要將天空盒等效果放入單獨(dú)一個(gè)Volume中進(jìn)行設(shè)置。下面這篇有HDRP詳細(xì)說(shuō)明,感興趣可以看看。


? ?我們?cè)趫?chǎng)景中創(chuàng)建一個(gè)空物體,命名為Skybox。增加Volume組件,勾選Is Global框選。點(diǎn)擊Profile后面的New按鈕,新建一個(gè)Skybox Profile配置文件。

再點(diǎn)擊Add Oerride按鈕,選擇Sky里面的其中一種。這里的天空盒和正常的天空盒大同小異,我們可以參考之前的設(shè)置。


UP這里選擇HDRI Sky,我們可以在Asset Store里面搜索HDRI Pack??梢哉业较旅鎯蓚€(gè)免費(fèi)的貼圖包。

這里Up自已在網(wǎng)上搜索全景文件(jpg,hdr都可以,但推薦hdr),如下所示。

????我們將Texture Shape設(shè)置由2D切換至Cube,點(diǎn)擊Apply應(yīng)用。

????設(shè)置好天空盒,再點(diǎn)擊Add Override按鈕,增加Visual Environment組件。按自已需求勾選Type,Ambient Mode,F(xiàn)og。Sky Type可選擇上面的三種天空盒。Ambient Mode可以選擇Static(靜態(tài))和Dynamic(動(dòng)態(tài))。
????Fog Type可以選擇Linear Fog(線性霧),Exponential Fog(指數(shù)霧)和Volumetric Fog(體積霧)。我們還可以加入Lighting,Shadowing,Post-processing,這些設(shè)置各位小伙伴可以實(shí)驗(yàn)性地調(diào)節(jié),直到效果讓我們滿意為止。

????這個(gè)不是標(biāo)準(zhǔn),每個(gè)人對(duì)畫(huà)面可能都有不同的喜好。另外還得補(bǔ)充一點(diǎn),我們雖然使用了全景天空設(shè)置,但還是要記得將方向光對(duì)著模型的正面,用來(lái)保持更好的光照效果。還可以根據(jù)自己的需要增加燈光。我們后面再探討燈光的設(shè)置。

????HDRP的Post-processing和之前第五期的設(shè)置類似,我們可以參考Up的筆記回顧一下。關(guān)于Volume的具體設(shè)置我們后面再深入研究。

????預(yù)覽動(dòng)畫(huà)
????準(zhǔn)備工作已經(jīng)完成,我們先播放看看整體效果如何。

????如果你的Game窗口效果不明顯,說(shuō)明你的窗口分辨率可能比較低。我們可以調(diào)高窗口的分辨率仔細(xì)觀察畫(huà)面質(zhì)量。

????我們點(diǎn)擊Game下面的這個(gè)按鈕(一般默認(rèn)設(shè)置為Free Aspect),我們可以點(diǎn)擊下面的+號(hào)來(lái)增加新的分辨率。Up增加的是1920x1080分辨率。小伙伴們可以按照自己的想法來(lái)隨意設(shè)置。4k以上也是沒(méi)問(wèn)題的,不過(guò)前提是你的機(jī)器得足夠好,否則播放起來(lái)可能會(huì)卡成PPT。
????導(dǎo)出視頻
????如果播放沒(méi)有問(wèn)題了,我們下面就可以準(zhǔn)備導(dǎo)出視頻文件了。之前Up的第三期里面已經(jīng)介紹過(guò)了視頻的錄制插件和使用方法。我們可借這個(gè)機(jī)會(huì)復(fù)習(xí)一下。

????另外,Up還要補(bǔ)充一點(diǎn),官方的Recorder已經(jīng)更新到v2版本,功能而且更加豐富。我們可以在Asset Store或者新版的Package Manager里面搜索可以找到。

????它操作和以前略有不同,我們?cè)谶@里簡(jiǎn)單了解一下它的視頻輸出。我們?cè)赪indow>General>Recorder>Recorder Window打開(kāi)它的界面窗口。

????我們先要點(diǎn)擊左側(cè)Add New Recorders的按鈕,添加一種輸出類型,我們選擇Movie(影片),下面就會(huì)出現(xiàn)輸出類型,右面對(duì)應(yīng)這種類型的參數(shù)設(shè)置。
????Frame Rate (幀率)下,我們選擇Playback的Constant,Target里面選擇60,勾選Cap。
我們要影片保持60幀的播放速度。下面Format我們可以選擇MP4類型的視頻,Path選擇我們的輸出位置。Capture保持Game View,Output Resolution我們選擇4K - 2160p,Quality我們選擇High,勾選Capture audio抓取音軌。這樣我們可以得到4K的高清高質(zhì)量視頻。
????最后我們點(diǎn)擊上面START RECORDING按鈕,開(kāi)始錄制視頻。這個(gè)錄制的速度取決我們電腦的配置,分辨率越高花費(fèi)的時(shí)間越長(zhǎng),但對(duì)于Unity這種實(shí)時(shí)渲染的方式,要比其它3D軟件快得多。
? ? 新版的Recorder使用方法可以參考下面這篇專欄。


????輸出完成后我們就可以欣賞自己的作品了,成就感油然而生。小伙伴們都可以嘗試一下。
????當(dāng)然,這個(gè)流程并不是固定的,它只是在Up自已有限知識(shí)范圍內(nèi)歸納的東西,肯定還有錯(cuò)誤和冗余的步驟。如果哪位小伙伴有更好做法,希望您不吝賜教,指出Up的錯(cuò)誤和不足。這樣Up以后才能不斷進(jìn)步,進(jìn)一步提高Unity水平,這也是我制作筆記的目的。?