このセクションでは、さまざまなシェーダータイプがモーションベクトルの計算でサポートするモーションタイプについて説明します。
モーションベクトルは、アルファクリップされたマテリアルを含めて、不透明なマテリアルに対してのみサポートされます。透明マテリアルに対するモーションベクトルはサポートされません。
URP のシェーダー Lit、Unlit、Simple Lit、Complex Lit、Baked Lit は、以下のモーションタイプのオブジェクトごとのモーションベクトルをサポートします。
特定のマテリアルに対して Alembic モーションベクトルを有効にするには、マテリアル Inspector の Advanced セクションで Alembic Motion Vectors チェックボックスをオンにします。
ノート: Alembic Motion Vectors チェックボックスが有効になっているマテリアルを使用する場所は、PlayableDirectors コンポーネントでレンダリングされる Alembic 頂点アニメーションキャッシュに限ります。このようなマテリアルは、通常のドローコールや MeshRenderer で使用すると、正しいモーションベクトル属性ストリームを読み取ることができないため、モーションベクトルが不正確になります。
URP Shader Graph Lit と Unlit のターゲットは、URP ShaderLab シェーダー セクションに記載されているすべてのモーションベクトル機能をサポートします。さらに、それらの Additional Motion Vectors 設定には、以下のオプションがあります。
Time-Based: Time ノードの現在と前のフレーム値を使用して、頂点位置サブグラフを 2 回実行することで、Shader Graph 頂点アニメーションのモーションベクトルが自動的に生成されます。このモードが正しく機能するのは、Time ノードに基づいて連続的に計算され、フレーム間で変化しないユーザー定義パラメーター (定数、属性、バッファ、テクスチャ) のみを使用する頂点アニメーションに限られます。
Custom: このオプションを選択すると、余分な モーションベクトル 頂点出力が追加されます。この出力を使用して、カスタムオブジェクトのモーションベクトルを指定できます (前のフレームでの各頂点の位置からの 3D ローカルオブジェクト空間オフセット)。前のフレームでの頂点位置の計算方法がわかっている場合は、頂点アニメーション用のカスタムモーションベクトルを作成できます。Unity は、カスタムモーションベクトルを Transform モーション、スケルタルアニメーション、Alembic アニメーションに追加で適用してから、モーションベクトルを最後の 2D スクリーンスペースベクトルに投影します。
None: デフォルト値です。シェーダーが頂点出力を変更しない場合や、頂点デフォーメーションをアニメーション化しない場合には、このオプションを使用します。
Time-Based オプションと Custom オプションで、MotionVectors がマテリアルを渡すことができます。オブジェクトのモーションベクトルパスは、オブジェクトの Transform がフレーム間で静止している場合でも、MotionVectorGenerationMode プロパティが Camera に設定されていない限り、すべてのフレームでレンダリングされます。