與 SDF 函式的處理
在 16.0.0 版本中,Substance 3D Designer 引入了一組強大的節點來撰寫 SDF 函式,這些函式可用於建立和操作程序化的 3D 形狀。
SDF 函數是 Substance 函數圖,結合工具集中可用的 SDF 節點,並套用於支援 SDF 函數的節點中的專用參數。
作為起點,請記住基本工作流程如下:
- 在 3D 檢視🔗節點中撰寫一個 SDF 函數以視覺化結果。
- 將最終函數圖複製(或 實例化)到支援 SDF 函數 的節點參數中,例如 Shape splatter v2。
什麼是SDF函數?
這些功能在電腦圖形中有許多應用,例如繪製表面、陰影投射、輪廓遮罩、碰撞偵測等。
在 Substance 3D Designer 中,SDF 函式用於以程序化方式建立和操作 3D 形狀。
SDF 函數的輸出與預期用途
SDF 函數節點輸出單一浮點數值:即與最近曲面的有號距離。
但它們還有更多功能:它們內部取得並設定宿主節點需要定義和/或知道的變數值,以便操作和繪製產生的形狀。
這表示這些節點必須用於支援 SDF 函式 的節點,因為它知道這些變數並原生整合。
節點包括 Shape splatter v2 和 3D 檢視器。
物質函數圖
SDF 函數節點設計用於專用的 Substance 函數圖,因此僅能在該圖類型中使用。
節點參數若要以函式形式表示,則使用「編輯函數」按鈕。
你需要知道的關於物質函數圖的事項:
開始
要撰寫 SDF 函式,我們首先需要視覺化它們,以便理解我們調整的節點與參數的影響。
3D 檢視節點有專用模式用來視覺化使用 SDF 函數所產生的形狀:將節點的 場景類型 參數設為 ,SDF function並點擊 編輯函數 按鈕即可開啟將承載 SDF 函式的功能圖。
節點提供專用功能,用以視覺化 SDF 函數的各個面向,讓我們能更直覺且有效率地建構,例如包圍框架與等值線。
物理太陽/天空節點可用於快速設定 3D 檢視器的環境光照。
| table 0-row-2 0-border-none 1-border-none 2-border-none html-authored no-header | |
|---|---|
|
所有 SDF 功能節點及其輸入連接器都有工具提示,能讓你更了解它們的用途以及如何使用。 一定要去看看! |
|
設定節點值
與 Substance 函數圖中的所有節點一樣,SDF 函數節點沒有參數,只有作為參數使用的輸入連接器。
要設定這些輸入的值,可以使用 常數節點 如 Float、 Float3 和 Integer3。
你可以用節點選單中常用的方式建立這些節點,或者從連接器拖曳新連線,這樣就能看到篩選出的匹配節點清單。
大多數 SDF 函式節點的輸入連接器都有預設值,並會在工具提示中揭露。
| table 0-row-2 0-border-none 1-border-none 2-border-none html-authored no-header | |
|---|---|
|
如果你不需要一直保持某些數值可見,可以用鍵來停靠節點 你也可以用註解來追蹤數值。 |
|
包圍框架
等值線
SDF 功能節點類別
SDF 函數節點在函式庫中依其功能與用途進行分類。
你可以建立任意數量的函式庫檢視,以組織工作區,使 SDF 功能工具組依類別排列,同時保持所有工具隨時可用。 請前往 Windows >新資料庫 檢視以新增獨立的資料庫檢視。
基本體
SDF 功能的基本組件,讓你能創造基本形狀,如球體、方框、圓柱體等。
營運商
這些節點讓你能組合和修改用圖元建立的形狀。 包括:
- 像是 Union🔗、Intersection 和 Subtrimion 這類純布林運算子,讓你能以不同方式組合形狀。
- 變形布林 運算子,如 圓入(Rounding )和 變形(Morph ),能讓你結合形狀並產生混合效果。
- 其他專門的操作符,如 🔗Shell 和 Symmetry,能讓你修改和/或複製形狀。
轉換
形狀可以透過多種方式變換,例如平 移、 旋轉、 縮放、 扭轉 等。
這些節點讓你能透過變換表面所定義的空間來執行這些轉換。
這個空間被稱為 ,請 P繼續閱讀下一節,了解它的意義以及空間轉換的運作方式。
材質
基本材質管理可用於使用 SDF 函數產生的形狀。
你可以定義基本材質屬性:顏色、粗糙度和金屬度,用於 3D 檢視器節點的直接視覺化,或作為 Shape splatter v2 節點材質工作的基礎。
你也可以為形狀的不同部分指派材質 ID,將它們分隔開來。
以下將了解這些節點🔗的應用。
「P」輸入
當我們對形狀施加變換,例如偏移或旋轉時,實際上是變換該形狀所處的空間。
如果我們希望轉換能傳播到其他形狀——例如,如果我們想以相同方式旋轉多個形狀——就必須確保它們都使用相同的轉換空間。
轉換後的空間會透過節點的專用 P 輸入來共享,這在大多數 SDF 節點中都能找到。
「P」代表世界空間 P osition:一個三維向量,代表世界空間中某點的座標。
偏移 P 和旋轉 P 節點會轉換空間,並讓你能將這個轉換傳播到所有應該繼承它的節點。
例如,多個圖形可以透過連接 P 同一個旋轉 P 節點來旋轉。
這不僅僅是方便的問題,更是確保SDF節點在空間中能與相同位置運作。
舉個例子:
球體被重複使用,以視覺化空間為三維網格。 **重複空間。
若沒有共享 P,彎曲圓柱會使用球體所使用的重複空間。
透過共享 P的 ,可以在共享旋轉空間中正確定義形狀。
在「Shape splatter v2」節點使用 SDF 函式
當你在 3D 檢視器節點的上下文中完成一個 SDF 函式後,你可以複製整個函式並貼到 Shape splatter v2 節點,作為該節點的形狀產生器使用。
將 Shape 類型 參數設 為 SDF function,然後前往 Pattern SDF 函數參數,點擊 編輯函數 按鈕即可開啟該參數的功能圖。
接著你可以把從 3D 檢視器節點複製的函式貼到那張圖裡。 (別忘了再設定函數圖的輸出節點!)
務必調整 SDF 的包圍框架大小 參數,使其符合 你在 3D 檢視節點中使用的包圍框架 ,並確保形狀繪製正確。
Shape Splatter v2 的 Shape 類型 設定為 SDF function。 注意 SDF 邊界框架尺寸 已調整以符合該形狀。
- 你對函式的任何更新都會反映在兩個節點上,不需要再複製貼上。 這對於複雜形狀來說是極大的生活品質提升。
- 圖可以有一個描述性的名稱,在實例節點中可見,這會讓你使用自己的 SDF 圖形庫更易管理,也讓圖表更易閱讀。
- 你可以為函數圖建立輸入,然後搭配 Get🔗 節點使用。這些輸入會在實例節點中以輸入連接器的形式暴露,讓你能輕鬆做出形狀的變化。
材質識別
SDF 形狀可以被指派一個材質 ID,這是一個整數值,可以用來區分形狀的各個部分,並在 3D 檢視🔗器和 Shape splatter v2 節點中分配不同的材質。
請注意,不同材質 ID 的表面會被硬邊分割成混合形狀,如下範例所示。
在你想標記特定材質 ID 的形狀部分後面,使用 設定材質 ID 節點,並用 整數 常數節點設定想要的材質 ID 值。
在 3D 檢視器節點中,設定 輸出 參數以 Material ID 視覺化形狀的材質 ID。
右側為兩個 3D 檢視節點的輸出,合成顯示形狀(左)與材質 ID(右),說明混合形狀中材質如何插值,而材質 ID 則被分割。
材質 ID 可由 Shape splatter v2 伴隨節點利用:
- Shape Splatter v2 的貼圖節點 可以使用這些材質 ID 來指派不同的圖案。
- 形狀濺光 v2 到遮罩 可以根據形狀的材質 ID 遮罩部分形狀。
顏色、粗糙度與金屬度
Set color、Set roughness 和 Set metalness 節點讓你在 SDF 函式中為形狀定義這些材質屬性。
然後,當該 SDF 函式作為 Shape splatter v2🔗 節點的形狀類型時,這些材質屬性會以 SDF 顏色、 SDF 粗糙度和 SDF 金屬度 輸出的貼圖 形式提供。這些地圖可作為使用其他節點進行更複雜材質工作的基礎。
請注意,與材質 ID 不同,數值會 以漸層形式插 值於混合形狀間,如下例所示。