前往
大廳
主題

USD和MaterialX使用經驗分享

金風與紅帽子 | 2024-04-26 01:14:35 | 巴幣 2002 | 人氣 273

以下內容是我最近幾天花時間了解USD和MAYA LookdevX 的筆記,我不敢保證文中所有內容都是正確的,假如有任何錯誤歡迎在下方留言更正。

USD簡介
USD全名是 Universal  Scene  Description,我個人會將他直翻成「通用場景描述檔案」。這是由皮克斯開發出來的一種格式,目的是讓各個部門間的合作可以更順利。USD可以容納幾何、著色、光影與物理等資訊,也能將不同的檔案整合起來。目前該項技術是個開源項目,不少軟體也逐漸開始相容USD格式。

MaterialX簡介
MaterialX是一個開源的材質格式,他提供了一個通用材質標準供各個軟體使用,在各大公司的努力下,許多軟體開始支援這個材質格式,大大增加了檔案在不同軟體間傳送的便利性。

由於我本人對於USD和MaterialX的詳細技術細節不是很了解,因此只能介紹到這裡,不過就我目前知道的內容來看,USD和MaterialX似乎有很大的機會成為一套主流工作流程,讓使用不同軟體的藝術家可以輕鬆編輯檔案,不會遇到檔案與軟體不相容的問題。

本次筆記使用的軟體是MAYA2024.2,其提供的USD與LookdevX插件能讓創作者順利進行USD的工作流程。

這些是我學習MAYA LookdevX所看的官方教學影片:官方教學

假如有時間的話,不妨去看看專家詳細解釋他們的工具。

那麼接下來開始分享我這次的經驗。

我個人其實比較熟悉Blender,不過目前到Blender4.1版本為止,它仍舊沒有原生支援MaterialX,因此我轉而將檔案以FBX傳送至MAYA工作。
圖為Blender Cycle算出來的場景。

這是我嘗試將場景用FBX傳送到MAYA的結果…沒有比較,沒有傷害。

很明顯FBX沒有正確記錄我在Blender使用的Mapping nodes,不過幸好其他材質仍正常運作,所以我決定將檔案直接匯出成USD檔案。
畫紅線的地方是我在輸出前做的設定。

理論上依照官方的教學,MAYA會盡量將目前的材質轉換成MaterialX的形式,但事與願違,不可能那麼輕鬆。
看起來似乎沒問題

實際用Arnold算圖,問題可大了!

理論上Arnold不應該將場景算成一片黑色,它應該要跟Viewport的畫面一樣,正確顯示材質。我再度走進一條死路,只好走回起點,手動將材質貼上去。

不過在開始替場景上材質前,有一些設定必須去做。
首先要先建立一個USD檔案。

接著雙擊新建立的檔案來將它存檔。

在儲存檔案的地方先建立四個資料夾,並將剛建立的USD檔放入main資料夾。

接下來右鍵點擊main.usd,選擇Add Sublayer新增子USD檔。

這次要建立的分別是mtl.usd和bnd.usd,請將他們放進對應的資料夾。

最後再次右鍵點擊main.usd,選擇Load Sublayers來讀取事先準備好的場景USD檔。

請事先將場景的USD檔案放到geo資料夾裡,接著才讀取USD檔案。

大功告成!

這裡簡單說明一下每個USD檔案的作用:
main: 最主要的USD檔案,可以將其它的USD納入他的子層級
geo: 存放幾何模型的USD檔
mtl: 存放材質的USD檔
bnd: 將材質連到幾何模型的USD檔

為什麼要大費周章的弄這麼多USD檔案? 主要原因一開始就有提到: 為了讓各個部門間的合作可以更順利。這樣不同部門的人就不會動到別的部門的工作內容。

但我這個專案只有我一個人在使用,有必要建立這麼多USD檔嗎? 還是有必要。這裡給各位看一張圖。

這是儲存成Ascii格式的USD檔案,用文字文件開啟後的樣子,可以看到USD的詳細資訊全都被寫在裡面。假如我們現在將所有的工作全儲存在一個USD檔案,這個文字文件就會變得非常的長,讓使用者很難透過閱讀的方式找到出問題的地方。

你也可以右鍵點擊USD檔案,選擇Print to Script Editor來閱讀這些資訊。

接下來就可以準備替幾何模型上材質了。

記得先選擇mtl.usd! 檔名前面的藍色圈圈有出現才算是正確選取!

接著到outliner右鍵點擊stageShape1,依照上圖建立一個Scope。

什麼是Scope? 可以把它想像成一個不能動的資料夾,可以裝我們做出來的材質。假如你希望資料夾可以移動,那就應該選擇建立Xform。

右鍵點擊Scope,依照上圖建立一個MaterialX材質,這裡以Standard Surface作為示範。

成功建立後,右鍵點擊Standard_Surface1,依照上圖在LookdevX開啟材質。

這是LookdevX的介面,點擊standard_surface1兩下可以開啟詳細內容(如下圖)

點擊兩下後會進入編輯頁面,按TAB可以新增新的節點


要注意的是,有許多節點的名字很相似,很容易搞混。在MAYA2024.2的版本中,小寫是mtlx的節點,大寫是Arnold的。更舊的版本需要在搜尋欄輸入nd作為開頭才能找到mtxl的節點。MAYA2025透過提示的方式解決了分不清楚的問題。

左邊是給Arnold的,右邊是mtlx的,可以用底部的圖案做區分。

basecolor要連接到standard_surface1的base_color,Node Type維持預設。

roughness要連接到standard_surface1的specular_roughness,Node Type改成float。

metalic要連接到standard_surface1的metalness,Node Type改成float。

normal比較特別,它需要額外連接normalmap節點,
最後才連到standard_surface1的normal,Node Type改成vector3

最後要做的就是將檔案匯入這些節點中。

其他的材質也如法炮製,用一樣的方法做出來。你可能會問這些節點可不可以複製貼上? 我不太推薦這麼做,因為某個我無法理解的原因,有時複製貼上的節點會卡在原地,無法拖動、無法刪除。

最後一件事情就是將材質貼到模型上面。
先選擇bnd.usd

接著選取物體,對它點右鍵,選擇Assign Existing Material>/Scope1>standard_surface1
成功綁定材質了!

最後再補充一些額外內容:
tiledimage讓使用者可以去調整UV的大小,控制材質呈現方式

假如希望將一個大物體貼上多個材質,我的作法是右鍵點擊該物體,選擇Edit As Maya Data,接著利用Detach和Saperate功能把面拆開,最後在右鍵點擊物體,選擇Merge Maya Edits to USD。這是你會發現outliner多了幾個polySurface,這時可以將原本的模型刪掉,留下那些剛生成的polySurface,給他們綁定材質。

以上就是我這次使用USD和MaterialX的經驗,假如有任何問題或是文章內有任何錯誤,歡迎在下方留言!

創作回應

相關創作

更多創作