使用 NVIDIA Omniverse Reallusion Connector 簡化寫實角色的創造流程

作者 NVIDIA

角色創造與動畫是兩門不同的學問,需要具備專業背景知識之專業美術師的技能。對於未具備相關背景及不同技能的美術師而言,這些領域可能既困難又棘手,而 Character Creator 和 iClone 即是專為解決此痛點而設計。

Character Creator 是明確定位為創造寫實和風格化角色的首選解決方案,可以為 ZBrush、Substance、Blender 等主流工具提供穩健的工作流程。iClone 則結合了匯出包含細節等級(levels of detail)之 FBX 的能力、數位人類著色器以及豐富的動作資產集合,是一款沒有陡峭學習曲線之出色的動畫編輯器。

NVIDIA 在 2020 年推出了 NVIDIA Omniverse,引起了我們的強烈關注。Omniverse 代表了次世代 3D 虛擬協作和即時模擬平台,可以將人與應用程式連結,以進行全面性協作。結合龐大之高品質角色資產和動作資料庫的 Reallusion 軟體套件,在此生態系統中扮演著重要的角色,而 Omniverse 提供了可造就強大綜效的路徑追蹤渲染和人工智慧(AI)技術。

從何開始?

在建立連線程式時,請先參考可以從 NVIDIA 啟動器應用程式下載的 Connect Sample 程式碼

Image of ov connector sample: To get started with Omniverse and building a connector, reference the sample code that is attached.
圖 1:使用範例程式碼建立自訂 Omniverse Connector

Omniverse YouTube 頻道上提供了非常好的初學者教學:Create an Omniverse USD App from the Connect Sample

場景和角色動畫

iClone 和 Character Creator 的 3D 場景是由具有基本變換的節點組成,包括轉譯、旋轉和比例值。角色、網格、燈光和攝影機都附加在這些節點下。

角色骨架的骨骼也是使用這些節點表示。僅代表將變換的節點匯出為 USD XForm,代表將身體和臉部骨骼的節點匯出為通用場景描述(Universal Scene Description,USD)骨架關節。將其他骨骼和皮膚加入附加至骨骼的附屬節點,再轉換成 USD 格式。

image of asset tree: When manipulating and animating a real character, the various bones and joints all have an important role to play to create a real output.
圖 2:變換(Xform)和關節的場景圖

USD Xform 縮放的運作方式與 iClone 完全不同。在 iClone 中,可以使節點繼承或忽視原比例,而在 Omniverse 中,節點比例皆繼承自原節點。於此情況下,必須在匯出至 Omniverse 之前,移除骨骼節點比例繼承及重設其值,以使比例值可以相符。

大多數的 iClone 臉部表情是由匯出為 USD 混合形狀的變形動畫組成。FBX 混合形狀是儲存在局部空間位置,而 USD 混合形狀則是儲存位置偏移。

由於 iClone 也是儲存位置偏移(與強度乘法器結合),因此與 Omniverse 完全相容,可以直接轉換為 USD 格式。應注意,Omniverse 需要附有混合形狀的道具骨架根,且可能需要進行額外的處理。

材質轉換

下文包含 iClone USD 匯出器的 MDL 程式碼摘錄。更多的相關資訊,請參閱 USD 著色器屬性

在 USD 檔案中,使用 info:mdl:sourceAsset 指定 MDL,以 info:mdl:sourceAsset:subIdentifier 做為輸入函式。NVIDIA 和皮克斯(PIXAR)導入了新的 subIndentifier 屬性。之後呼叫 input: 以饋送紋理和材質參數。 使用 Omniverse 隨附的 OmniPBR.mdl 和 OmniSurface(Base).mdl 做為起點。

從一開始就選擇 OmniPBR.mdl,因為它在 NVIDIA RTX 即時和路徑追蹤模式下的效果都很好。另一方面,OmniSurface 和 OmniHairare 真實感 MDL 適用於 RTX 路徑追蹤模式。之後,從 HLSL 將現有的 PBR、皮膚、頭部和 SSS 著色器重寫為 MDL。

Image of female: Accurate hair, skin shading, and facial manipulation is vital to creating realistic digital humans.
圖 3:Omniverse 使用 OmniSurface 和 OmniHairare MDL 創造寫實角色
Image of pool:  Having high quality and realistic water that floats and moves like a true liquid would in real life with realistic reflections creates a true final image.
圖 4:使用 Omniverse 創造逼真的游泳池水面

游泳池水面是另一個極佳的範例:

float2 inputs:texture_translate.timeSamples = {
                    0: (0, 0),
                    4000: (4, 8),
                }

除先前提到的內建 MDL 外,GitHub 上還有一個 base.mdl,包含一些可立即部署的可重複使用函式。

燈光轉換

點燈和聚光燈是使用錐角已進行調整的 UsdLuxSphereLight。管燈和矩形燈是分別使用 UsdLuxCylinderLight 和 UsdLuxRectLight。燈光 IES 設定檔也是成形屬性之一。USD 中的光強度與每單位表面積的發光強度類似。含半徑(r 以公尺為單位)之球形燈的 USD 強度,計算公式如下:

USD intensity = candela * 1000 * / (4PI r*r)

半徑以公分為單位時,使用以下公式:

USD intensity = candela * 1000 / (4PI(0.01r)*(0.01r))

半徑是 Omniverse Renderer 中的重要屬性。建議至少採用 2 公分的半徑。更多的相關範例,請參閱 iClone Omniverse Connector Tutorial – Light Settings in iClone & Omniverse

Image of cars: Using the lighting radius to manipulate feel within Omniverse can have a great impact on the final outcome of the render.
圖 5:在 Omniverse Renderer 中呈現燈光的真實感

下一步

目前正在開發單向即時同步連線程式的原型。由於 iClone 的復原/取消復原系統與備忘錄模式類似,因此可以使用表格追蹤具有通用 ID 的即時物件。此表格會在執行復原和取消復原功能之後進行更新。

欲瞭解此解決方案的運作方法,請參考角色創造角色動畫解決方案或參與 GPU 技術大會(GTC)

若需要更多資訊或加入討論時,請前往 NVIDIA Omniverse 論壇NVIDIA Omniverse Discord 頻道。若需要更多的 USD 資源時,請參閱 USD GITHUBNVIDIA 預建函式庫/工具