On this page |
時間とフレーム ¶
Mayaで時間が変更される度に、Houdini Engineでもその新しい時間で更新されます。
つまり、アセットは時間を使用することができて時間依存にさせることができます。
注意してほしいのは、Houdiniでは フレーム1 が 0秒 なのに対してMayaでは フレーム0 が 0秒 であることです。
プラグインは、Houdini Engineのフレーム番号とMayaのフレーム番号が一致するように時間を設定します。
つまり、Houdiniの$F
は、Mayaでも同じフレーム番号として評価されます。
しかしこれでは、Mayaに対してHoudiniの$T
が1フレームずれることになります。
Mayaの時間単位(フレーム/秒)もHoudiniに渡されます。 これは、ダイナミクスシミュレーションなど、評価に秒単位の時間を使用するアセットには重要です。
時間依存の入力 ¶
アセットは時間依存にすることができます。 アセットの入力ジオメトリはアニメーションさせることができ、アセットパラメータもアニメーションさせることができます。
Houdini Engineは、Pushの仕組みを使用して、MayaからHoudini Engineに入力ジオメトリやアセットパラメータを渡すように設計されています。 Houdini Engineを通して現行フレームでアセットを評価する前に、現行フレームの入力ジオメトリとアセットパラメータがHoudini Engineに渡されます。 アセットの評価中では、アセットはMayaからの追加データを要求することができません。 そのため、アセットは現行フレームのデータにしかアクセスできません。
現行フレームのアセットを評価する時、ほとんどのアセットは現行フレームからの入力データしか使用しないでしょうから、このPushの仕組み下では正しく評価が行なわれることでしょう。 しかし、もっと高度なアセットでは、アセットに他のフレームからの入力ジオメトリやアセットパラメータにアクセスする必要があるノードやエクスプレッションが含まれている場合があります。 これらのノードやエクスプレッションの観点からすると、Mayaからの入力ジオメトリとアセットパラメータはすべてのフレームにおいて静的であると判断されて、これらのノードやエクスプレッションは正しい結果を生成しないことでしょう。
この制限に該当する可能性のある一部のノードは簡単に想像が付きます:
-
timeshift
SOP -
timewarp
SOP -
timeblend
SOP
これらのノードは、他のフレームのジオメトリを使用して現行フレームの出力を生成することが特徴です。
そのため、この制限に該当するのは明らかです。
しかし、そこまで明白でないノードもあります。
例えば、Trail
SOPを Compute Velocity モードで使用する場合でも適切な出力を生成するのには他のフレームからのジオメトリを必要とします。
もう1つの分かりにくい例として、rop_geometry
やrop_alembic
といったROPノードを使用して、フレームシーケンスを出力する場合が挙げられます。
ROPノードがフレームシーケンスをレンダリングするには、複数のフレームからの入力ジオメトリにアクセスする必要があります。
この場合、Maya側で考えられる回避策は、スクリプトを使用してフレーム範囲を反復させて、各フレームのジオメトリを1つずつレンダリングすることです。
これにより、ROPノードは、入力ジオメトリが使用できるフレームのみを書き出すようになります。
また、この制限は、Mayaから時間依存の入力にアクセスする場合にのみ適用されることにも注意してください。 時間依存のデータがアセット内部から生成される場合、ノードとエクスプレッションは、制限なしで自由に時間依存のデータにアクセスすることができます。
Cache SOPを使用した回避策 ¶
Cache SOP
でこの問題を回避することができます。
Cache SOP
をアセットに追加して、複数のフレームで入力ジオメトリノードをキャッシュ化します。
Note
Houdini Engineを通してキャッシュ化を適切に機能させるには、 Clear Cache When Change Upstream オプションを無効にする必要があります。
Cache SOP
が他のフレームから適切なジオメトリを出力するには、Mayaも順々に再生する必要があります。
タイムラインをスクラブすると、スクラブ中に一部のフレームが評価されず、不適切な結果になることがあります。
Cache Any Frame オプションはMayaからは正しく動作しないようなので、このオプションの設定は現在推奨されていません。 代わりに、フレーム範囲をHDAパラメータにエクスポートして、Mayaからキャッシュ化するフレーム範囲を制御できるようにします。 これにより、(1回アニメーションを再生して)すべてのフレームがキャッシュ化された後、フレームのスクラブが機能するようになります。
Mayaからの入力ジオメトリはアセットでキャッシュ化されるため、キャッシュがクリアされるまで、残りのアセットでジオメトリの更新を行なえない場合があります。 必要に応じてキャッシュを明示的にクリアできるように、 Clear Cache ボタンをアセットにプロモートすることができます。