On this page |
概要 ¶
USDタイムサンプル ¶
デフォルトでは、Houdiniは現在のフレームのみをインタラクティブにクックします。通常はこれで問題ありません。 Solarisでは、アニメーションを付けるノードがUSDタイムサンプルを作成しますが、これは現在のフレームにのみ作成されます。 しかし、モーションブラーをレンダリングするには、1個のタイムサンプルでは不十分です。 USDは、作成されたタイムサンプル間では線形補間しか対応していないので、急速に変化するモーションをレンダリングする場合は、多数のサブフレームサンプルが必要になります。
Note
Houdini20.0以降、Karmaは内部的には回転をクォータニオンとして表現しています。 つまり、ある程度十分なモーションブラーを得るのには、USDでそれほど多くのサンプルを作成する必要が 必ずしもありません 。
モーションブラーの品質を向上させるには、次のノードを使用して、タイムサブサンプルを追加および管理します。
|
十分なタイムサンプルを作成する最も簡単な方法。 このノードをKarma Render Settingsの後に追加すると、そのレンダー設定で設定されたカメラを使用して、シャッターフレーム全体をブラーするのに十分なタイムサンプルが自動的にキャッシュ化されます。 |
|
|
現在のフレーム周辺で、または、タイムライン全体で、タイムサンプルをキャッシュするのに便利です。 このノードは、サブフレームサンプリングの管理も制御できます。 |
|
|
中に埋め込まれているUSD ROPを使用して、インラインかつファイルベースでUSDファイルをディスクにキャッシュ化します。 |
|
|
理想は十分なサンプルを持つPrimをエクスポートすることですが、それができない場合には、このノードを使用して、USDの既存のアニメーショントランスフォームに基づいてサブフレームサンプルを作成します。 このようにすると、プロペラなどの回転するオブジェクトにスムーズな回転ブラーを生成することができます。 |
ボリュームはUSDに直接格納されないため、時間とともにボリュームを変化させるには、タイムサンプル毎に異なるボリュームアセットパスをアニメーションさせなければなりません。 タイムサンプル毎に個別のボリュームファイルが必要です。
Cooking Houdini Time Samples Efficiently
Solarisでは、Houdiniの時間依存により、特にSOPから、予想よりずっと大きいオーバーヘッドが生じることがあります。 アニメーションが付いたLOPノード、または、アニメーションが付いたSOP Importがある場合は、ネットワーク内でそれらのノードの後にCache LOPまたはFile Cache LOPを追加してください。 これにより、アニメーションがないLOPノードは、フレームが変更される度ではなく、1回だけクックされるようになります。
Cache/File Cacheノードの追加よりもさらに効果的なのは、Sampling Behaviorの設定です。 特定のLOPノードは、1回のクックで複数のタイムサンプルの作成に対応しています。 このため、エクスプレッションやキーフレームを持つ単一のLOPノードにCache LOPを使用するより、何倍も高速になる可能性があります。 この方法では、カメラPrimのシャッター設定を使用して、必要なタイムサンプルだけを作成します。 詳細については、Sampling Behaviorを参照してください。
モーションブラーの基本 ¶
ジオメトリPrimに2個以上のタイムサンプルが存在する場合、Karmaはトランスフォームまたはジオメトリのモーションブラーをレンダリングします。 Karmaレンダー設定の Motion Samples from Stage はデフォルトで有効になっているため、トランスフォームおよびジオメトリのモーションブラーにはシャッターフレーム全体ですべてのタイムサンプルが使用されます。 つまり、USDに十分なタイムサンプルがあれば、通常はTransformおよびGeometry Time Samplesを調整しなくても、よりスムーズなモーションブラーを得ることができます。
Houdini20.0以降、Karmaは内部的にはトランスフォームをクォータニオンとして表現しています。 これによって、KarmaはアーティストがUSDでさほど多くのタイムサンプルを作成する必要なく、回転を滑らかに補間できるようになりました。
Render Geometry Settings LOPを使用すると、Karmaのモーションブラー設定をプリミティブ毎に設定することができます。 これにより、画像全体のレンダリングを低速にすることなく、計算処理の重いモーションブラー設定が必要なシーン内のオブジェクトをターゲットにすることができます。
Note
ジオメトリおよびトランスフォームサンプルを手動で設定するには、Render Settings Editノードを追加して Motion Samples from Stage を無効にします。
トランスフォームブラー ¶
プリミティブおよびカメラのアニメーションされたリジッドトランスフォームは、モーションブラーを生成します。 デフォルトでは、Karmaはモーションを補間するのに2個以上のサンプルを必要とします。 サンプル数を増やすと、非常に高速なモーションでも適切なブラーが得られます。
USDおよびHydraは、タイムサンプル間では線形補間しか対応していません。 ほとんどの場合これで問題ありませんが、高速回転するプリミティブを正確にブラーするには、多数のサブフレームタイムサンプルが必要になる可能性があります。 理想は十分なサンプルを持つPrimをエクスポートすることですが、それができない場合には、Resample Transforms LOPを使用します。 USDの既存のトランスフォームアニメーションを使用してサブフレームサンプルを作成することで、プロペラなどの回転するオブジェクトがスムーズに回転するようになります。
Transform Blur Properties
Motion Samples From Stage
Karmaは、明示的にモーションサンプルを選択する代わりに、USDステージ上で作成されたサンプルに基づいたモーションサンプルを選択することもできます。 このオプションは、ステージ上で記述されたモーションをキャプチャするためにまったく正しいサンプル数を選択します。
この設定は、ジオメトリとインスタンスの両方に対して、トランスフォームモーションサンプルと変形モーションサンプルの両方に適用されます。
Note
ステージ上のサンプルがカメラのシャッター時間と合っていない場合、最初と最後のセグメントで小さな補間問題が発生する可能性があります(モーションが補間されるというより、切り捨てられるため)。
Transform Time Samples
シャッターオープン時間に対して トランスフォーム モーションブラーをレンダリングする時に計算するサンプル数。 デフォルトは2サンプル(シャッター時間の開始と終了)で、1つのセグメントにブラーがかかります。
極端に速く移動したりと方向を変更するオブジェクトの場合、サブフレームでの方向の変更を取り込むためにサンプル数を上げる必要があります。
上図の例では、1フレーム内で発生した複雑な動きを正しくレンダリングするために40個のトランスフォームサンプルが必要です(1フレーム内でのこの変化量は、非常に稀で、説明をするために使用しただけです)。
トランスフォームブラーは、各オブジェクトのフレーム間のトランスフォームを補間することでブラーをシミュレーションしているので、計算が軽いですが、サーフェス変形を取り込みません。 変形ジオメトリのブラーを有効にするには、karma:object:geosamplesを上げます。
ジオメトリ/変形ブラー ¶
Primのpoints
アトリビュートを時間の経過とともに変形することで、ジオメトリブラーを生成します。
ジオメトリブラーにはトランスフォーメーションブラーが乗算されます。
ジオメトリブラーを機能させるには、USDで複数のタイムサンプルが必要であり、ポイント数はサンプル間で変更できません。
Note
USDでは、points
は単精度のアトリビュートです。(xformOps
などの)トランスフォームは倍精度です。
Geometry Blur Properties
Motion Samples From Stage
Karmaは、明示的にモーションサンプルを選択する代わりに、USDステージ上で作成されたサンプルに基づいたモーションサンプルを選択することもできます。 このオプションは、ステージ上で記述されたモーションをキャプチャするためにまったく正しいサンプル数を選択します。
この設定は、ジオメトリとインスタンスの両方に対して、トランスフォームモーションサンプルと変形モーションサンプルの両方に適用されます。
Note
ステージ上のサンプルがカメラのシャッター時間と合っていない場合、最初と最後のセグメントで小さな補間問題が発生する可能性があります(モーションが補間されるというより、切り捨てられるため)。
Geometry Time Samples
シャッターオープン時間に対して 変形 モーションブラーをレンダリングする時に計算するサブフレームのサンプル数。 デフォルトは1サンプル(シャッター時間の開始のみのサンプル)で、デフォルトでは変形ブラーは ありません 。 高速に変形するジオメトリを適切にブラーさせたい場合、この値を2以上に上げなければなりません。
Note
この値は、レンダリングされるUSDファイルで利用可能なサブサンプル数で制限されます。 この例外で許可されているのは、USD Skelデフォーマです。
“Deformation”は、ジオメトリ(SOP)レベルでトランスフォームだけを参照したり、キャラクタやフレームに応じて形状が急速に変化するオブジェクトなどの実際のサーフェス変形を参照することができます。
1フレーム内で複雑に変形するオブジェクトには、Geo Time Samplesの数を上げる必要があります。
変形ブラーは、シャッター時間内の アトリビュート値の変化 もブラーさせることができます。
例えば、オブジェクトが移動した時にポイントカラーが急変化する場合、そのCd
アトリビュートにブラーをかけることができます。
Geo Time Samplesの数を上げると、Karmaの使用メモリ量に 影響を与えてしまします 。 サンプル数が増える度に、Karmaはシャッター時間の間にサンプリングしている間はメモリ内にそれだけのジオメトリのコピーを維持しなければなりません。 レンダリングを最適化する時、滑らかなモーションの軌跡を生成するのに必要な最低限のGeo Time Samplesを調べることは良い考え方です。
Velocity Motion Blurが有効なオブジェクトでは、変形ブラーは無視されます。
Velocity/加速度ブラー ¶
時間とともに変化するパーティクルやメッシュトポロジの場合、Velocityアトリビュートを追加すると、ブラーを直接生成することができます。
velocities
アトリビュートが使用可能な場合、Karmaは単にポイントをそのアトリビュートの方へブラーします。
Karmaは、より自然に見える加速度ブラーにも対応しています。
Karmaは、ポイントをvelocities
ベクトルに沿って線形にブラーするのではなく、accelerations
を使用して円弧沿いにブラーします。
Karmaは、ジオメトリタイムサンプルの数を使用して、パスを複数のセグメントに分割します。
モーションブラーを非線形にするには、3個以上のサンプルが必要です。
サンプルが2個の場合、Velocityブラーと同じ結果になります。
Note
加速度ブラーではジオメトリタイムサンプルが必要なため、 Motion Samples from Stage は無視されます。
Velocity Blur Properties
Velocity Blur
このパラメータでは、オブジェクトに対して実行する ジオメトリVelocityブラー のタイプを選択することができます。 トランスフォームブラー や 変形ブラー とは別に、時間と共に変化するポイントに保存されたアトリビュートを使って、ポイントの動きに応じたモーションブラーをレンダリングすることができます。 ジオメトリ内のポイント数が時間と共に変化する場合(例えば、ポイントが誕生したり死亡するパーティクルシミュレーション)、このタイプのブラーを使用してください。
フレーム間でジオメトリのトポロジーが変化する場合、Karmaはジオメトリを補間できなくて正しくモーションブラーを計算できなくなります。
そのような場合、元のジオメトリが変化しても整合性のあるvelocities
やaccelerations
のアトリビュートをモーションブラーに使用することができます。
流体シミュレーションのサーフェスがまさにそのよい例です。
この場合と他のタイプのシミュレーションデータでは、ソルバが自動的にVelocityアトリビュートを作成します。
Note
Solarisでのvelocities
、accelerations
、angularVelocities
のアトリビュートは、SOPではそれぞれv
、accel
、w
に相当します。
No Velocity Blur
レンダラーでモーションブラーを許可するように設定しても、このオブジェクトに対してモーションブラーをレンダリングしません。
Velocity Blur
Velocityブラーを使用するには、ポイントVelocityを計算して、それをvelocities
Pointアトリビュートに保存しなければなりません。
レンダラーは、このアトリビュートが存在すれば、それを使用してVelocityモーションブラーをレンダリングします(レンダラーがモーションブラーのレンダリングを許可するように設定されていることが前提です)。
シミュレーションノード(例えばパーティクル系DOPs)は自動的にvelocities
アトリビュートを生成します。
他にも、Point Velocity SOPを使ってVelocityを計算して追加することができます。
velocities
アトリビュート値の単位は、1秒あたりのHoudiniユニットです。
Acceleration Blur
加速度ブラーを使用するには、ポイント加速度を計算して、それをaccelerations
Pointアトリビュートに保存しなければなりません。
レンダラーは、このアトリビュートが存在すれば、それを使用して複数セグメントの加速度モーションブラーをレンダリングします(レンダラーがモーションブラーのレンダリングを許可するように設定されていることが前提です)。
シミュレーション系ノードは自動的にaccel
アトリビュートを生成することができます。
他にも、Point Velocity SOPを使って加速度を計算して追加することができます。
Acceleration Blurがオンの時、ジオメトリに 角速度 アトリビュート(w
)が存在すれば、急回転にもブラーがかかります。
これは、ベクトルアトリビュートであり、各コンポーネントは、X、Y、Z軸を基準とした1秒あたりのラジアンの回転速度を意味しています。
これを“Velocity Blur”または“Acceleration Blur”に設定すると、変形ブラーがオブジェクトに適用されなくなります。 これを“Acceleration Blur”に設定すると、karma:object:geosamplesプロパティを使用して、加速度サンプルの数を設定することができます。
ポイントインスタンス ¶
Instance Velocity Blurは、ポイント上にインスタンス化されたジオメトリのモーションブラーを制御します。
これは、Velocityブラーの動作とよく似ています。
Karmaは、インスタンス化されたポイント毎にvelocities
とaccelerations
を使用して、Velocityブラーと加速度ブラーを生成します。
ただし、インスタンス化されたモーションブラーには独自のサンプル制御である Instance Motion Samples があります。
Instance Velocity Blur Properties
Instance Velocity Blur
インスタンスに対してモーションブラーを定義すると、プロトタイプで発生するモーションブラーだけでなく、各インスタンスのトランスフォームにもブラーをかけることができます。 このオプションは、各インスタンスのトランスフォームのモーションブラーの計算方法を制御します。 例えば、プロトタイプをパーティクルシステム上にインスタンス化した場合、Velocityブラーを使用してモーションブラーを計算したいことでしょう(パーティクル上のVelocityによってプロトタイプのトランスフォームにブラーがかかるようになります)。
No Velocity Blur
インスタンスの変形ブラーを使用して、トランスフォームのブラーを計算します。
Velocity Blur
Velocityブラーを使用したいのであれば、そのインスタンスは、ポイント上にVelocityアトリビュートが含まれたポイントインスタンサーである必要があります。
velocities
アトリビュート値の単位は、1秒あたりのHoudiniユニット長です。
Acceleration Blur
Accelerationブラーを使用したいのであれば、そのインスタンスは、ポイント上にVelocityアトリビュートとAccelerationアトリビュートが含まれたポイントインスタンサーである必要があります。
レンダラーは、(存在すれば)このアトリビュートを使用して、複数セグメントのアクセラレーションモーションブラーをレンダリングします(レンダラーでモーションブラーが有効になっている場合)。
accel
アトリビュートはシミュレーション系ノードで自動的に作成されますが、Point Velocity SOPを使用して加速度を計算してaccel
アトリビュートを追加することもできます。
このaccel
アトリビュートは、SOPジオメトリがUSDに変換された時にaccelerations
に変換されます。
Instance Motion Samples
Accleration Blur または Deformation Blur を使用してインスタンスのモーションブラーを計算する場合、このパラメータには、そのモーションブラーで使用されるモーションセグメントの数を指定します。