Utility マテリアル表現式

1 つ以上の入力で様々なユーティリティ演算を行うためのマテリアル表現式です。

Utility Material Expressions は、普通とは少し異なる、様々な方法でマテリアルに影響を及ぼすことができるノードです。たとえば、GIReplace ノードはオブジェクトの間接バウンス カラーを入力した任意の値に置き換えます。また、Linear Interpolate ノードは 2 つのテクスチャ間のブレンドを Alpha 入力に応じて行いやすくします。このページでは、マテリアル エディタで使用できる Utility Expression をすべて細かく説明します。

AntialiasedTextureMask

AntialiasedTextureMask 表現式は、ソフト (アンチエイリアス化) 遷移マスクを使用したマテリアルを作成します。マスクは 2 つの複雑なマテリアル プロパティのブレンドや、アルファブレンドされたマテリアル (SoftMasked と相性が良い) のフェードアウトに使用します。チャンネル (赤、緑、青、アルファ) で特定されたマスクと共にテクスチャを指定し、使用チャンネルを表現式に設定し、比較値を特定します。チャンネルが 0 = 黒から 1 = 白の範囲でグレースケール値を格納するとすれば、比較機能はマスクが 0 か 1 かを決定します。表現式はパラメータなので、Texture プロパティは子の MaterialInstances によってオーバーライドされます。

アイテム

説明

プロパティ

Threshold

ピクセルの範囲内でカットオフ ポイントとして使用した値を指定します。ピクセル範囲の値がカットオフ ポイントより下なら黒、上なら白表示となります。

Channel

マスクとして使用するテクスチャのチャンネルを特定します。

Texture

使用するマスク テクスチャを特定します。

入力値

UVs

テクスチャ マスクに適用するテクスチャ座標を受け取ります。

Pseudo code:

    Result = 1
    if TextureLookup < Threshold then Result = 0

実際の実装は、エイリアスを避けるため、ピクセル範囲に応じて戻り値が 0 から 1 の間になるので非常に複雑です。

例 (この小さな 128 x 128 テクスチャは最高のクオリティを保つため圧縮されていません):

ULogoLowBlurred.png

ノーマル テクスチャとして使用 (Before) 、説明したマテリアル式で使用 (After)

AAMasked_Demo.png

この技術は、拡大やブラー コンテンツの入力に最適です。圧縮すると品質が悪くなるので、非圧縮低解像度のテクスチャを使用してください。

BlackBody

BlackBody の式は、マテリアル内の black body radiation のエフェクトをシミュレーションする式です。ユーザーが温度 (ケルビン単位) を入力すると、その結果得られるカラーと強度を使用して Base Color (基本色) と Emissive (発光色) の値を操作し、物理的に正確な結果を得ることができます。

Blackbody Expression

BumpOffset

BumpOffset は Unreal Engine 4 用語であり、一般的に知られている「視差マッピング」のことを指します。Bump Offset 表現式は、ジオメトリを追加することなく深度の錯覚を与えることができます。BumpOffset マテリアルは、グレースケールの高さマップを使用して深度情報を与えます。ハイトマップの値が明るいほどマテリアルが「飛び出し」、カメラがサーフェスを移動するとその領域は視差 (シフト) します。ハイトマップの暗い領域は「遠く離れた」部分で、ほとんどシフトしません。

アイテム

説明

プロパティ

HeightRatio

ハイトマップ から渡された深度の乗数です。値が大きいほど、深度が極端になります。通常は 0.02 から 0.1 の範囲です。

ReferencePlane

エフェクトを与えるために、テクスチャ領域の高さの概算を指定します。値を 0 にするとテクスチャが完全に表面から離れて歪んだ表示となり、0.5 (デフォルト値) にすると表面に部分的な凹凸が発生します。

入力値

Coordinate (座標)

表現式で変更するベースのテクスチャ座標を受け取ります。

Height (高さ)

高さマップとして使用するテクスチャ (または値) を受け取ります。

HeightRatioInput

高さマップから渡された深度の乗数です。値が大きいほど、深度が極端になります。通常は 0.02 から 0.1 の範囲です。この入力を使用すると、Height Ratio プロパティのすべての値に置き換わります。

Bump Offset Expression

ConstantBiasScale

ConstantBiasScale 表現式は入力値を受け取り、バイアス値を加算して、スケーリング係数を掛けて結果を出力します。例えば入力データを [-1,1] から [0,1] へ変換する場合、バイアス値に 1.0 、スケーリング係数に 0.5 を使います。

アイテム

説明

プロパティ

Bias

入力に加算される値を特定します。

Scale

バイアスがかかった結果の乗数を特定します。

Constant Bias Scale Expression

DDX

DDX 表現式は DDX 派生の計算を公開します。ピクセル シェーダーの計算で使用される GPU ハードウェア機能です。

DDY

DDY 表現式は DDY 微分係数の計算を公開します。ピクセル シェーダーの計算で使用される GPU ハードウェア機能です。

DepthFade

DepthFade 表現式は、半透明オブジェクトが不透明なオブジェクトと交わった時に生じる目障りな継ぎ目を非表示にする際に使用します。

アイテム

説明

プロパティ

Fade Distance

フェードが発生するワールド空間です。FadeDistance 入力が非接続時に使用されます。

入力値

Opacity

深度がフェードする前にオブジェクトに対して既存のオパシティを受け取ります。

FadeDistance

フェードが発生するワールド空間の距離です。

深度フェードなし

深度フェードあり

この例のマテリアル ネットワークは以下の画像のとおりです。

Depth Fade Material Graph

DepthOfFieldFunction

Depth of Field Function 表現式によって、被写界深度によってぼやけたマテリアルをアーティストが調節することができます。0 から 1 の値を出力します。0 は「ピントがあっている」、1 は「完全にぼやけている」ことを表します。例えば、テクスチャーの鮮明なバージョンとぼやけているバージョンを補間する際に便利です。深度の入力によって、シーンの被写界深度の既存の計算結果を他の計算でオーバーライドすることができます。

![ブレンドカラー]Blended Colors

通常テクスチャとぼやけたテクスチャのブレンド

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

Desaturation

Desaturation 表現式は特定の割合に基づいて、入力の彩度を下げるか、入力の色をグレーの濃淡に変換します。

アイテム

説明

プロパティ

Luminance Factors

各チャンネルが彩度の低い色に寄与する量を指定します。これによって、彩度を落とした場合は、緑は赤よりも明るく、また青よりも赤のほうが明るくなるように制御されます

入力

Fraction (割合)

入力に適用するデサチュレーション量を特定します。割合の範囲は 0.0 (完全なオリジナルカラー、彩度は全く落とさない から 1.0 (完全に彩度を落とす)) です。

Desaturation Example

プログラマー向け: 彩度の低い色である D、入力カラー I、luminance factor (輝度係数) L を定義できます。出力は、「O = (1 - Percent)*( D.dot( I )) + Percent * I」になります。

Distance

Distance 表現式は 2 つのポイント、カラー、位置、ベクターの (ユークリッド) 距離間を計算し、その結果の値を出力します。これは 1、 2、 3、 4 つのコンポーネントベクターに機能しますが、表現式への両入力値が同数のチャンネルを持っていなくてはいけません。

アイテム

説明

入力値

A

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

B

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

カメラ距離が増えるにつれて色が変化する様子に注意してください。

Pseudo code:

    Result = length (A - B)

Low level HLSL code:

    float Result = sqrt (dot (A-B, A-B))

DistanceFieldGradient

DistanceFieldGradient 表現式ノードは、ノーマライズされるとオブジェクトが距離フィールドを移動する X、Y、Z 方向を出力します。 このような理由で、Distance Field Gradient マテリアル表現式ノードは液体の流れのシミュレーションが必要なマテリアルに最適です。

この表現式を正しく使うためには、Project Settings (プロジェクト設定)][Rendering (レンダリング)][Generate Mesh Distance Fields (メッシュ ディスタンス フィールドを生成)] を有効にする必要があります。

アイテム

説明

Position

何も入力がない場合は現在のワールド位置がデフォルトになります。

これは、マテリアル内で DistanceFieldGradient マテリアル表現式を使う方法の例です。 下の例では、DistanceFieldGradient が最初にノーマルライズされて、その後に Mask Channel ノードにつながれていることに注目してください。 最初に DistanceFieldGradient をノーマライズしないと指向性データを取得できないためです。 マテリアル インスタンス内で RGB チャネル スイッチを簡単に切り替えられるように Mask Channel パラメータが追加されています。

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

これは動作中の DistanceFieldGradient の例です。 下の画像は、各種 RGB が有効にされている時に DistanceFieldGradient が使用するデータを表しています。

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

番号

説明

1

R チャンネルが有効、その他のすべてのチャンネルは無効。

2

G チャンネルが有効、その他のすべてのチャンネルは無効。

3

B チャンネルが有効、その他のすべてのチャンネルは無効。

DistanceToNearestSurface

Distance To Nearest Surface マテリアル表現式ノードは、マテリアルがレベルのどのポイントでも Global Distance Field のサンプリングができるようにします。 DistanceToNearestSurface は、ワールド スペース単位で符号付きで距離を距離フィールドからシーンの中で最短距離にあるオクルーダへ出力することで機能します。

この表現式を正しく使うためには、Project Settings (プロジェクト設定)][Rendering (レンダリング)][Generate Mesh Distance Fields (メッシュ ディスタンス フィールドを生成)] を有効にする必要があります。

アイテム

説明

Position

何も入力がない場合は現在のワールド位置がデフォルトになります。

これは動作中の Distance To Nearest Surface (最も近いサーフェスまでの距離)] の例です。

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

DistanceNearSurface_02.png

この例では、Distance To Nearest Surface はマテリアル上の Opacity 入力へ接続され、そのマテリアルはレベルフロアの真上に配置されているスタティック メッシュ プレーンに適用されます。 Distance To Nearest Surface は、カラー領域に対してのみシーンに配置された他のスタティック メッシュと交差を開することをマテリアルに命令します。

FeatureLevelSwitch

Feature Level Switch ノードで、性能が低めのデバイス向けに単純化したマテリアルを作成することができます。

使用例:10 個のテクスチャがオーバーラップして計算が複雑なマテリアルもありますが、モバイルの場合は静的なテクスチャが 1 つだけです (機能レベル ES2)。

入力

説明

Default

デフォルトの Feature Level です。

ES2

コア性能が OpenGL ES2 で定義された Feature Level です。

ES3.1

コア性能が Metal-level デバイスで定義された Feature Level です。

SM4

コア性能が DX10 Shader Model 4 で定義された Feature Level です。

SM5

コア性能が DX11 Shader Model 5 で定義された Feature Level です。

Fresnel

Fresnel は、表面法線の内積とカメラの方向に基づいてフォールオフを計算します。表面法線が直接カメラに向いている時、0 の値が出力されます。表面法線がカメラに垂直に向き合っている時は、1 の値が出力されます。結果は [0,1] にクランプされるため、真ん中にネガティブカラーを持ちません。

アイテム

説明

プロパティ

Exponent

出力値がどれくらいの速さでフォールオフするかを特定します。値が大きいと、ぴんと張った、または素早いフォールオフになります。

Base Reflect Fraction

表面をまっすぐ見た場合のスペキュラ反射の割合を特定します。値 1 で Fresnel エフェクトを事実上無効にします。

入力値

ExponentIn

出力値がどれくらいの速さでフォールオフするかを特定します。大きな値はぴんと張った、または素早いフォールオフを意味します。使用すると、値は常に Exponent のプロパティ値にとって代わります。

Base Reflect Fraction

表面をまっすぐ見た場合のスペキュラ反射の割合を特定します。値 1 で Fresnel エフェクトを事実上無効にします。使用すると、値は常に Exponent のプロパティ値にとって代わります。

Normal

ワールド空間でサーフェスの法線を表す 3 チャンネルのベクター値を受け取ります。Fresnel オブジェクトの表面に適用された法線マップの結果を見るには、法線マップをマテリアルの Normal の入力に接続し、次に以下の表現式を Fresnel のこの (PixelNormalWS](designing-visuals-rendering-and-graphics/materials/material-expressions/vector#PixelNormalWS) 入力に接続します。法線が何も指定されないと、メッシュのタンジェント法線が使用されます。

Fresnel Example

GIReplace

GIReplace によりアーティストは、マテリアルを GI に使用中に、通常はより単純な別の表現式チェーンを指定することができます。

使用例:Lightmass スタティック GI と LPV ダイナミック GI で使用します。

入力

説明

Default

デフォルトの GI です。

StaticIndirect

焼き付けられた間接ライティングに使用します。

DynamicIndirect

焼き付けられた動的な間接ライティングに使用します。

LightmassReplace

LightmassReplace 表現式は、通常のレンダリング目的のマテリアル コンパイル時に Realtime 入力を通過し、グローバル イルミネーション処理の際にマテリアルを Lightmass へエクスポートする時、 Lightmass 入力を通過します。これは、WorldPosition のようなエクスポートされたバージョンが正常に処理されない際など回避策として有益です。

入力

説明

Realtime

通常のレンダリング処理のため通過する値を受け取ります。

Lightmass

マテリアルを Lightmass へエクスポートする際に通過する値を受け取ります。

LinearInterpolate

LinearInterpolate 表現式はマスクに使用された第 3 の入力値に基づいて 2 つの入力値をブレンドします。これは Photoshop のレイヤーマスクのように、2 つのテクスチャ間のトランジションを定義するマスクのようなものです。マスク アルファの輝度は、二つの入力値から受け取るカラーの割合を決定します。アルファ値が 0.0 の場合は、最初の入力値が使用されます。アルファ値が 1.0 の場合は、2 番目の入力値が使用されます。アルファ値がグレイ (0.0 と 1.0 の間) の場合、出力値は 2 つの入力値のブレンドになります。ブレンドはチャンネル毎に処理されることにご注意ください。アルファ値が RGB カラーの時、アルファの赤のチャンネル値によって A と B の赤のチャンネル間のブレンドが定義されます。これは、 A と B の緑のチャンネルの間のブレンドを定義する、アルファの緑のチャンネルとは 別になります

アイテム

説明

プロパティ

Const A

この値は (0.0) にマッピングされます。この A の入力が未接続の場合に限り使用されます。

Const B

この値は白 (1.0) にマッピングされます。 B の入力が未接続の場合に限り使用されます。

Const Alpha

マスク アルファとして使用する値を受け取ります。アルファ入力が未接続の場合に限り使用されます。

入力値

A

黒 (0.0) にマッピングされた値を受け取ります。

B

白 (1.0) にマッピングされた値を受け取ります。

Alpha

マスク アルファとして使用する値を受け取ります。

プログラマー: LinearInterpolate はパラメータのアルファ値に基づいて A と B の間の各チャンネルの lerp (Linear Interpolate 線形補間) を実行します。

Lerp Example

Noise

Noise 表現式は、生成方法について制御できるプロシージャルなノイズ フィールドを作成します。

アイテム

説明

プロパティ

Scale

ノイズ セルの全体的なサイズを変更します。値が低いほどノイズは大きくなります。

Quality

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

Function

関数

説明

Simplex

Texture Based

直接使用およびバンプ処理で高い品質。1 レベルあたりの命令数 約 77、テクスチャ ルックアップ数 4、タイル処理は不可。

Gradient

Texture Based

直接使用およびバンプで高い品質。タイル処理なしモード (Non-tiled): 1 レベルあたりの命令数は約 61、テクスチャ ルックアップは 8。タイル処理モード (Tiling): 1 レベルあたりの命令数は約 74、テクスチャ ルックアップは 8。「タイル処理なし」モードにしても、繰り返し数は 128。繰り返すと便利な回数 <= 128。以前は Perlin Noise とラベルされていました。

Fast Gradient

3D Texture

直接使用では高品質、バンプには 向きません。常に繰り返し数 16 のタイル処理なので、Fast Gradient ノイズのオプションに "Tiling" モードはありません。

Gradient

Computational

直接使用およびバンプで高品質。タイル処理なしモード (Non-tiled): 1 レベルあたりの命令数は約 80、テクスチャなし。タイル処理モード (Tiling): 1 レベルあたりの命令数は約 143、テクスチャなし。

Value

Computational

低品質、ただし純粋演算処理。タイル処理なしモード (Non-tiled): 1 レベルあたりの命令数は約 53、テクスチャなし。タイル処理モード (Tiling): 1 レベルあたりの命令数は約 118、テクスチャなし。以前は間違えて Gradient ノイズとラベルされていました。

Voronoi

Worley あるいは Cellular ノイズとも呼ばれています。Quality=1 で 8 セルを検索、Quality=2 で 16 セルを検索、Quality=3 で 27 セルを検索、Quality=4 で 32 セルを検索検索された 1 つのセルの命令数は 20。

Turbulence

オンにるすと、各ノイズのオクターブは絶対値のみ結果に追加します。視覚的な特徴を変更し、形状を山の背のようにすることができます。

Levels

異なるスケールで結合する異なるレベル数です。演算負荷にレベル数を乗算します。

Output Min

ノイズ計算によって出力される最低値です。

Output Max

ノイズ計算によって出力される最高値です。

Level Scale

常にアクティブで、それぞれの新規のオクターブのスケール変更量を決定します。

Tiling

サポート対象のノイズ関数の場合、ノイズにタイル処理ができるようにします。負荷が高くなりますが、ノイズをシームレスにラップするテクスチャにベイクする場合に便利です。

Repeat Size

タイリングの際のノイズの繰り返し回数です。

入力値

Position

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

FilterWidth

実際にノイズ テクスチャにどの程度のブラーを適用するかを制御します。

Noise Example

Previous Frame Switch

Previous Frame Switch マテリアル表現式は、テンポラル アンチエイリアシングおよびモーション ブラーと正しく動作するように正確なモーション ベクターを生成するために、マテリアルで実装されている複雑な 頂点アニメーション をサポートします。

時間の関数だけのマテリアルは修正せずに既に機能していますが、実行時にマテリアル パラメータなどアニメーションに影響を与える他の変数を構成するこはできません。Previous Frame Switch マテリアル表現式はパラメータがどのように変化するかを追跡することでこの問題を手動で解決する手段を提供します。たとえばブループリントでは、フレーム間の World Position Offset の変化によって生じるモーション ベクター生成の表現式を与えることができます。

この表現式を正しく使うためには、Project Settings (プロジェクト設定)] の [Rendering (レンダリング)] で頂点変数からベロシティを有効にする必要があります。

  • 4.24 以降のバージョンでは Accurate velocities from Vertex Deformation を使用します。

  • 4.25 以降のバージョンでは Output velocities from vertex deformation を使用します。

アイテム

説明

Current Frame

開始位置の参照として使用する指向性ベクターです。

Previous Frame

ブラーの追加量の XYZ 参照として使用する指向性ベクターです。

これは、マテリアルにおける Previous Frame Switch マテリアル表現式の使用例です。

Previous Frame Switch

この例では、Previous Frame Switch が Multiply ノード経由で定数値を使って指向性ブラーを調節しています。

この例をみると、エピックの開発した Fortnite などのゲームにおいて、オンスクリーンで集まった頂点アニメーションでモーション ブラーをこの表現式でどのように調節しているかが分かります。 右側のアニメーションは Previous Frame Switch を使ってモーション ブラーを追加しています。左側は使っていません。

ビューポートの表示フラグ

[Show] > [Visualize] > [Previous Frame's Reprojection (前のフレームの再投影)] にあるエディタ ビューポートの表示フラグを Previous Frame Switch と使用すると、現在と前のフレームとの矛盾を診断して修正することができます。

Previous Frame Reprojection Show Flag

有効にすると、現在のフレームの色と前のフレームの色を比較し、2 つのフレームの差を返します。差がゼロの場合、ビューポートではマテリアルがグレーで表示されます (左の写真)。方向ベクトルが一致しない場合、マテリアルは色のついたオーバーレイを表示します (右の写真)。

Previous Frame Reprojection example

QualitySwitch

QualitySwitch 表現式は、よりローエンドのデバイス上で低いクオリティを使用するなどエンジンが異なるクオリティ レベルで切り替わった場合に、異なる表現式ネットワークを使用できるようにします。

入力

説明

Default

デフォルトのビジュアル クオリティ用にデザインされたネットワークに対して使用される入力です。

Low

ビジュアル品質設定が低めのネットワークに使用する入力です。

High

ビジュアル品質設定が高めのネットワークに使用する入力です。

RotateAboutAxis

RotateAboutAxis 表現式は回転軸、軸の点、回転角度に与えられた 3 チャンネルのベクター入力値を回転させます。簡素なシアよりも高い品質の WorldPositionOffset を使用しているアニメーションで役立ちます。

入力

説明

NormalizedRotationAxis

オブジェクトが回転する軸を表す正規化された (0-1) ベクターを受け取ります。

RotationAngle

回転の角度。値 1 は 360 度全体の回転角度を表します。

PivotPoint

オブジェクトが回転する回転軸を表す 3 チャンネルのベクターを受け取ります。

Position

オブジェクトの位置を表す 3 チャンネルのベクターを受け取ります。RotateAboutAxis 表現式が作成されると、 WorldPosition 表現式が自動的に作成され、この入力に接続されます。

Rotate About Axis

上記の例ではプレビューの平面が表示され、垂直軸上での回転のように見えます。

SphereMask

SphereMask 表現式は、距離計算に基づきマスク値を出力します。ある入力が点の位置で、その他の入力がある範囲を伴う球のセンターの場合、マスク値はトランジションエリア内の外側に 0 で内側に 1 となります。これは 1、 2、3、4 つのコンポーネントを持つベクターで機能します。

アイテム

説明

プロパティ

Attenuation (減衰) Radius

距離の計算に使用する半径を指定します。

Hardness (硬化) Percent

トランジション エリアのサイズを指定します。これは Photoshop のブラシの硬さの値のような働きをします。0 は遷移が硬いことを表し、 100 は遷移エリアが最大限 (柔らかい) ことを意味します。

入力値

A

チェックするポイントの位置を表す値を受け取ります。

B

球の真ん中を表す値を受け取ります。

カメラがある距離を通過するまでは 1 を出力し、通過後は 0 を出力します。

Thin Translucent

Thin Translucent Material Output 式は、物理ベースの透過マテリアルを単一のパスで正確に表現します。これにより、ライトとシェーディングに正確に反応するティントまたは色付けされた透明性があるマテリアルなど物理ベースの透明性があるマテリアルを正確に表現することができます。

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

着色ガラス マテリアルを作成する場合、白いスペキュラ ハイライトを追加しそれを背景に色付けする必要があります。これらは、空気からガラスとガラスから空気への光のバウンスを考慮した物理ベースのシェーダを使用して、単一パスでレンダリングします。

標準の透過シェーディングモード

Thin Translucent Shading Model

[Material Details] パネルで以下を設定して、Thin Translucent マテリアル出力を有効にします。

  • Blend Mode: Translucent

  • Shading Model: Thin Translucent

  • Lighting Mode: Surface ForwardShading

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