《Sherman》,它由《大白的夢》的創作團隊制作,展示了高級的實時毛發效果。
在制作方面,《大白的夢》制片人Andy Wood負責管理項目的制作,Isabelle Riva作為執行制片人領導團隊。我們還得到Vlad Neykov的幫助,他負責使用全新的Visual Effect Graph進行創作。
《Sherman》的核心內容由8人組成的小型團隊制作,從9月至12月歷時三個月制作完成。此后我們鎖定了動畫部分,剩下的制作過程專注于對毛發等部分的研發工作。
最后感謝在創作《Sherman》短片時提供幫助的所有Unity成員,特別是Film R&D團隊和EDU團隊。
創作工具
通過制作《大白的夢》,制作團隊已經非常熟悉Unity新的HDRP渲染器,包括:對HDRP進行重要改動,改進陰影過濾和PCSS。
對于新項目,我們希望盡可能充分使用渲染器和工具集。Unity圖形工程師John Parsaie的工作讓項目在很多方面提高了標準,特別是實時的毛發渲染。
我們使用Unity 2018.3制作《Sherman》,使用了許多Unity資源包,包括:Timeline、Cinemachine、Recorder、Alembic、FBX Exporter、Visual Effect Graph、Post Processing和HDRP等。
在制作期間,我們開發了許多工具和實用程序,并分享了其中一些,使它們成為Film / TV Toolbox資源包的一部分,該資源包可以通過Unity資源包管理器獲取。其余功能在“影視工具庫”中,目前我們仍然在將這些工具移植到Film / TV Toolbox資源包中。
項目基礎
對于大部分內容,制作團隊在《Sherman》上的工作不是完全獨立的,這里特別要提到發布于2016年,Marza動畫星球的短片項目《The Gift》,它是Marza動畫星球和Unity Japan團隊合作制作。
《The Gift》為Unity在實時動畫方面的功能建立了很多基礎,包括:Alembic支持、Unity Recorder、以及Unity中毛發著色器的第一個實現。這些都被我們用作《Sherman》項目的基礎。
構造短片
曾為《冰川時代》中松鼠Scrat等經典角色制作動畫的Bryan Larson開始進行短片的概念構造。通過使用Steven Shmuely創作的大致角色造型,他很快創作出了第一個動畫草稿,以呈現設想中的基本故事。
有了大致的動畫內容后,Mark Droste把動畫導入Unity,使用Cinemachine快速構造出第一個攝像機設置,又用一天左右的時間制作出首個粗略的動畫腳本,并向團隊展示。
下圖是《Sherman》動畫腳本的短片片段,藝術家可以使用粗糙的資源快速加工出故事內容。
Unity強大的動畫和攝像機工具允許制作團隊僅花費幾天時間,就可以把大致的創意實現為完整的動畫腳本。實時進行快速迭代和嘗試創意非常重要,這將允許制作團隊快速“發現故事”。
在得到短片的完整動畫腳本后,制作團隊可以真正了解到制作該短片所需的內容。
使用HDRP進行外觀開發
通過制作《大白的夢》,制作團隊積累了大量使用HDRP的經驗,非常熟悉其中的渲染器,并且擁有圖形工程資源,可以根據需要來自定義和擴展渲染器。所以我們決定為《Sherman》使用HDRP。
我們為《Sherman》設定了高視覺質量標準。夢工廠新短片《Bilby》和Unit Image最新的迪士尼廣告這二個短片都有非常好的毛發效果。
受此影響,我們希望在Unity中實現高級別的毛發質量,并擁有質量調整滑塊,同時實現超快速的工作環境和最高質量的渲染輸出結果。
我們為整體顏色分級外觀使用了全局Post Processing Profile,使用Cinemachine攝像機剪輯配置文件來控制每個鏡頭的后期處理效果,例如:曝光,景深和暈影,以及所有類似鏡頭的效果。
這種對每個場景/節拍實現的顏色分級可以很好結合每個畫面的鏡頭PPS組合效果,它可以用來對多個畫面快速嘗試不同的顏色分級調整,同時保留所有基于鏡頭的外觀。
在制作過程中,我們使用Cinemachine Storyboard擴展來對比當前視覺效果和參考圖像。使用Storyboard的SplitView功能來查看項目目標參考圖像,使用Waveform Monitor來幫助了解畫面在顏色方面和視覺目標之間的區別。這將可以在實時環境對每個畫面進行這種級別的顏色改進。
下圖為WaveForm Monitor SplitView視圖,左右部分展示了參考畫面和引擎內的波形圖區別。
由于團隊只有一個3D建模師Steven Shmuely,所以我們的環境不能過于復雜,也不能使用太多資源。
《Sherman》中的所有角色和物品都在Maya和3ds Max中建模,使用了Substance Painter來處理表面,其中一部分資源來自《死者之書》環境資源包,Steven Shmuely對這些資源進行了修改,以符合短片的風格和調色板。
《Sherman》的大部分資源使用標準HDRP Lit著色器,該著色器的功能豐富,提供了多種選項來實現理想的外觀。
從角色開始,Steven Shmuely快速建模了浣熊、灑水器、食盆等主要資源的多個版本。下圖展示主要資源的早期渲染效果。
我們最喜歡的一個資源是花園矮人雕像資源,矮人雕像的材質使用Substance Painter繪制,如下圖所示。
在外觀開發階段,我們會在Unity渲染轉盤效果,以進行查看和確認。
矮人雕像使用了標準HDRP Lit著色器,設置內容如下圖所示。
使用Shader Graph處理材質
除了使用標準HDRP Lit材質,場景中的大量元素需要更高級的材質。我們使用了Unity可視化節點材質編輯器Shader Graph著色器視圖來制作特別的材質。
對于水管部分,Steven Shmuely使用Stacklit shadergraph主節點制作了自定義Shader Graph,制作出二個獨立的鏡面部分,一個用于水管外部塑料層的光滑反射,另一個用于纖維編織的內部層。
水管的Shader Graph包含對泡泡動畫,模擬焦散和表面波形的獨立控制,表面波形的控制通過使用頂點動畫來使表面變形。所有公開的參數都可以在Timeline上獨立設置,這樣有助于給膨脹的水管場景帶來動態分層的外觀。
下圖是水管和Shader Graph屬性。
下圖是水管部分的材質的Shader Graph展示局部。(可點擊大圖觀看)
使用Shader Graph著色器視圖非常重要,它幫助Steven Shmuely快速創建和迭代水管的外觀,而不需要圖形工程師的幫助。
眼睛著色器
在開發和角色有關的項目時,關鍵元素是眼睛的著色和渲染。對于《Sherman》項目,我們嘗試了多個眼睛著色器的變體,才確定最終結果,最后我們使用自定義著色器和相應的MonoBehaviour腳本來控制眼睛的視差方向。
眼睛的實現比我們想象的復雜許多。在許多實時制作中,眼睛通常簡化為雙殼幾何體,用于表現眼睛的內殼和外殼,但這樣會得到質量很低的眼睛外觀。由于我們有很多小鳥和浣熊的近距離畫面,所以我們需要更好的質量。
在嘗試解決高質量眼睛著色時,最重要的是眼睛本身的實際制作。為了讓著色器可以適當應用眼睛著色所需的視差效果,我們開始時把眼睛的UV設為處于0~1的范圍。
下圖是浣熊眼睛的UV圖。
右上角的圖是眼球的后半部分,主要部分用于面向前方的眼睛,它在UV空間位于中心位置(0.5,0.5)。這樣設置眼球的UV可以讓著色器根據視差效果修改UV,如下圖所示。
另一個重要細節是:眼睛的骨骼朝向也用于視差效果的計算。這對于為我們提供攝像機觀察方向的參考畫面進行對比非常重要。眼睛的折射效果是二個向量函數即眼睛方向和攝像機觀察方向,以指定應用視差效果的程度。
John Parsaie給眼睛著色添加的最終視覺細節是眼睛的環境遮蔽效果,該效果通過對眼瞼進行光線步進,然后公開參數,從而讓Steven Shmuely控制應用的AO量。
上面的最終結果被公開在MonoBehaviour眼睛控制器腳本中,該腳本允許團隊為場景中每個畫面制作眼睛的動畫,并處理眼睛的屬性,根據需要來完全控制眼睛的虹膜細節,從而實現最終結果。
下面是《Sherman》的眼睛著色。
我們對最終結果非常滿意,它將隨著完整的《Sherman》項目發布。我們還希望將著色器和控制器打包為獨立資源包,以便開發者在自己的項目中使用。
使用Cinemachine進行攝像機布局
Mark Droste使用Cinemachine來布局《Sherman》項目中的所有攝像機,我們也使用了FBX Exporter將攝像機路徑從Unity導出到Maya,以便動畫師制作動畫。
最初,為了給Bryan Larson足夠的工作空間,并使他實現自己的動畫,短片拍攝得非常隨意。隨著動畫從草圖變為最終效果,Mark Droste可以加工攝像機的拍攝和移動過程。
由于角色已經在Bryan Larson設置的基本表演位置,Mark Droste可以直接在Unity中使用Cinemachine設置攝像機。他可以在大部分鏡頭中程序化跟蹤浣熊,通過在一條Timeline上使用多個Cinemachine攝像機軌道來嘗試新的攝像機,這讓他發現哪些鏡頭的效果好,哪些鏡頭可以調整為更好的組成效果。
這樣的過程比在Maya等傳統工具中制作攝像機動畫的速度更快。通過使用Cinemachine攝像機剪輯和動畫軌道來調整攝像機屬性,Mark Droste可以快速布局好短片的攝像機,快速進行迭代以實現最終結果。
小結
以上是《Sherman》項目創作系列文章的第一部分,希望你喜歡關于創作該項目所使用的制作流程和方法的內容。
在下一篇中,我們將深入了解如何使用Alembic來處理角色動畫,并了解更多創作《Sherman》時關于毛發實現的內容,以及Innovation Group開發的幫助團隊處理Unity線性動畫的工具。
我們非常喜歡《Sherman》短片,期待了解用戶如何使用Unity制作動畫。最后提醒一下:在短片中,Sherman不是浣熊的名字,而是下圖中毛茸茸小鳥的名字。
在《Sherman》項目背后的技術細節(1)中,我們介紹了項目背景、設計項目的方法、外觀開發和攝像機布局。在第二部分中,我們將介紹角色動畫、使用Alembic、使用Visual Effect Graph的方法以及毛發效果實現的細節。
工程下載
《Sherman》提供完整項目工程下載:https://connect.unity.com/p/sherman-unityguan-fang-zhi-zuo-ying-shi-duan-pian
友情提示:
你可以點擊[閱讀原文],進行工程下載。
在打開工程時,如果出現無法找到Git的錯誤信息,請先安裝Git:https://git-scm.com/downloads
請使用Windows系統打開項目,下面最低配置和推薦配置。
使用Alembic實現高級動畫
創作《大白的夢》系列短片時,制作團隊把FBX作為主要格式,用來將資源從Maya導入到Unity。
在DCC工具之間傳遞數據一直是一個難題,從原始格式導出為外部格式會有損原來的內容,使用可用導出格式是有利有弊的。
FBX格式是大多數Unity項目使用的常見格式,它擁有明確定義的優化工作流程。對于大多數Unity項目的動畫制作,開發者都會使用FBX文件中基于骨骼的傳統動畫,但是這種方法有二個限制:
骨骼蒙皮權重限制,存在于Unity 2019.1之前的版本
擠壓拉伸的比例補償
蒙皮權重設置
在Unity 2018.3及更早版本中,Unity最多可以使用4個骨骼對每個頂點添加權重,這讓高級蒙皮權重處理起來更加復雜和麻煩。
這個限制在Unity 2019.1中被去除了,現在每個頂點最多支持256個骨骼,但是在制作《Sherman》的時候,Unity 2019.1仍處于早期Alpha測試階段,所以我們決定繼續使用Unity 2018.3制作《Sherman》項目。
擠壓拉伸的比例補償
作為動畫師,首先要學習的第一個知識就是擠壓拉伸,根據維基百科的話,擠壓拉伸被視為動畫的12項基本原則中“最重要的”原則。
下圖展示了《Sherman》短片在早期動畫測試中的擠壓拉伸效果,該視頻用于測試早期皮毛實現如何作用于角色的動畫和綁定。
為了實現真正的擠壓拉伸動畫,我們使用了“比例補償”方法。
在制作《大白的夢》項目時,我們使用一些綁定技巧即平整綁定層級實現了這個方法,但對于《Sherman》項目,我們希望使用另一個方法,即Alembic方法。
解決方案:Alembic
Alembic是VFX和動畫制作中常見文件格式,它作為交換格式而流行起來,允許工作室把內容從不同軟件工具移動到工作室的管線中。
與使用蒙皮網格和骨骼來平移和變形網格的FBX不同,Alembic資源是原始模型烘焙后的頂點形式,允許你把原始資源的“所見即所得”副本導入到任何支持Alembic文件的工具中。
Alembic for Unity的第一個實現要追溯到Marza動畫星球和Unity Japan團隊合作創作《The Gift》短片,那時Alembic被用來在短片結尾形成大型海洋球的波浪動畫。我們在和Oats Studios合作制作《ADAM 2》和《ADAM 3》短片時加入了更多相關功能。
Alembic資源包脫離預覽階段
在Unity 2019.1中,Alembic資源包已經脫離預覽階段,這意味著它是一種Unity完全支持的格式。對CG動畫行業的從業者來說,這是一個好消息,創作者能夠使用自己熟悉的格式并用在自己現有的管線上,這樣會有很大好處。
了解Alembic for Unity以及如何使用該資源包,請查看:https://docs.unity3d.com/Packages/com.unity.formats.alembic@1.0/manual/tutorial.html
Alembic的問題
Alembic是一種優秀的格式,原因有很多:它的WYSIWYG(所見即所得)功能可以把內容從一個工具傳遞到另一個工具,從而使它成為從Maya烘焙動畫的理想格式,開發者不必擔心FBX等其它格式對特殊綁定或動畫約束的限制。
但是,Alembic格式也有一些問題,包括:文件大小、附加對象、材質管理。
文件大小
Alembic文件中每幀動畫都是特定幀模型頂點位置的烘焙快照,這會產生大量需要緩存的數據,網格的多邊形數越多或動畫越長,相應的Alembic文件就會越大。
對于《Sherman》項目,我們在短片上總共有7個序列。對于每個序列,我們都會為場景中每個角色輸出相應的Alembic文件,包括:灑水器、水管、矮人雕像等。
最終的Alembic格式動畫文件大約有7GB的動畫數據,這比相同動畫長度的FBX格式文件大很多。由于在實時幀率傳輸該數據量的開銷并不小,因此這部分是需要斟酌改進的。
例如:我們使用過Alembic在《ADAM 2》和《ADAM 3》短片傳輸角色的元素,包括:服飾和面部動畫,我們希望以30fps播放動畫,但是實時環境的限制要求我們調整場景中Alembic的細節層級,才可以實現這樣的播放幀率。
附加點
我們經常需要附加光照探針或反射探針到場景的動態元素。如果使用骨架動畫的話,這個任務會很簡單,只要把附加對象作為子對象嵌套到場景層級窗口即可。Cinemachine會使用這些本地引用變換來控制攝像機觀察和跟蹤的位置。
在把動畫導出到Alembic格式時,即導出為“Renderable only”設置,默認不會包含角色的骨架。我們需要找到一種不同方法使Alembic動畫在播放時可以附加到正確的位置。
幸運的是,Maya的Alembic導出器提供了一些選項,可以不僅僅導出可渲染網格數據。下圖是Maya的Alembic導出選項。
通過取消勾選“Renderable Only”選項,Maya不僅可以導出渲染網格,還可以導出完整的IK綁定和角色的骨架/骨骼位置,這讓我們能夠使用這些位置來把光照探針、反射探針和VFX附加到合適的節點。
材質管理
Alembic的另一個缺點是:Alembic格式不會在文件中存儲任何材質定義。
FBX和一些其它格式都包含哪些紋理應用到哪些材質的定義信息,但對于Alembic格式,這類信息不會從Maya等DCC工具傳遞到Unity。
這意味著每次動畫重新導出為Alembic格式時,我們都需要為特定動畫重新映射材質。在制作過程中,使大量Alembic剪輯與合適材質保持同步是很費時間的事情。
我們在《Sherman》項目期間開發了多個工具,以幫助簡化Alembic格式文件的材質映射過程。其中二個工具已經添加到新版Film/TV Toolbox資源包,該資源包可以在GitHub獲取,或者在Unity的Staging Package庫作為資源包獲取。
下圖為Unity資源包管理器內的Film / TV Toolbox資源包。
USD格式及其未來
皮克斯的開源USD格式在過去幾年逐漸受到關注,最近Unity通過資源包發布了USD Unity SDK,提供對USD格式的支持。
在USD格式方面有一些很不錯的開發內容,它們展示了USD格式的前景。制作團隊對USD格式提供的功能很感興趣,我們會在未來的制作中持續關注該格式的發展。
線性內容的光照策略
實時環境中的光照和使用傳統離線渲染器的光照有很大區別。雖然它們有相同的基礎,例如:都要把光線放入到場景,但是各自的技術方法有很大不同。
《Sherman》這類短片中的實時光照通過多種技術實現,包括:光照探針、反射探針、級聯陰影貼圖和烘焙全局光照。
在處理《Sherman》項目的光照時,我們邀請Unity光照主管Jean-Philippe Leroux為我們提供更專業更優化的光照效果支持。
為了實現實時效果的第一步,對于光照解決方案的特定部分需要進行預計算,為此要做一些前期準備。
全局光照
間接光照需要進行預計算,以實現高質量局部環境光照。所有大型靜態對象都標記為對解決方案產生作用,而且這些對象都要制作光照貼圖。在這個過程中,我們使用了漸進式光照貼圖的Baked Indirect烘焙間接模式。
所有小型對象和動態對象都會被探針組照亮,對于不適合制作光照貼圖的較大對象,我們通過使用代理體積使這類對象獲得更精細的探針光照。
我們沒有烘焙光線,場景里只有天空的影響和定向光的反彈效果。
反射效果
我們還需要使用反射探針,為烘焙局部反射效果設置合適的覆蓋。
我們將大部分采集點放到攝像機層級中。由于天空和接近地平線的太陽有很強的定向光,所以需要額外設置,以便正確的覆蓋陰影區域。
一些高反射物體會從實時反射中得到更大的受益。在我們的項目中,這類物體主要是金屬食盆和有光澤的水管,前者使用球體實時反射探針,后者使用平面反射。
光線
所有光線都是純動態的,它們的屬性可以調整,也可以四處移動,并得到即時反饋。
我們使用的一個工作流程技巧是:使用軸心對象來處理光線位置。軸心會作為目標使用,放置后,它允許我們通過使用“x”鍵切換本地和全局方向,從而輕松圍繞特定對象進行旋轉。
請注意:所有光線都會投射陰影。
使用預制件有很多優點:
預制件允許我們不必在場景處理單個對象,讓其它對象在場景中可以正常工作。
預制件允許我們快速把改動傳遞到序列和項目中。
預制件允許我們快速還原重寫數值。
對于《Sherman》項目,我們對這些內容創建了主預制件和嵌套預制件:太陽、填充太陽、填充天空、邊緣太陽、邊緣天空、反射亮光。
主預制件會根據每個畫面而構造,我們在Timeline中使用了激活軌道來觸發預制件。
在預制件中,我們會找到很多內容,例如:畫面特定光線、重寫特定全局光照屬性的體積、控制大氣光照的密度體積、陰影對象。
后期處理等其它屬性通過Cinemachine Post Processing剪輯和Timeline來調整,例如:分級、攝像機效果、攝像機剔除等其它優化。
如下圖所示,圖中是每個畫面的Custom Post Profiles,對每個虛擬攝像機應用了CinemachinePostProcessing組件。
毛發和視覺特效
有動畫腳本以后,我們很快確定對短片非常重要的關鍵要素:水的視覺特效和浣熊的毛發。
由于灑水器在短片中扮演“主要”角色,因此早期遇到的挑戰之一是弄清如何處理流體模擬效果。處理動畫流體模擬的傳統方法很多,包括:使用Houdini,或Maya中原生支持的流體系統。
Steven Shmuely使用Maya對流體效果進行了測試,但由于他對Maya流體系統或Houdini不是非常熟悉,我們擔心這些工作無法達到想要的結果。
此時,Unity發布了基于節點并使用GPU加速的特效工具Visual Effect Graph。這個工具看起來很強大,但我們沒有任何使用經驗。隨著首席圖形測試工程師Vlad Neykov的加入,最終幫助我們實現了驚艷的視覺特效。
使用Visual Effect Graph實現動態效果
在Unity 2018.3中,全新的Visual Effect Graph面向HDRP發布預覽版。在《大白的夢》短片中,制作團隊使用傳統粒子系統和實時物理功能,用于實現破壞效果。
雖然制作團隊中沒有成員使用過Visual Effect Graph,但我們清楚的知道,為了實現高級水模擬效果和視覺效果,我們需要Visual Effect Graph提供的高級粒子功能和HDRP集成。
我們非常幸運找到了Vlad Neykov,它幫助我們實現短片中華麗的水效果和其它效果。
所有視覺效果都在其對應的Timeline序列上管理,這讓Vlad Neykov可以單獨在時間和動畫上進行迭代,使用Visual Effect Graph提供的自定義Visual Effect Activation Track和傳統動畫軌道,從而改變視圖的屬性。
對于灑水器的效果,Vlad Neykov最初想使用一個水效果來管理所有效果,逐漸把它擴展為包含新的情況。
例如:在第一個畫面中,水從攝像機角度出現,所以必須給它添加控制功能。在另一個畫面中,水在食盆上反彈,所以要給它添加碰撞效果,但該效果要在其它畫面中隱藏起來。
在其它畫面中,深度碰撞無法在足夠近的距離碰撞,所以要替換為球體碰撞。最后,制作過程中幾乎所有畫面都有單獨的水效果來處理特定情況。
Vlad Neykov最初使用屏幕空間深度測試來處理水的碰撞效果,但在測試多種情況后,他改為使用各種碰撞體積的簡單平面/球體碰撞形式。
最初,我們主要考慮如何為灑水器實現動態水效果,Vlad Neykov最后解決了短片的所有特效,包括:樹葉從樹籬落下的細節效果,腳步的塵土效果,泥土爆發的效果和觸電效果。
《Sherman》項目對Visual Effect Graph進行了很好的實際測試,并提供了大量反饋,以便后續改進Visual Effect Graph。
處理實時毛發和羽毛效果
在制作短片的時候,我們有一些想要解決的技術目標,其中最大的目標是,關于使用實時引擎制作動畫方面經常提到的話題:毛發效果的實現。
起初,我們對處理毛發渲染猶豫不定。雖然我們對John Parsaie作為圖形工程師的能力很有信心,但在實時環境實現“離線渲染質量”的毛發效果是一項重大的挑戰。
討論在任意引擎中實現毛發效果時,有四個關鍵元素組成了解決方案:幾何體、著色、動態效果、制作方法。
對于小鳥Sherman身上的毛發,我們解決了前二個元素幾何體生成和著色,并對動態效果做了一些實驗,但最終決定不將該方法用于最終的短片。
最后的關鍵內容是毛發的實際制作,給藝術家提供處理毛發的方法對毛發的最終效果非常重要。制作團隊做的第一件事是:評估此前對毛發渲染的已有工作內容。Unity中的首個毛發渲染實現由Marza動畫星球為《The Gift》短片而開發。
在Unity的Hack Week活動中,某個團隊想繼續《The Gift》短片所完成的工作,了解Unity中實時毛發效果的其它可能性。該團隊把Marza的毛發效果移植到HDRP,為《Sherman》團隊實現毛發解決方案提供了工作的基礎。
基于Hack Week項目所提供的基本實現內容,John Parsaie和Steven Shmuely開始處理制作毛發的工作流程。但是本文不會過多深入介紹其中的技術細節,我們只希望介紹團隊在該方法上使用的要素。
源毛發網格和SDF
Steven Shmuely對毛發效果做的第一件事是為一部分毛發建模,作為單獨的毛發部分,該模型烘焙為SDF有向向量場,用作毛發幾何體積本身的原始模型。
通過為毛發提供高分辨率原始模型,毛發的保真度比純粹基于外殼的方法高很多。例如:法線可以根據每根毛發進行計算,從而得到比目前大部分實時毛皮實現更好的光照效果。
隨著我們在該實現方法取得進展,第二種分析式SDF被用于結合毛皮的“外層”,從而把二種效果混合起來。
下圖為原始毛發網格,用于生成SDF。
底層部分使用了烘焙式SDF,而外層使用了分析式SDF,因此我們加入選項來根據需要選擇使用的SDF。
分析式SDF會提供無限制的分辨率,未來會提供直接在Unity中修改毛發配置文件或屬性的功能。烘焙式SDF允許烘焙更復雜的幾何體,例如:通過分析方法很難實現的羽毛幾何體或毛發風格,提供復制DCC工具中制作內容的可預測結果。
刷毛貼圖和高度圖
毛發本身的效果很好,但浣熊這類動物沒有筆直的毛發垂直于身體部分。此外,毛發在動物的身體上往往沒有相同的長度。
為了獲得合適的結果,提供制作刷毛貼圖的功能非常重要,從而用于修改毛發發線和幾何體。Steven Shmuely使用Mari生成刷毛貼圖,并生成了高度圖來控制浣熊身體不同位置的毛發長度。
影視級動態模糊和超采樣
制作團隊在《Sherman》項目制作期間開發了大量自定義工具,大多數工具在概念上很簡單,但是為團隊提供了有效的工作流程,并節省了時間。其中一項關鍵技術是稱為“Filmic Motion Blur”影視級動態模糊的系統。
在開發《大白的夢》期間,我們需要解決的主要技術難題之一是動態模糊。在玩游戲時,目前“實時”狀態的動態模糊在高幀率下看起來效果很好,但對于離線渲染器,例如:電視要求的24fps,它會出現瑕疵,這對電視播出效果來說是無法接受的。
為了通過迪士尼的質量標準,John Parsaie開發了Filmic Motion Blur系統。Filmic Motion Blur的核心是一個基于積累效果的渲染器。時間軸序列不是在24fps下渲染,而是在960fps下渲染,中間緩沖區會積累到最后寫入硬盤的實際幀數中。
由于該效果只是結合現有渲染緩沖區的結果,所以它不必經過修改就可以處理任何材質或著色器。在《Sherman》項目中,同樣的技術也用于將毛發采樣結合到最終畫面。在未來,我們將研究如何使用這種方法來創建高端影視級景深效果和其它超采樣效果。
這種渲染畫面的方法并非沒有缺點,最大的缺點是:它不能運行在實時FPS中。
實際上,在具有毛發細節和毛發效果的4K畫質下,我們開始以“每分鐘多少幀”的速度范圍來輸出最終畫面,但考慮到現有CPU和GPU離線渲染器需要數小時渲染最終畫面,這種方法的速度依舊快得多。
渲染窗口
Filmic Motion Blur系統大幅提高了最終畫面的質量,取得了非常好的結果,但最大的缺點是:為了看到帶有所有超采樣和結合的最終結果,制作團隊必須渲染正在制作的序列或畫面。
為了解決該問題,我們開發了Render Window渲染窗口,任何團隊成員都可以使用這個自定義編輯窗口來輸出最終質量的渲染效果。它讓Steven Shmuely可以根據需要調整刷毛貼圖和毛發,同時可以快速看到最終結果。
下面為Alpha抖動毛發和最終結合畫面的對比圖。
Unity Recorder錄制器
創作《Sherman》項目的過程和常見Unity項目不同。最終結果是從編輯器輸出序列化幀數,并組成最終的動畫。為此,我們使用了Unity的Recorder資源包,從編輯器渲染出最終畫面。
Filmic Motion Blur功能會關聯Recorder的Timeline集成,允許我們結合毛發效果,為最終畫面創建超采樣動態模糊效果。
下圖為Unity Recorder的軌道和剪輯設置。