Vector 表現式

位置や法線などのベクター値を出力する表現式

Choose your operating system:

Windows

macOS

Linux

このページでは、RGBA にマップされたベクター値を出力するために使用可能な Vector 表現式を紹介します。これらは、キャラクターが指定エリアに入った時にマテリアルがキャラクターの色に反応したり色を変形するためのワールド空間でのオブジェクトの位置の取得など、 マテリアルの作成のための様々なエフェクトに使うことができます。空間のローカル スタイル マテリアル エフェクトを制御する表現式は 他にもあります。

ActorPositionWS

ActorPositionWS は、マテリアルが設定されたオブジェクトのワールド空間の位置を表す 3vector (RGB) データを出力します。

ActorPositionColors.png ActorPositionNetwork.png

この例で、ActorPositionWS がマテリアルの Base Color へ直接入力されている様子が理解できます。結果としてマテリアルが適用されたそれぞれの球は、3D 空間の位置を移動する際に異なった色を表現します。ActorPositionWS ノードの出力結果は、最良なカラーのブレンドを作成するために 1600 で分割されていることに注目してください。

CameraPositionWS

CameraWorldPosition 表現式は、ワールド空間のカメラ位置を表す 3 つのチャンネルのベクター値を出力します。

カメラが回転すると球のプレビュー表示は変化します。

CameraPositionWSExample.png CameraPositionWSNetwork.png

CameraVectorWS

CameraVector 表現式は、サーフェスに対するカメラ方向、つまり、ピクセルからカメラへの方向を表す 3 つのチャンネルのベクター値を出力します。

使用例: CameraVector は多くの場合、CameraVector を ComponentMask に接続して疑似的な環境マップに使用し、テクスチャ座標として CameraVector のX チャンネルと Y チャンネルを使用します。

CameraVectorWSExample.png

Constant2Vector

Constant2Vector は、2 チャンネルのベクター値を出力します。つまり、2 つの定数です。

アイテム

説明

Properties

R

表現式が出力する赤の (最初の) チャンネルの浮動小数点値を指定します。

G

表現式が出力する緑の (2 番目の) チャンネルの浮動小数点値を指定します。

例: (0.4, 0.6), (1.05, -0.3)

使用例: Constant2Vector もまた、2 チャンネルの値なので、テクスチャ座標の修正に実用的です。

Constant2Example.png

2 キーを押してマテリアル エディタのグラフ領域を クリック すると Constant2Vector ノードをすぐに作成できます。

Constant3Vector

Constant3Vector 表現式は、3 チャンネルのベクター値を出力します。つまり、3 つの定数です。RGB カラーは各チャンネルが色に割り当てられる (赤、緑、青) Constant3Vector として考えられます。

アイテム

説明

プロパティ

R

表現式が出力する赤の (最初の) チャンネルの浮動小数点値を指定します。

G

表現式が出力する緑の (2 番目の) チャンネルの浮動小数点値を指定します。

B

表現式が出力する青の (3 番目の) チャンネルの浮動小数点値を指定します。

例: (0.4, 0.6, 0.0), (1.05, -0.3, 0.3)

Constant3Example.png

3 キーを押してマテリアル エディタのグラフ領域を クリック すると Constant3Vector ノードをすぐに作成できます。

Constant4Vector

Constant4Vector 表現式は、4 チャンネルのベクター値を出力します。つまり、4 つの定数です。RGB カラーは各チャンネルが色に割り当てられる (赤、緑、青、アルファ) Constant4Vector として考えられます。

アイテム

説明

プロパティ

R

表現式が出力する赤の (最初の) チャンネルの浮動小数点値を指定します。

G

表現式が出力する緑の (2 番目の) チャンネルの浮動小数点値を指定します。

B

表現式が出力する青の (3 番目の) チャンネルの浮動小数点値を指定します。

A

表現式が出力するアルファの (4 番目の) チャンネルの浮動小数点値を指定します。

例: (0.4, 0.6, 0.0, 1.0), (1.05, -0.3, 0.3, 0.5)

Constant4Example.png

4 キーを押してマテリアル エディタのグラフ領域を クリック すると Constant4Vector ノードをすぐに作成できます。

LightVector

ライティングの演算はディファードで行われるため、この表現式は非推奨です。

Object Bounds

Object Bounds 表現式は、各軸のオブジェクトのサイズを出力します。カラーとして使用すると、X 軸、Y 軸、および Z 軸はそれぞれ R、G、および B に対応します。

ObjectBoundsScene.png ObjectBoundsNetwork.png

上の例では、オブジェクトのカラーがオブジェクトの最長軸に対応していることがわかります。

ObjectOrientation

ObjectOrientation 表現式は、オブジェクトのワールド空間の Up ベクターを出力します。言い換えると、オブジェクトのローカルの正の z 軸はこの方向を向いています。

ObjectOrientationExample.png

ObjectPositionWS

ObjectPositionWS 表現式は、オブジェクト範囲のワールド空間の中心位置を出力します。例えば、フォリッジに球状のライティングを作成する際に便利です。

WorldPositionWSScene.png WorldPositionNetwork.png

ParticlePositionWS

ParticlePositionWS 表現式は、ワールド空間における各パーティクルの位置を表す Vector3 (RGB) データを出力します。

ParticlePositionWS.png

この画像では、 ParticlePositionWS はデータを可視化するためにエミッシブカラーへ送り込まれています。パーティクル システムの機能は、位置に基づいた色の変化方法を表示するようになりました。

PixelNormalWS

PixelNormalWS 表現式は、現法線に基づきピクセルが向いている方向を表すベクターデータを出力します。

PixelNormalWSExample.png

この例では、PixelNormalWS は Base Color へ入力されています。ピクセルごとに結果を表示する法線マップの使用方法に注目してください。

Pre-Skinned Local Normal

Pre-Skinned Local Normals ベクター表現式は、スケルタルおよびスタティックメッシュのローカル サーフェス法線を表現する 3 つのチャンネル ベクター値を出力します。これにより、ローカルで位置合わせした 3 面マテリアルを使って スケルタルメッシュに自動 UV マッピングなどのエフェクトを適用できるようになりました。

この例では、マテリアルはメッシュのローカル サーフェス法線に合わせた 3 面テクスチャを使っています。

画像をクリックしてフルサイズで表示

PreSkinnedTriPlanar.gif

TriPlanarMaterial.gif

Tri-Planar Pre-Skinned Local Normal ベクトル式

Tri-Planar Material

Pre-Skinned Local Position

Pre-Skinned Local Position ベクター表現式は、頂点ごとの出力に使用するスケルタルメッシュのデフォルト ポーズ位置データにアクセスできるように、 3 チャンネル ベクター値を出力します。これにより、アニメートしたキャラクター上での局所的なエフェクトが可能になります。スタティックメッシュと使用することも可能で、 標準ローカル位置を返します。

画像をクリックしてフルサイズで表示

この例では、スケルタルメッシュのデフォルト ポーズが、マッピングおよびデフォルト UV マッピング (右) に使用されています。

PS_LocalPositionMaterial.gif

PS_DefaultMaterial.gif

Pre-Skinned Local Position ベクトル式

スケルタルメッシュのデフォルトの UV レイアウト

ReflectionVectorWS

ReflectionVectorWS 表現式は CameraVectorWS と類似した性質をもっていますが、サーフェス法線上に反射するカメラ方向を表す 3 つのチャンネルのベクター値を出力します。

使用例: ReflectionVector は、反射ベクターの X、Y コンポーネントがキューブマップ テクスチャへの UV として使用される環境マップで一般的に使用されます。

ReflectionVectorWSExample.png

VertexNormalWS

VertexNormalWS 表現式はワールド空間の頂点法線を出力します。WorldPositionOffset など頂点シェーダーで実行するマテリアル入力としてのみ使用することができます。メッシュを拡大または収縮させるのに便利です。法線に沿ってオフセットすると UV のシームに沿ってジオメトリが割れる原因になることに注意してください。

VertexNormalWSExample.png

上の例では、各頂点が各法線方向に移動しているため、プレビューの球体が正弦波の動きで拡大、縮小しているように見えます。

Vector Noise

Vector_Noise_Example.png

Vector Noise マテリアル表現式は、マテリアル内で使用する 3D あるいは 4D ベクター ノイズ結果をさらに追加します。これらの関数はランタイムに負荷がかかるため、外見が決定した後は 4.13 以降で導入された Draw Material to Render Target Blueprint 機能を使って計算のすべてまたは一部をテクスチャにベイクすることをお勧めします。こうしたマテリアル グラフ表現式を使うと、最終アセットでエンジン内でプロシージャルな見た目を決めることができます。外部ツールを使ってプロシージャルに生成したテクスチャを作成し、UE4 のアセットへ適用する代替方法になります。以下は、Vector Noise マテリアル表現式に含まれるタイプです。

画像

アイテム

説明

Cellnoise.png

Cellnoise

3D グリッドの各セルに対してランダムな色を戻します (すなわち、ノード入力に適用される数学的フロア演算から)。結果は常に任意の位置に対して一貫性があるため、高い信頼性でマテリアルにランダム性を加えることができます。この Vector Noise 関数の演算の負荷は非常に低いものです。そのため、パフォーマンス上の理由でテクスチャにベイクする必要はありません。

VectorNoise.png

Perlin 3D Noise

3D グリッドの各セルに対してランダムな色を戻します (すなわち、ノード入力に適用される数学的フロア演算から)。結果は常に任意の位置に対して一貫性があるため、高い信頼性でマテリアルにランダム性を加えることができます。この Vector Noise 関数の演算の負荷は非常に低いものです。そのため、パフォーマンス上の理由でテクスチャにベイクする必要はありません。

GradientNoise.png

Perlin Gradient

スカラー Perlin Simplex Noise の解析的 3D 勾配を計算します。出力は 4 チャンネルです。この場合、最初から 3 つめ (RGB) までは勾配であり、4 つめが (A) スカラー ノイズになります。サーフェス上のバンプとフローマップに適しているノイズ タイプです。

CurlNoise.png

Perlin Gradient

ベクター Perlin Simplex Noise (いわゆる Curl Noise ) の解析的 3D カールを計算します。出力は 3D signed curl vector で、液体やパーティクルのフローに適しています。

VoronoiNoise.png

Voronoi

スカラー Noise マテリアルノードと同じ Voronoi ノイズを計算します。スカラー Voronoi ノイズは 3D 空間でシード ポイントを分散し、最も近いものからの距離を戻します。Vector Noise バージョンは RGB で最も近いシード ポイントの位置を戻し、A でそれに対する距離を戻します。特に Cellnoise と併用すると、ボロノイのセル単位でビヘイビアを一部ランダム化することができます。

以下は、Vector Noise / Voronoi の距離コンポーネントを使って、サーフェスのバンプやクラックの苔のブレンドを調整したシンプルな地面の石のマテリアルです。シードの位置と Vector Noise / Cellnoise を合わせて石毎に色やバンプの高さを変えています。

Stone_Example.png

Perlin Curl と Perlin Gradient は微分係数ベースの演算なので、オクターブでまとめて追加することができます。より複雑な式の微分係数については、表現式の結果の勾配を計算する必要があります。これを行うには、計算する表現式をマテリアル関数に配置し、以下のヘルパー ノードと併用します。

項目

説明

Prepare3DDeriv

四面体パターンの位置オフセットを使用して、3D 微分係数を計算します。この関数で生成されたそれぞれのオフセット位置で同じ 3D 関数を評価してから、結果値を Compute3DDeriv に渡します。

Compute3DDeriv

四面体パターンの位置オフセットを使用して、3D 微分係数を計算します。Prepare3DDeriv と併用します。

GradFrom3DDeriv

Prepare3DDeriv/Compute3DDeriv の結果から 3D グラディエント ベクターを計算します。

CurlFrom3DDeriv

Prepare3DDeriv/Compute3DDeriv の結果から 3D ベクター フィールドのカールを計算します。

これらのヘルパー マテリアル関数は、四面体パターンに配置された式をベースにした 4 つの評価を用いて、微分係数ベースの演算を近似します。

以下は、Vector Noise マテリアル式で使用される各種ノイズ関数と説明です。

アイテム

説明

プロパティ

Function

関数

説明

Cellnoise

3D 空間にあるそれぞれの整数グリッドのランダムな色です。命令数は約 10 です。

Perlin 3D Noise

Perlin ノイズの計算結果を 3D で出力します。各チャンネルの出力は -1 から 1 までです。赤チャンネルのみを使用した場合の命令数は約 83、3 つのチャンネルをすべて使った場合は 125 です。

Perlin Gradient

Perlin Noise 関数の勾配を計算します。RGB 出力には勾配ベクターが含まれています。A が Scalar Noise です。命令数は約 106 です。

Perlin Curl

3D Curl Noise を計算します。Perlin 3D Noise に Curl Noise を計算して出力します。命令数は約 162 です。

Voronoi

アルゴリズムと命令数は Noise 表現式の Voronoi 関数と同じです。ただし、RGB はそれぞれの Voronoi セル内で最も近いシード ポイントの位置になり、そのシード ポイントまでの距離が A となります。

Quality

外観、パフォーマンスを設定します。値が低いと処理は速くなりますが外観が悪くなります。値が高いと処理は遅くなりますが外観が良くなります。

Tiling

ノイズのタイル処理を可能にします。負荷が高くなりますが、ノイズをシームレスにラップするテクスチャにベイクする場合に便利です。

Tile Size

タイリング処理でのノイズ繰り返し数です。Perlin ノイズ変数の場合、Tile Size は 3 の乗数でなければなりません。

入力値

Position

3D ベクターを介してテクスチャ サイズを調整できます。

  • Cell Noise マテリアル サンプル:

    クリックしてフルサイズで表示

  • Perlin Gradient マテリアル サンプル:

    クリックしてフルサイズで表示

  • Voronoi マテリアル サンプル:

    クリックしてフルサイズで表示

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