ベクター演算のマテリアル式

ベクター入力値の演算を行うマテリアル式

AppendVector

AppendVector 式を使用すると、複数のデータ チャンネルを組み合わせて、元のベクターよりもチャンネル数が多いベクターを作成できます。たとえば、2 つの単一チャンネルの Constant 値を受け取って、それらを追加し、1 つの 2 チャンネルの Constant2Vector を作成します。AppendVector は、単一のテクスチャ内にある複数のチャンネルの順序を変更する場合や、複数のグレースケール テクスチャを組み合わせて 1 つの RGB カラー テクスチャにする場合に便利です。

入力

説明

A

データの追加先となる 1 つまたは複数の値を受け取ります。

B

A に追加される 1 つまたは複数の値を受け取ります。

AppendVector は入力の順序どおりに機能します。つまり、入力 B のデータが入力 A のデータの末尾に追加されます。次の例には、個別の 2 つの Append 演算があります。最初に 0.20.4 がまとめられて 2 チャンネルのベクター (0.2, 0.4) になっています。2 つ目の Append ノードでは、定数値 1 が (0.2, 0.4) の末尾に追加されています。最終的な結果は 3 チャンネルのベクター (0.2, 0.4, 1) です。この例では、その値を 1 つの RGB 値として使用して、マテリアルのベースのカラーが定義されています。

AppendVector Example

ComponentMask

ComponentMask 表現式を使用すると、入力からチャンネルの特定のサブセット (R、G、B、および/または A) を選択して、出力に渡すことができます。入力が単一の定数値でない限り、入力に存在しないチャネルを渡そうとするとエラーが発生します。この場合、単一の値が各チャンネルに渡されます。渡すために選択された現在のチャンネルは、式のタイトル バーに表示されます。

マテリアル グラフにある ComponentMask 式を選択し、[Details (詳細)] パネル のプロパティにあるチェックボックスを使用して、出力に渡すことができるチャンネルを選択します。

Component Mask Details properties

プロパティ

説明

R

チェックされている場合、入力値の赤 (最初のチャンネル) が出力に渡されます。

G

チェックされている場合、入力値の緑 (2 番目) のチャンネルが出力に渡されます。

B

チェックされている場合、入力値の青 (3 番目) のチャンネルが出力に渡されます。

A

チェックされている場合、入力値のアルファ (4 番目) のチャンネルが出力に渡されます。

次の例は、入力が (0.2, 0.4, 1.0) である ComponentMask を示しています。[Details] パネルで G チャンネル のみがオンになっているので、このノードは 0.4 という値を出力します。マテリアルのベース カラー入力に渡されたときに、40% の明るさのグレースケール値として現れます。

Component Mask Example

CrossProduct

CrossProduct 表現式は、3 チャンネルのベクター値の 2 つの入力値の外積を計算し、結果として 3 チャンネルのベクター値を計算します。空間に 2 つのベクターがある場合、外積は両方の入力に垂直なベクターになります。

入力

説明

A

3 チャンネルのベクター値を受け取ります。

B

3 チャンネルのベクター値を受け取ります。

使用例: CrossProduct は、他の二方向に垂直な方向を計算するためによく使用されます。

Cross product example

DeriveNormalZ

DeriveNormalZ 式は、X 成分と Y 成分が与えられているタンジェント空間法線の Z 成分を導出して、結果としての 3 チャンネルのタンジェント空間法線を出力します。Z は Z = sqrt(1 - (x * x + y * y)); として算出されます。

入力

説明

InXY

タンジェント空間法線の X 成分と Y 成分を 2 チャンネル ベクター値の形式で受け取ります。

Derive Normal Z Example

DotProduct

DotProduct 表現式は内積を計算します。これは、一方のベクターの長さを他方に投影したもの、または 2 つのベクター間のコサインに大きさを掛けたものとして計算されます。これは、フォールオフの計算によく使われる手法です。DotProduct では、両方のベクター入力と同じ数のチャンネルが必要です。

入力

説明

A

任意の長さの値またはベクターを受け取ります。

B

A と同じ長さの値またはベクターを受け取ります。

Dot product Material Expression

Normalize

Normalize 表現式は、計算して入力を正規化した値を出力します。正規化されたベクター (「単位ベクター」とも呼ばれます) の全長は 1.0 です。これは、入力の各コンポーネントがベクターの合計の大きさ (長さ) で除算されるということです。

例: Normalize に (0、2、0) または (0、0.2、0) を渡すと、(0、1、0) が出力されます。Normalize に (0、1、-1) を渡すと、(0、0.707、-0.707) が出力されます。唯一の特殊なケースは、すべてベクターがゼロの時で、この場合変化はありません。

正規化された入力ベクター

正規化されていない入力ベクター

法線マテリアル出力にプラグインする表現式に対して正規化する必要はありません。

Transform

Transform マテリアル式は、3 チャンネル ベクター値を別の参照座標系での値に変換します。

デフォルトでは、マテリアルでのすべてのシェーダー計算はタンジェント空間で行われます。ベクター定数、カメラ ベクター、ライト ベクターなどはすべて、タンジェント空間に変換されてからマテリアルで使用されます。Transform 式を使用すると、そのようなベクターをタンジェント空間からワールド空間、ローカル空間、またはビュー空間の座標系に変換できます。また、ワールド空間およびローカル空間のベクターを、他の任意の参照座標系に変換できるようにします。

マテリアル グラフで Transform モードが選択されている場合、以下のプロパティが [Details] パネルに表示されています。

プロパティ

説明

Source

ベクターの変換元である現在の座標系を指定します。指定できるのは World、Local、Tangent のいずれかです。

Destination

ベクターの変換先のターゲット座標系を指定します。指定できるのは World、View、Local、Tangent のいずれかです。

Transform ノードではミラーリングされている UV が考慮されるので、たとえば、ハイライトがキャラクターの右端にのみ影響を及ぼすようにすることができます。

Transform ノードは、キューブマップをサンプリングするためにワールド空間法線を生成するのに便利です。法線マップをワールド空間に変換することもできます。次の例では、キューブマップをサンプリングするために、法線を タンジェント空間 から ワールド空間 に変換しています。

画像をクリックするとフルサイズで表示されます。

法線のビュー空間への変換を使用すると、エッジオン エフェクトの作成に便利です。そうするには、メッシュの法線を使用してテクスチャ座標を生成します (一般には「球面マッピング」と呼ばれる)。この方法では、カメラの正面にある法線がテクスチャ座標の中央にマッピングされ、カメラと垂直な法線がテクスチャ座標の端にマッピングされます。たとえば、Transform 式を使用してブルズアイ テクスチャをマップすると、常にカメラの方を向くようにすることができます。

Bullseye Texture

(0,0,1) の値を持つ Constant3vector は、Tangent Space to View Space に設定された Transform ノードに供給されます。これは、ComponentMask を介して渡されます (R と G のみを渡します)。Transform は -1 から 1 の範囲の値を出力するため、値をバイアスして 0 から 1 の範囲に収めます。これは、0.5 を掛けてから 0.5 を足すことによって行われます。次に、それをブルズアイ テクスチャの座標に差し込むだけです。

Transform edge-on effect

スタティック メッシュの周りを周回するとき、ブルズアイは常にビュー スペースの中心に留まります。Transform ノードの Destination プロパティを View Space ではなく World Space に変更すると、代わりに Z 軸に沿ってテクスチャを投影できます。

インターポレータの数が限られているため、VertexColor は Transform ノードとは併用できません。Transform ノードと VertexColor の両方を使用すると、VertexColor はすべて白色になります。

現時点では、Transform ノードは不均等なスケーリングを正しく処理できません

TransformPosition

TransformPosition 式は、スクリーン空間の任意の位置を、この式の TransformType 変数で指定されている変換先空間に変換できます。現時点でサポートされているのは、ワールド空間への変換のみです。この式を使用して、マテリアルでワールド空間座標を取得できます。ワールド位置を視覚化するには、この式をエミッシブに直接つなぎます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル