UDN
Search public documentation:
MaterialFunctionsJP
English Translation
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
UE3 ホーム > マテリアルとテクスチャ > マテリアル関数
マテリアル関数
概要
マテリアル関数とは、パッケージの中に保存することができ、複数のマテリアルの中で再利用できるマテリアル図式の小片のことです。 普通のマテリアルと同じように、これらの関数はマテリアルエディタで編集しますが、使用できるノードには制限があります。適切に用いると、不要な重複を避けることができるため、アーティストが重複した表現式の同期を取るというメンテナンス上の作業が減ることになり、重複した片方の表現式が改変中に失われた場合に発生する避けがたいバグも減ることになります。関数の基本と簡単な設定
関数は、マテリアルとまったく同じようにコンテンツブラウザで作成します。何もない場所を右クリックして、New Material Function (新たなマテリアル関数) を選択します。 関数は、function input (関数の入力) と output (出力) によって、関数が使用されるマテリアルへのインターフェースを定義します。(この input と output は、関数の中に配置するノードです)。input と output には名前を付けて、マテリアルでその関数を使用する人々によってそれらの意味が理解されるようにすることができます。関数が有効になるには、少なくとも 1 個の output が必要です。また、input と output の名前は一意である必要があります。


反映
関数を編集し、変更の [Apply] (適用) をクリックすると、ロードされているあらゆるマテリアルとその関数を参照するあらゆる関数に、新しいバージョンが反映されます。この関数を参照するマテリアルがロードされていない場合は、次回ロードされたときに、その変更に関して更新されることになります。 input または output が関数から削除され、その変更が反映されると、この関数を使用するマテリアル内において、これらの削除されたコネクタへのあらゆるリンクが破壊されます。 この反映はやり直しがきかないため、このことに注意すべきです。関数が使用されるマテリアルが増えれば、その分だけリンクが破壊される可能性が高くなります。注意してください。 関数を使用するすべてのロード済みマテリアルは、関数の変更が伝えられた際、ダーティとしてマークされます。これは、どのパッケージを再保存するかを判断するために使用され、ロード時間の増加を防ぎます。関数を使用するロード済みマテリアルをすべて調べるには、コンテンツブラウザ内で右クリックして、次のオプションを選択します。
整理
関数は、少数の人が作成して、多数の人によって使用されるのが普通です。したがって、関数が実行する内容、および iput、output に必要となる値についてドキュメント化することが大切なこととなります。このような理由により、関数には、関数名と input、output 名以外に、ドキュメンテーション入力フィールドがいくつかあります。- Function description (関数の説明) - 空いているところをクリックして、関数のプロパティ (Description (説明) が置かれています) を表示します。 1 つの description フィールドだけに入力する場合は、これにしてください! 入力された内容は、関数が表示される場所であればどこでも (コンテンツブラウザ、マテリアル関数ライブラリ、関数呼び出しノード)、ツールチップとして表示されることになります。
- Input / output descriptions (入力 / 出力の解説) - これらは、関数の input および output 上に位置しています。これらは、関数呼び出しノードの input および output 上にカーソルを乗せると、ツールチップとして表示されることになります。


Material function library (マテリアル関数ライブラリ)
マテリアルエディタには、Material function library (マテリアル関数ライブラリ) というウインドウがあります。このウインドウには、使用可能なマテリアル関数のリストが、分類されフィルタリング可能な状態で含まれています。このリストには、ロード済みのあらゆる関数がエントリされます。さらに、ロードされていないものの、コンテンツブラウザによって使用されている コンテンツブラウザデータベース を通じて発見された関数もエントリされます。

プレビュー
マテリアル関数を編集しているとき、プレビューウインドウには、どのノードがプレビューされているかが示されます。ほとんどの場合、function output をプレビューしなければならないはずです。


パラメータ
関数は、パラメータノードのタイプを含むことができません。これは、同じ名前を宣言している他の関数との間で名前コンフリクトを起こす可能性があるからです。ただし、input を通じて値を渡すことによって、パラメータを使用することができます。関数とともにベクターまたはスカラーのパラメータ値を使用するには、その値を関数の input ベクター型として渡します。 関数とともにテクスチャパラメータを使用するには、下図のように、Texture の input を作成して、それを、Texture Sample ノードにあるテクスチャオブジェクトのオーバーライドに接続します。



関数関連のノード
- MaterialFunctionCall (マテリアル関数呼び出し) - 他のマテリアルまたは他の関数からの外部関数を使用できるようになります。外部関数の input および output ノードは、関数呼び出しノードの input および output になります。
- FunctionInput (関数 input) - 関数の input の 1 つを定義するマテリアル関数内にのみ、配置することができます。
- FunctionOutput (関数 output) - 関数の output の 1 つを定義するマテリアル関数内にのみ、配置することができます。
- TextureObject (テクスチャオブジェクト) - 関数内部のテクスチャ関数 input のためにデフォルトのテクスチャを供給するのに役立ちます。このノードは、実際にテクスチャをサンプリングするわけではありません。したがって、TextureSample ノードとともに使用する必要があります。
- TextureObjectParameter (テクスチャオブジェクトパラメータ) - テクスチャパラメータを定義するとともに、テクスチャオブジェクトを output します (これはテクスチャ input をもつ関数を呼び出すマテリアル内で使用されるものです)。このノードは、実際にテクスチャをサンプリングするわけではありません。したがって、TextureSample ノードとともに使用する必要があります。
- StaticSwitch (静的なスイッチ) - input の値に基づき、2 つの input からコンパイル時間の選択を行います。
- StaticBool (静的な bool) - 関数内にある static bool 関数 input のために、デフォルトの bool 値を供給するのに役立ちます。このノードは、何もスイッチしません。そのため、StaticSwitch ノードとともに使用する必要があります。
- StaticBoolParameter (静的な bool パラメータ) - static bool パラメータを定義し、static bool 値を output します (これはstatic bool input をもつ関数を呼び出すマテリアル内で使用されるものです)。このノードは、何もスイッチしません。そのため、StaticSwitch ノードとともに使用する必要があります。
高度な使用
関数はネスティング (関数の内部に関数を置くこと) させ、自由につなげることが可能です。ただし、循環依存関係とならないようにしなければいけません。 関数内でコンパイルエラーが起きると、関数を使用するマテリアル内で、MaterialFunctionCall (マテリアル関数呼び出し) ノードが赤く強調表示されます。エラーメッセージには、どの関数でエラーが発生したかについても表示されます。次の例では、関数の input が接続されていないというエラーが起きています。

