補強 Blender 的 Shader node
前言
Blender 的 Shader node 提供的預設節點(node)種類有點少,少到有時一些基本的功能也必須用組合的,這裡開一篇來記錄相關的應用。
內容
Switch color:
Shader node 並沒有提供 switch node ,但如果需要時該如何做呢?如下圖
|
switch node 的替代方案 |
範例的結果為當"Value"小於等於1時會是"紅色",大於且小於等於2時會是"綠色",大於2會是"藍色",要注意的是因為用"Greater Than"來完成,所以剛好等於1時還會是"紅色"。
Not equal:
Shader node 有提供"=="也就是"Compare",但如果需要"!="(Not equal)呢?如下圖
|
實現"!="(Not equal) |
Greater equal or Less equal:
Shader node 僅提供"Greater Than"和"Less Than",如下圖
|
實現">="(Greater equal) |
|
實現"<="(Less equal) |
Not:
Not 的運算是跟輸入相反,如下圖
|
實現"!"(Not) |
Not 的運算必須考慮輸入型態是 float ,所以要先確認是否為"0",接著就可以去確定是否為"1",第二次的檢查可以確定輸入不是"0"就是"1",結果就會產生只有在輸入是"0"時結果為"1"。
And:
And 的實現如下
|
實現"&"(And) |
每個輸入都要經過兩次"Compare",目的是要將輸入是"0"時輸出"0",輸入是非零值時輸出"1",最後經過"Multiply"即為結果。
Or:
Or 的實現如下
|
實現"|"(Or) |
與 And 類似,但最後的運算改成"Add",並記得需要"Clamp",因為當輸入都是"1"時,輸出必須還是"1"。
Nand:
Nand 的實現如下
|
實現 Nand |
在 And 的結尾加上 Not 即為所求。
Nor:
Nor 的實現如下
|
實現 Nor |
在 Or 的結尾加上 Not 即為所求。
Xor:
Xor 的實現如下
|
實現 Xor
|
將兩個輸入拿來"Compare"後再過 Not 即為所求。
Xnor:
Xnor 的實現如下
|
實現 Xnor |
移除 Xor 最後的 Not 即為所求。