Linear Interpolation::Substance Designer Custom Function

學習目標

理解像素處理器的運行原理,學習編基本函數的方法,把用戶導入的圖片在不使用外部節點的情況下直接變形。

學習量大累的函數和方案。
1. 歸屬於 Graph 的普通函數定義和函數的顯示
2. 非歸屬於 Graph 的 (所屬 Node 的) member 函數定義和使用。

歸屬於 Graph 的普通函數定義和函數的顯示

非歸屬於 Graph 的 (所屬 Node 的) member 函數定義和使用

這個是從 Substance designer 2019 版本以上的版本開始支持的功能。
簡單看下案例,並摸索下使用方案。
案例是製作 Custom Blend node 。
我們來了解下 Input Value 。
這次案例會使用 Pixel Processor ,基本用法前面已經學過了。
一個個跟着做,實現 Custom Blend node。

先對 Blend 定義。
這是爲了讓輸入的圖片可以合成。
可以用多個合成公式做出結果,但是這次案例就用以下形式吧。

// Precise method, which guarantees i = i1 when w = 1.
//i is input image, w is blend weight
float lerp(float i0, float i1, float w) {
  return (1 - w) * i0 + w * i1;
}

在這裏插入圖片描述
做 Pixel processor 並添加 Input Value,變量名稱是 w 。

在這裏插入圖片描述進到 Pixel processor 編輯窗,如上圖製作2個 input sampler Color ,添加一個 Get Float 後輸入的變量變更爲 #w 。
用 Frame 套上,並寫上要實現的算法也可以。
先做出 (1-w) * i0 部分的結構。

在這裏插入圖片描述添加固定常數 Flaot ,數值變爲 1。
添加 Subtract 後固定常數 1 輸出成 #w 。
添加 Scalar Multipication ,在 A port 連接 input 0 ,把剛纔的 (1-w) 部分連接到 Scalar port。

在這裏插入圖片描述暫時從函數編輯窗口離開,在 Graph 上製作如上圖的兩個 Uniform Color ,都連到 Pixel Processor 。

在這裏插入圖片描述再回到 Pixel Processor 編輯窗口,用 input 1 變更第二次做的 Sampler 輸入變量。
添加 Scalar Multification , #w 如上圖連接。
這是整個數式的 w * i1 部分。

在這裏插入圖片描述根據 return (1 - w) * i0 + w * i1; 數式,加法最後做就可以了,所以 add 最後添加。

在這裏插入圖片描述最後用 (1 - w) * i0 實現的部分 w * i1 用 add node 加上就可以了。
別忘了, add node 要用 Set as Output Node 定義。

在這裏插入圖片描述但是仍然沒有變化。
現在到了使用 Input Value 的時候。

在這裏插入圖片描述在 Graph 添加一個 Input Value 。

在這裏插入圖片描述Input Value 值變更爲 0並連接上了。
Input Value 是對入到 #w member變量的值。
而且 w 是權重值,如果還是紅色那就是正常啓動了。
爲了確認,來把權重也就是 Input Value 值變更爲 0.25 吧。

在這裏插入圖片描述紅色和綠色在用權重值混合。
確認結果是否如上圖。

在這裏插入圖片描述
權重是(w) 1 的時候出現完整的綠色纔行。
現在稍微擴展。
也可以使用 Mask 。
修改以上的學習內容,並添加 Mask 。

在 Weight 擴展 Mask 。
在這裏插入圖片描述

最終結果案例。

Mask 擴展需要 $pos 內含變量。

Uniform Color 雖然都是單一顏色,但 Mask 要理解成其他顏色或者以濃度組成的像素的組合。會需要像素的 XY 位置信息。

在這裏插入圖片描述
添加一個 Gradient Linear 1 ,然後追加連接到 Input 2 上。
用於 Mask Texture 的 Node 要連接到 Pixel Processor 的 Input 2 上。

在這裏插入圖片描述
添加 Get Float2 後,在內含變量中選擇 $pos 。
然後再添加一個 Sampler ,輸入變量變更爲 input2 。

在這裏插入圖片描述
乘與 #w 和添加的 Mask 輸入部分。

在這裏插入圖片描述w * i1 部分也修改成 (w*maks)*i1 的形態。

在這裏插入圖片描述完成的函數。

再加強以上函數。
現在輸入的兩個 Uniform Color 是的單一顏色,所以不需要 $pos 。

在這裏插入圖片描述考慮輸入的 Input 0 和 Input 1 是普通貼圖的情況,都添加 $pos 來測試吧。

在這裏插入圖片描述
權重 Weight 設成 1的情況下 Mask 替換成了 Checker 1 ,這是兩個輸入圖片也都替換成了貼圖後確認的結果。

Related tutorial

Transform2D Rotation Matrix

About JP

鏈接: Website.
在這裏插入圖片描述
在這裏插入圖片描述
出生在韓國的TA。
1997年開始從事電腦圖形視覺化工作後,在這個行業已經有21年經驗了。
在多個網絡遊戲公司引領過美術團隊,之前在allegorithmic擔任TA負責人,在中國網易盤古工作室擔任TA總監,現在是巨人網絡TA部門的總負責人。
懶惰的人才有創意”是他堅信並執行的哲學道理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章