UDN
Search public documentation:

WorldPositionOffsetJP
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

World Position Offset

ドキュメント概要: マテリアル エディタ の WorldPositionOffset 入力の使用方法に関する情報。

ドキュメントの変更ログ: Daniel Wright により作成。

概観

この機能は QA_APPROVED_BUILD_NOV_2009 (2009 年 11 月 QA 承認ビルド) で追加されました。しかしながら、QA ビルドに間に合わなかった修正が数多くあり、これは、次のビルドに反映されます。World Position Offset は、アーティストが頂点ワールド位置をマテリアル エディタで変更できるようにします。これにより、異なるタイプのオブジェクトの任意の変形エフェクトやカスタム アンビエント アニメーションが可能となります。

どのように機能するか

World Position Offset 入力にプラグインされるものはすべて、頂点の位置に追加されます。例えば、以下のノードは、常に移動する正弦波をメッシュの Z 軸に作成し、その頂点を X 軸でオフセットします。

WorldPositionOffsetNodes.jpg

以下が、柱のメッシュに適応されたそのマテリアルのエフェクトです。
WorldPositionOffset.jpg

複雑なものを作成しようとする前に、ベクトル演算関数と幾何学を復習するのが良いでしょう。以下が、いくつかの便利なページです。
http://en.wikipedia.org/wiki/Trigonometric_functions
http://en.wikipedia.org/wiki/Euclidean_vector

頂点シェーダ

World Position Offset マテリアル入力は、頂点シェーダで実行されます。これは、ピクセル シェーダで適応される他のすべての既存のマテリアル入力とは異なります。マテリアル エディタで公開される数多くの マテリアル ノード は、頂点シェーダで動作せず、テクスチャ検索に関連するものに関しては特にそうです。これらのノードは、"Invalid node used in vertex shader input! (頂点シェーダ入力に無効なノードが使用されています!)" というエラーを通知します。すべての演算関数は、WorldPosition や VertexColor、Time や ObjectPosition などのほとんどの定数と動作可能です。

頂点シェーダでの操作の結果は、頂点のみが変形されるので、メッシュのテッセレーションが重要となってきます。これは、上の画像で見ることができます。

World Position Offset に何かをプラグすると、マテリアル エディタが左上に頂点指示を表示することに注目してください。これで、どれぐらいコストのかかる頂点シェーダを作成しているかをトラックすることができます。

便利なマテリアル表現式

これらのノードのすべての説明は、 マテリアル要約 を参照してください。

頂点ごとに変化する入力

ワールド位置は、頂点間の変化を追加するのに便利で、一例として、草の生えた野原に風が吹いているシーンがあります。頂点カラーは、メッシュの異なるパートに任意のウェイトを適用するのに便利です。 Mesh Paint (メッシュ ペイント) ツール を使用して、頂点影響をペイントして、これらによりアニメーションに影響を与えることさえできます。良いアプローチとしては、葉ごとの正弦波段階を変更するような葉の束ごとに異なる色を持ち、各頂点がどれぐらい動くことができるか、ウェイトするのに他のチャンネルにペイントすることです。QA_APPROVED_BUILD_DEC_2009 (2009年12月QA承認ビルド)以降で、 WorldNormal ノードは、頂点のワールドスペース法線へのアクセスにも使用できます。

頂点ごとで一定の入力

WindDirectionAndSpeed は、レベル内に配置されているあらゆる wind (風) アクタからの風のパラメータを取得するのに便利です。これは、ランタイム時に変更することができます。ObjectWorldPosition は、オブジェクトごとに変化を追加するのに便利です。もちろん Time は、時間に渡る手続き型アニメーションに便利です。

パフォーマンスの考慮

World Position Offset は、頂点シェーダ コードを生成し、これは、頂点ごとに 1 回実行されます。Vertex シェーダ指示カウントは、ノードを接続した状態と接続していない状態を比較することにより、どれぐらいの指示を追加しているかをトラックすることができます。実際の影響を知るには、対象となるプラットフォームにレベルをセットアップし、 PerfHUDJP または PIX のようなツールを使用して World Position Offset ありとなしでプロファイルします。

制限

World Position Offset は、CPU 上で頂点位置にアクセスするようなものとは動作しません。つまり、Decals やシャドウ ボリューム、そしてその他のいくつかのエフェクトは、正常にレンダリングしないということです。また、衝突を変化させたり、物理に影響を与えたりしません。これは、純粋に視覚的エフェクトのみなので、この方法で大きなオフセットをせずに、代わりに物理を使用するのが良いでしょう。

注意 - オブジェクトの境界の外で位置をオフセットすることは、レンダリング アーチファクトの原因となります。 Show Bounds (境界を表示) フラグ表示を有効化し、エディタ内でオブジェクトを選択することで、カリングに使用されている境界を見ることができます。