Unity3D Adam Demo的學習與研究


 

 

1.簡述

這篇文章是對Adam各種相關資料了解后進行一些精簡的內容。如果你想仔細研究某個技術請跳轉至unity相關頁面。

Adam官方頁面: https://unity3d.com/cn/pages/adam

搬運視頻以及資源包網盤下載: http://pan.baidu.com/s/1jH6NF86

 

Adam這個demo由8個人的團隊耗時6個月(part1四個月,part2兩個月)打造完成。

其中使用到的軟件如下:

Model: 3DSMax, Marvelous Designer, ZBrush

Texture: Substance Painter

Tiled textures: Quixel megascans

Animation: MotionBuilder

 

關於megascans這個軟件單獨介紹下,算是quixel近年的新計划,可以理解為實景掃描素材庫

提供模型和貼圖的下載,內容主要以戶外自然為主,但目前收費較貴。

 

技術方面主要集中在2種燈光和新加入的PostProcessing上,其次就是物理插件CaronteFX

 

 

2.技術深入

 

2.1 - 環境與表現

 

2.1.1 - Adam的布料撕裂效果

這個一開始看demo時的確以為是物理模擬插件CaronteFX的功勞

但看了視頻才知道是max里做好,然后導出abc格式到unity中來完成的

 

我后來在看demo的目錄文件時也發現了位於SteamingAssets的abc文件

 

播放效果:

 

abc格式導入工具的github地址如下:

https://github.com/unity3d-jp/AlembicImporter

 

 

2.1.2 - Adam背上的線纜和面部破損

線纜確實是CaronteFX實現了

 

而面部破損因為不需要表現破碎動畫,先是在Max里用tp粒子制作的原型,然后再交由建模師制作實際模型

 

關於布料方面以及CaronteFX的使用,極力推薦篇文章:

https://blogs.unity3d.com/cn/2017/01/04/adam-vfx-in-the-real-time-short-film/

 

 

2.1.3 - 室內環境中的煙霧動畫

 

下圖直接摘自官網

 

3A游戲中常見的粒子序列,這里使用3dmax的插件PhoenixFD生成。 

關於陣列圖轉換,這里順帶提一下unity正在開發的工具VFXToolbox(https://forum.unity3d.com/threads/release-thread-vfx-toolbox-image-sequencer.438465)

這在unity adam的相關文章中有提到,我后來試用了一下,不僅僅是陣列圖和序列圖互轉這么簡單,可能以后要集成一套圖形處理的功能進去。

 

 

2.1.4 - Puddles水坑漣漪效果

 

同樣使用PhoenixFD制作的漣漪序列,並將這個NormalMap賦予unity粒子序列。

 

下圖直接摘自官網

 

順帶一提,以上兩個效果的作者是Zdravko Pavlov,已經有11年的相關工作經驗

 

 

2.1.5 - SceneManagement多場景並行編輯

得益於unity5.3加入的SceneManagement,可以多人並行編輯一個大場景了

 

在觀察demo執行文件時,會發現有非常多的場景文件

使用HHD Hex Editor打開后確實可以看見,整個大的場景中不同內容被放在多個小的場景文件內

就像視頻中說的那樣,多人協作時分成多個小場景編輯,這樣非常方便

 

 

 

2.1.6 - 編輯器狀態啟用IK

(Unite Europe 2016視頻中確實有一個InEditorIK的腳本)

 

有時候要在編輯器內調節IK,視頻中提到了這個問題。

解決方法在這里:https://forum.unity3d.com/threads/set-up-ik-in-editor.332035/

 

 

 

2.2 - 角色處理

在視頻中Lu和Guard的布料都是用CaronteFX來做的,但實際上資源包中,是通過Unity自定義關節實現的

只有Sebastian的資源包使用了CaronteFX布料

 

2.2.1 - 自定義關節

來看一下這兩個角色的自定義關節。

 

角色Lu

 

角色Guard

 

Lu只有一小塊地方用了unity布料。因為這一塊在demo中會隨風飄揚

 

對於布料模擬這是個好方法,但是它並不能解決動態穿插問題

 

 

2.2.2 - CaronteFX的布料效果

Sebastian是一個單獨拆出來的包,原因是它的布料和之前的那些角色不同。它用的是CaronteFX的烘培布料

在這個資源包里會發現居然帶了一個純運行版的CaronteFX,你不能編輯它,你只能用。。

 

單是看GC沒發現什么問題,不過得注意下內存中數據量的問題,烘焙數據大約占了150mb左右,還有烘培速度

 

 

carontefx的烘培速度確實非常慢,Adam團隊自身也對此做了一些代理對象處理。

 

另外carontefx其實並不簡單,其來頭就是RealFlow的開發公司NextLimit

https://www.nextlimit.com/products/name/carontefx/

 

 

 

2.3 - 光照部分

在github上,unity專門把Adam光照部分提取了出來(TubeLight,AreaLight,Volumetric fog)

https://github.com/Unity-Technologies/VolumetricLighting

 

在Unite Europe 2016 - The making of Adam demo這部視頻里,有對這些內容進行細致的講解

 

2.3.1 - TubeLight柱形光照

 

沒有陰影,相比AreaLight更低品質,但是便宜

 

如果直接丟到空項目里用是這樣的,因為它必須相機掛上PostProcessing才行

 

 

此時就可以看見效果了

 

 

還可以設置ShadowPlane,控制光照的擴散

比如這里就約束了底部擴散,你可以直接改生成出來的Shadow Plane坐標和旋轉,來控制它。

 

2.3.2 - Area Light區域光照

看視頻中的講解,似乎是通過CommandBuffer在AfterLighting處理后,拿到G-Buffer的數據進行采樣,並通過DrawMesh來繪制光照。

 

 

 

和TubeLight一樣,相機需要掛載PostProcessing。

如果需要和Adam里一樣有霧光效果,需要掛載兩個腳本

LightManagerFogLights,LightManagerFogEllipsoids

 

此時可以看見霧的效果(gif)

 

 

2.3.3 - Volumetric fog 體積霧

因為在Adam demo中霧效是和燈光整合的,所以也就沒法測試了。

FogEllipsoid是具體代碼。

另外相關文章中提及到的LightShafts,github地址如下:

https://github.com/robertcupisz/LightShafts

 

 

2.4 - 一些其他工具

大氣散射和平面反射在Blacksmith的demo中就已經講過,這里不做介紹

Blacksmith demo學習:http://www.cnblogs.com/hont/p/5658491.html

 

2.4.1 - RigMeister2000

這是一個角色骨架調試工具,它位於Adam相關的角色資源包里

這個包里有兩個腳本RigMeister2000和VisibleSkeleton。

前者可以校對骨骼朝向和作為一個約束工具使用,並且調試朝向。后者可以繪制出骨骼gizmos

 

掛上VisibleSkeleton之后,效果如下

 

 

RigMeister2000這個工具比較謎,因為除了Adam外的人形角色都沒有綁定這個腳本

它在LateUpdate里會去做約束處理。但實際上你開不開這個腳本變化不大,或者說基本上沒變化。

 

 

2.4.2 - Wind

一個小工具,一個繪制箭頭Gizmos的腳本

補充:Wind可以作為方向信息傳入體積光,並加入噪聲的擾動之中。

 

 

 

3.結語

 

在Unite 2016的兩部視頻中,unity自己挖了不少坑,比如Delay了1年的Sequence工具。。

unite2016中提及的新特性大致如下:

1.CrowdSystem集群系統,這個說會100%在unity中集成,但目前來看應該還要等。

2.CustomCape feathers simulation in Unity5.4一個羽毛模擬組件,說是在unity5.4中加入,但目前應該是Delay。

3.Motion Vectors for temporal Anti-Aliasing in Unity5.4使用運動向量的隨機采樣抗鋸齒?這個未知

4.Texture Array 這個Demo的地形中有用到,並且5.4確實加入了,在adam室外部分的Shader中可以找到這個類型。

 

另外室外環境的包中有一個地形工具TETerrain,但是這個工具似乎是缺少編輯器套件,我沒辦法用大的地表重新切片

所以這部分內容只好跳過。

 

關於Adam這個demo的研究這里就結束了,因為一直有各種事,delay到現在才開始寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM