Vector マテリアル表現式

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

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

ActorPositionWS

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

Actor Position WS expression

この例では、ActorPositionWS がマテリアルの基本カラーへ直接渡されています。その結果、マテリアルが適用されたオブジェクトは、3D 空間の異なる場所に移動すると、それぞれ異なる色を示すようになります。ActorPositionWS ノードの結果が 1600 で割られることで、突然のポップではなく、美しいブレンド イン カラーを作り出していることに注目してください。

CameraPositionWS

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

この例では、カメラ位置がマテリアルの基本カラーへ渡されています。カメラの位置が変わると、プレビュー の球の色が変わることに注意してください。

CameraVectorWS

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

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

Camera Vector example

Constant2Vector

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

プロパティ

説明

R

式で出力するベクターの赤色の (最初の) チャンネルの浮動小数値を指定します。

G

式で出力するベクターの緑色の (2 番目の) チャンネルの浮動小数値を指定します。

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

使用例: UV 座標には 2 チャンネルの値が必要であるため、Constant2Vector はテクスチャ スケールやオフセットの修正に役立ちます。

Constant2Vector Example

マテリアル グラフ内で 2 キーを押しながら マウスを左クリック すると、Constant2Vector ノードをすばやく作成できます。

Constant3Vector

Constant3Vector 式では 3 チャンネルのベクター値、つまり 3 つの定数を出力します。Constant3Vector は、それぞれのチャンネルに色 (赤色、緑色、青色) が割り当てられたソリッドな RGB カラーの定義によく使用されます。マテリアル グラフ内で Constant3Vector ノードをダブルクリックすると、色を設定するダイアログが呼び出されます。

プロパティ

説明

R

式で出力するベクターの赤色の (最初の) チャンネルの浮動小数値を指定します。

G

式で出力するベクターの緑色の (2 番目の) チャンネルの浮動小数値を指定します。

B

式で出力するベクターの青色の (3 番目の) チャンネルの浮動小数値を指定します。

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

この例では、Constant3Vector を Texture Sample で乗算することでテクスチャの色合いを変更します。

Constant3Vector Example

マテリアル グラフ内で 3 キーを押しながら マウスを左クリック すると、Constant3Vector ノードをすばやく作成できます。

Constant4Vector

Constant4Vector 式では 4 チャンネルのベクター値、つまり 4 つの定数を出力します。Constant4Vector は、それぞれのチャンネルに色 (赤色、緑色、青色、アルファ) が割り当てられた RGBA カラーの定義に使用できます。

プロパティ

説明

R

式で出力するベクターの赤色の (最初の) チャンネルの浮動小数値を指定します。

G

式で出力するベクターの緑色の (2 番目の) チャンネルの浮動小数値を指定します。

B

式で出力するベクターの青色の (3 番目の) チャンネルの浮動小数値を指定します。

A

式で出力するベクターのアルファ (4 番目の) チャンネルの浮動小数値を指定します。

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

次の例では、Constant4Vector 式を使ってマテリアルの Base ColorOpacity が定義されています。上のピンは RGB カラーを出力し、下のピンではアルファ チャンネルの値を出力します。アルファ値を「0.5」に設定すると、マテリアルが半透明になります。

Constant4Vector Example

マテリアル グラフ内で 4 キーを押しながら マウスを左クリック すると、Constant4Vector をすばやく作成できます。

LightVector

Deferred Decal マテリアルおよびデカール アクタと共に使用すると、Light Vector マテリアル式は、デカールの座標空間のデカール プロジェクション ボックスに相対する現在のピクセルの正規化された (0 から 1 の範囲の) 位置を表すベクトル (RGB) データを出力します。

LightFunction マテリアルと共に使用する場合、LightVector マテリアル式は、ライトの座標空間で、ライトからピクセルへのベクトルを表すベクトル (RGB) データを出力します。

他のマテリアル ドメインでは LightVector 式は使用されません。

LightVector マテリアル式は、Deferred Decal または LightFunction マテリアル ドメインでのみ使用する必要があります。

LightVector マテリアル式を使用して、ディファード デカールの線形減衰効果を作成することができます。下のグラフには、デカールと受信サーフェス間のブレンドの深度とフォールオフを制御する 2 つのパラメータがあります。

結果は以下のとおりです。

Object Bounds

Object Bounds 式は、マテリアルが適用されたオブジェクトの大きさを各軸ごとに出力します。この式は、XY および Z 軸を表す float3 を出力します。このノードが Base Color へ接続されると、軸はそれぞれ R、G、B に対応します。

Object Bounds graph

以下の動画で、オブジェクトが各軸上でスケールされるとマテリアルがどのように変化するのか注目してください。

ObjectOrientation

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

Object Orientation expression

ObjectPositionWS

ObjectPositionWS 表現式は、オブジェクト範囲のワールド空間の中心位置を出力します。下の画像の球体は、空間内の異なる位置に移動すると、それぞれ異なる色で表示されます。RGB のカラー チャンネルは、レベル内の X 軸、Y 軸、Z 軸に対応しています。このノードは、フォリッジの球状のライティングを作成するときに便利です。

Object Position Expression

ParticlePositionWS

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

Particle Position WS example

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

PixelNormalWS

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

Pixel Normal WS Example

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

Pre-Skinned Local Normal

Pre-Skinned Local Normals ベクター表現式は、スケルタルおよびスタティックメッシュのローカル サーフェス法線を表現する 3 つのチャンネル ベクター値を出力します。これにより、ローカルにアライメントされた 3 平面マテリアルや、マテリアルのメッシュ アライメント効果を実現することができます。

この例では、下のマテリアルは、メッシュの局所的な表面法線に整列した 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 として使用される環境マップで一般的に使用されます。これにより、物理的な環境と一致しない任意の反射をマテリアル上に作成することができます。また、反射ベクターを使用して、Surface TranslucencyVolume または Surface ForwardShading が有効になっていない半透明なマテリアル上に低負荷の偽の反射を作成することも可能です。

Fake translucent reflections

VertexNormalWS

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

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

Vector Noise

Vector_Noise_Example.png

Vector Noise マテリアル表現式は、マテリアル内で使用する 3D あるいは 4D ベクター ノイズ結果をさらに追加します。これらの関数はランタイムに負荷がかかるため、レンダー ターゲット機能を使って計算のすべてまたは一部をテクスチャにベイクすることをお勧めします。

これらの Material Graph 表現式は、外部ツールでプロシージャルに生成されたテクスチャを作成する代わりに、エンジン内の最終アセットでプロシージャルの外観を開発することを可能にします。以下は、Vector Noise マテリアル表現式に含まれる Vector Noise タイプです。

画像

アイテム

説明

Cellnoise

Cellnoise

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

Perlin 3D noise

Perlin 3D Noise

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

Perlin Gradient

Perlin Gradient

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

Perlin Curl

Perlin Curl

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

Voronoi Noise

Voronoi

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

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

Stone blend example

Perlin CurlPerlin 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 のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル