(176)矢量操作表達式

AppendVector(追加矢量)

AppendVector(追加矢量)表達式允許您將通道組合在一起,以創建通道數比原始矢量更多的矢量。例如,您可以使用兩個 常量 值並進行追加,以建立雙通道 Constant2Vector(常量 2 矢量) 值。這有助於將單個紋理中的通道重新排序,或者將多個灰階紋理組合成一個 RGB 彩色紋理。

項目

說明

輸入

A

接收作爲追加目標的值。

B

接收要追加的值。

示例:對 0.2 和 0.4 執行追加的結果是 (0.2,0.4);對 (0.2,0.4) 和 (1.6) 執行追加的結果是 (0.2,0.4,1.6)。

AppendVectorExample.png

ComponentMask(分量蒙版)

ComponentMask(分量蒙版)表達式允許從輸入中選擇通道(R、G、B 和/或 A)的特定子集以傳遞到輸出。嘗試傳遞輸入中不存在的通道將導致錯誤,除非輸入是單個常量值。在這種情況下,會將單個值傳遞到每個通道。選擇傳遞的當前通道將顯示在表達式的標題欄中。

項目

說明

屬性

R

如果選中此項目,那麼會將輸入值的紅色通道(第一個通道)傳遞到輸出。

G

如果選中此項目,那麼會將輸入值的綠色通道(第二個通道)傳遞到輸出。

B

如果選中此項目,那麼會將輸入值的藍色通道(第三個通道)傳遞到輸出。

A

如果選中此項目,那麼會將輸入值的阿爾法通道(第四個通道)傳遞到輸出。

示例:如果 ComponentMask(分量蒙版)的輸入爲 (0.2,0.8,1.4) 並選中 R 和 B 通道,那麼將輸出 (0.2,1.4)。

ComponentMaskExample.png

CrossProduct(矢量積)

CrossProduct(矢量積)表達式計算兩個三通道矢量值輸入的矢量積,並輸出所產生的三通道矢量值。給定空間中的兩個矢量,矢量積是與兩個輸入都垂直的矢量。

項目

說明

輸入

A

接收三通道矢量值。

B

接收三通道矢量值。

用法示例:CrossProduct(矢量積)通常用來計算與另外兩個方向都垂直的方向。

CrossProductExample.png

DeriveNormalZ(派生法線 Z)

DeriveNormalZ(派生法線 Z)表達式在給定 X 和 Y 分量的情況下派生切線空間法線的 Z 分量,並輸出所產生的三通道切線空間法線。Z 計算方法爲:Z = sqrt(1 - (x x + y y));

項目

說明

輸入

輸入 XY(InXY)

以雙通道矢量值形式接收切線空間法線的 X 和 Y 分量。

DeriveNormalZExample.png

DotProduct(標量積)

DotProduct(標量積)表達式計算標量積,即一個矢量投射到另一個矢量上的長度。許多技術使用此計算來計算衰減。DotProduct(標量積)要求兩個矢量輸入具有相同數目的通道。

項目

說明

輸入

A

接收一個值,或接收任意長度的矢量。

B

接收一個值,或接收任意長度的矢量。

DotProductExample.png

Normalize(規範化)

Normalize(規範化)表達式計算並輸出其輸入的規範化值。這表示該輸入的每個分量都會除以矢量的 L-2 範數(長度)。

NormalizeExample.png

不必對連接到“法線”(Normal)材質輸出的表達式進行規範化。

Transform(轉換)

Transform(轉換)表達式將三通道矢量值從一種參考座標系轉換到另一種參考座標系。

默認情況下,材質的所有着色器計算都在切線空間中完成。矢量常量、攝像機矢量和光線矢量等在材質中使用之前,都會轉換到切線空間。Transform(轉換)表達式允許將這些矢量從切線空間轉換到全局空間、局部空間或視圖空間座標系。另外,它允許將全局空間和局部空間矢量轉換到任何其他參考座標系。

項目

說明

屬性

源(Source)

指定要轉換的矢量的當前座標系。這可以是以下其中一項:全局(World)、局部(Local)或切線(Tangent)。

目標(Destination)

指定要將矢量轉換到的目標座標系。這可以是以下其中一項:全局(World)、視圖(View)、局部(Local)或切線(Tangent)。

Transform(轉換)節點會對鏡像 UV 加以考慮,例如,以使凸顯僅影響人物的右側邊緣。

對於生成全局空間法線以便對立方體貼圖進行取樣,Transform(轉換)節點非常有用。法線貼圖可轉換到全局空間。以下示例將法線轉換到全局空間,以便對立方體貼圖進行取樣:

TransformExample1.png

將法線轉換到視圖空間可用於創建邊緣效果。這可通過使用網格法線生成紋理座標(通常稱爲“球面映射”)來實現。使用這種方法,正對着攝像機的法線將映射到紋理座標的中心,而垂直於攝像機的法線將映射到紋理座標的邊緣。以下是球面映射示例:

SphereMapTestTexture.png

值爲 (0,0,1) 的 Constant3Vector(常量 3 矢量)輸送到設置了 TRANSFORM_View 的 Transform(轉換),接着將結果傳遞到 ComponentMask(分量蒙版)(僅傳遞 R 和 G)。因爲 Transform(轉換)將輸出 -1 到 1 範圍內的值,我們必須使這些值偏離以使其處於 0-1 範圍內。實現方法是乘以 0.5 再加上 0.5。然後,直接將結果連接到紋理的“座標”(Coordinates)。任何紋理都有效;我建立了包含三個環形的紋理,以使效果明顯。

SphereMapTestTexture.png

要將此效果與法線貼圖配合使用,只需將 Constant3Vector(常量 3 矢量)替換爲法線貼圖紋理。

在以下示例中,將此球面映射材質應用於團狀岩石網格:

SphereMapRockExample.png

由於插值器受限制,VertexColor(頂點顏色)與 Transform(轉換)節點互斥。如果您同時使用 Transform(轉換)節點和 VertexColor(頂點顏色),那麼 VertexColor(頂點顏色)的結果爲全白色。

目前,Transform(轉換)節點無法正確處理不一致的比例縮放。

TransformPosition(轉換位置)

建議您不要使用此節點,因爲用於偏離原始位置派生全局位置時,會產生嚴重的精度問題!請改爲使用 WorldPosition(全局位置)節點。

TransformPosition(轉換位置)表達式可將屏幕空間中的任何位置轉換到表達式的 TransformType 變量所指定的目標空間。目前只支持轉換到全局空間。此表達式可用來獲取材質中的全局空間座標。要顯現全局位置,您可以將它直接連接到“自發光”(Emissive):

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