Vector Operation 表現式

ベクター入力値の演算を実行する表現式

Windows
MacOS
Linux

AppendVector

AppendVector 表現式は、チャンネルを結合して、オリジナルよりも多いチャンネルでベクターを作成することができます。例えば、 2 つの個別の Constants 値を受け取り、2チャンネルの Constant2Vector 値を作成するためにこれらをアペンドします。単一テクスチャ内でチャンネルの再順序付けをしたり、複数のグレースケール テクスチャを 1 つの RGB カラーテクスチャに結合する際に役立ちます。

アイテム

説明

入力

A

追加する値を受け取ります。

B

追加される値を受け取ります。

例: 0.2 と 0.4 のアペンドは、 (0.2、0.4) 、(0.2、0.4) と (1.0) のアペンドは (0.2、0.4) です。

AppendVectorExample.png

ComponentMask

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

アイテム

説明

プロパティ

R

チェックされると、赤 (最初の) チャンネルの入力値が出力へ渡されます。

G

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

B

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

A

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

例: ComponentMask に (0.2,0.4,1.0) を入力すると G チャンネルから (0.4) が出力されます。これをカラー ベクターで使うと 40% 明るいグレースケール値として表示されます。

ComponentMaskExample.png

CrossProduct

CrossProduct 表現式は、3 チャンネルのベクター値の 2 つの入力値の外積を計算し、結果として 3 チャンネルのベクター値を計算します。空間に 2 つのライン (またはベクター) が与えられ、外積は両方の入力に対して垂直なライン (またはベクター) となります。

項目

説明

入力

A

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

B

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

使用例: CrossProduct は、しばし 2 つの反対方向に垂直な方向を計算します。

DeriveNormalZ

DeriveNormalZ 表現式は、 X と Y コンポーネントが入力されてタンジェント空間法線の Z コンポーネントを派生し、結果として 3 チャンネルのタンジェント空間法線を出力します。Z は、「Z = sqrt(1 - (x * x + y * y));」として演算されます。

アイテム

説明

入力

InXY

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

DeriveNormalZExample.png

DotProduct

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

項目

説明

入力

A

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

B

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

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 表現式は、これらのベクターをタンジェント空間からワールド空間、ローカル空間、またはビュー空間の座標系への変換を可能にします。また、ワールド空間ベクターとローカル空間ベクターを他の参照座標系への変換も可能にします。

アイテム

説明

プロパティ

Source

変換するベクターのソースとなる現在の座標システムを指定します。ワールド、ローカル、またはタンジェントのいずれかになります。

Destination

変換するベクターの送り先となる現在の座標システムを指定します。ワールド、ビュー、ローカル、またはタンジェントのいずれかになります。

Transform ノードは、ミラー化された UV を構成するため、例えば、キャラクターの右端のみに影響を及ぼすハイライトなどを有効にします。

Transform ノードは、キューブマップのサンプリングに使用するワールド空間法線の生成に実用的です。法線マップはワールド空間へ変換することができます。以下は、キューブマップをサンプリングするために法線マップをワールド空間へ変換した例です。

TransformExample1.png

真横向き効果を作成するために、法線マップをビュー空間へ変換します。これはテクスチャ座標の生成にメッシュ法線を使用して実行します (一般的に「スフィア (球状) マッピング」と呼ばれます) 。この手法は、カメラに直接対向している法線をテクスチャ座標の中心にマッピングし、カメラに垂直に対向している法線をテクスチャ座標の端にマッピングします。これはスフィア マッピングの例です。

SphereMapTestTexture.png

値 (0、0、1) が入力された Constant3vector は、 TRANSFORM_View が設定された Transform ノードへ入力されます。その後 ComponentMask ノードを通過します (R と G のみを通過)。Transform ノードは、 -1 から 1 の範囲の値を出力するため、値を 0 から 1 の範囲にするバイアスをかけなくてはいけません。バイアスをかけるには、 0.5 で乗算してその後 0.5 を加算します。そしてテクスチャの座標へ接続します。どのテクスチャにも機能します。 3 つのリングで実行してみましたが、効果は明らかです。

SphereMapTestTexture.png

この効果を法線マップへ適用するには、 Constant3Vector を法線マップテクスチャと置き換えます。

これは、ブロブのようなロック形状のメッシュへ適用された球状マップマテリアルの例です。

SphereMapRockExample.png

**制限付き補間が原因で、 VertexColor と Transform ノードは相互排他的な関係にあります。Transform ノードと VertexColor を両方使用すると、 VertexColor は全て白色になります。

Transform ノードは現時点で不均一なスケーリングを正確に処理しません。

TransformPosition

オリジンから離れたワールドポジションの派生に使用すると、主要な精密性に問題が発生するためこのノードは廃止される予定です。代わりに WorldPosition ノードを使用してください。

TransformPosition 表現式は、スクリーン スペースから式の TransformType 変数で指定された変換先へ、どんなポジションの変換も有効にします。現時点では、ワールド空間への変換のみをサポートしています。この表現式は、マテリアルのワールド空間座標の取得に使用します。ワールド空間を可視化するには、エミッシブへ直接接続します。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback