| On this page |
前項 カメラ
概要 ¶
Karmaのモーションブラーには、USDステージで作成されたタイムサンプルが必要です。 レンダーブラーの品質はレンダリング設定の影響を受けます。
Karmaは、デフォルトでモーションブラーをレンダリングします。 デフォルト設定で、適切なトランスフォームブラーと変形ブラーが得られます。Karmaでモーションブラーがおかしいあるいは生成されない場合、原因はたいていUSDのデータ不足です。
また、デフォルトでは、Karmaは、シャッターフレームにわたって、ステージに作成されたすべてのタイムサンプルを使用してレンダリングします。 この挙動は、 Motion Samples from Stage トグルで制御されます。
USDタイムサンプル ¶
デフォルトでは、Houdiniは現在のフレームのみをインタラクティブにクックします。通常はこれで問題ありません。 Solarisでは、アニメーションを付けるノードがUSDタイムサンプルを作成しますが、これは現在のフレームにのみ作成されます。 しかし、モーションブラーをレンダリングするには、1個のタイムサンプルでは不十分です。 USDは、作成されたタイムサンプル間では線形補間しか対応していないので、急速に変化するモーションをレンダリングする場合は、多数のサブフレームサンプルが必要になります。
Note
Houdini20.0以降、Karmaは内部的には回転をクォータニオンとして表現しています。 つまり、ある程度十分なモーションブラーを得るのには、USDでそれほど多くのサンプルを作成する必要が 必ずしもありません 。
モーションブラーの品質を向上させるには、次のノードを使用して、タイムサブサンプルを追加および管理します。
|
十分なタイムサンプルを作成する最も簡単な方法。 このノードをKarma Render Settingsの後に追加すると、そのレンダー設定で設定されたカメラを使用して、シャッターフレーム全体をブラーするのに十分なタイムサンプルが自動的にキャッシュ化されます。 |
|
|
現在のフレーム周辺で、または、タイムライン全体で、タイムサンプルをキャッシュするのに便利です。 このノードは、サブフレームサンプリングの管理も制御できます。 |
|
|
中に埋め込まれている |
|
|
理想は十分なサンプルを持つ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を上げます。
このパラメータでステージ上のサンプルを上書きするには、 Motion Samples From Stage パラメータも無効にする必要があります。
Note
このパラメータでサンプル数を指定した場合、Karmaはステージ上に書き出されたサンプルからデータを補間するようになります。 利用可能なデータをKarmaが使用できるようにするために、単に Motion Samples from Stage 設定を使用することを推奨します。
ジオメトリ/変形ブラー ¶
Primのpointsアトリビュートを時間の経過とともに変形することで、ジオメトリブラーを生成します。
ジオメトリブラーにはトランスフォーメーションブラーが乗算されます。
ジオメトリブラーを機能させるには、USDで複数のタイムサンプルが必要であり、ポイント数はサンプル間で変更できません。
Note
USDでは、pointsは単精度のアトリビュートです。(xformOpsなどの)トランスフォームは倍精度です。
Geometry Blur Properties (blurprops)
Motion Samples from Stage
モーションサンプルを明示的に選択しなくても、Karmaは、USDステージで作成されたサンプルに基づいてモーションサンプルを選択することもできます。 このオプションは、ステージ上で表現されているモーションを取り込むのにちゃんと正しいサンプル数を選択します。
この設定は、ジオメトリとインスタンスの両方のトランスフォームモーションサンプルと変形モーションサンプルのどちらにも適用されます。
Note
ステージ上のサンプルがカメラのシャッター時間と揃っていない場合、最初と最後のセグメントで(モーションが補間されず切り捨てられてしまうので)若干の補間の不具合が発生してしまう可能性があります。
Geometry Time Samples
シャッターオープン時間に対して 変形 モーションブラーをレンダリングする時に計算するサブフレームのサンプル数。
デフォルトは2サンプルで、高速に変形するジオメトリを適切にブラーさせるのには十分な値です。
Geometry Time Samples は、レンダリングされるUSDファイルで利用可能なサブサンプル数で制限されます。
この例外で許可されているのは、USDSkelデフォーマです。
“Deformation”は、ジオメトリ/SOPレベルでトランスフォームだけを参照したり、キャラクタやフレームに応じて形状が急速に変化するオブジェクトなどの実際のサーフェス変形を参照することができます。
1フレーム内で複雑に変形するオブジェクトには、Geo Time Samplesの数を上げる必要があります。
変形ブラーは、シャッター時間内の アトリビュート値の変化 もブラーさせることができます。
例えば、オブジェクトが移動した時にポイントカラーが急変化する場合、そのCdアトリビュートにブラーをかけることができます。
Geometry Time Samples の数を上げると、Karmaの使用メモリ量に 影響を与えてしまします 。 サンプル数が増える度に、Karmaはシャッター時間の間にサンプリングしている間はメモリ内にそれだけのジオメトリのコピーを維持しなければなりません。 レンダリングを最適化する時、滑らかなモーションの軌跡を生成するのに必要な最低限の Geometry Time Samples を調べることは良い考え方です。
Velocityモーションブラーが有効なオブジェクトでは、変形ブラーは無視されます。
このパラメータでステージ上のサンプルを上書きするには、 Motion Samples From Stage パラメータも無効にする必要があります。
Note
このパラメータでサンプル数を指定した場合、Karmaはステージ上に書き出されたサンプルからデータを補間するようになります。 利用可能なデータをKarmaが使用できるようにするために、単に Motion Samples from Stage 設定を使用することを推奨します。 アクセラレーションモーションブラーを使用する場合は、この設定が必須となります。
Velocity/加速度ブラー ¶
時間とともに変化するパーティクルやメッシュトポロジの場合、Velocityアトリビュートを追加すると、ブラーを直接生成することができます。
velocitiesアトリビュートが使用可能な場合、Karmaは単にポイントをそのアトリビュートの方へブラーします。
Karmaは、より自然に見える加速度ブラーにも対応しています。
Karmaは、ポイントをvelocitiesベクトルに沿って線形にブラーするのではなく、accelerationsを使用して円弧沿いにブラーします。
Karmaは、ジオメトリタイムサンプルの数を使用して、パスを複数のセグメントに分割します。
モーションブラーを非線形にするには、3個以上のサンプルが必要です。
サンプルが2個の場合、Velocityブラーと同じ結果になります。
Note
加速度ブラーではジオメトリタイムサンプルが必要なため、 Motion Samples from Stage は無視されます。
Velocity Blur Properties
Velocity Blur
このパラメータでは、(Velocityがあれば)オブジェクトに対して実行する ジオメトリVelocityブラー のタイプを選択することができます。 トランスフォームブラー や 変形ブラー とは別に、時間と共に変化するポイントに保存されたアトリビュートを使って、ポイントの動きに応じたモーションブラーをレンダリングすることができます。 ジオメトリ内のポイント数が時間と共に変化する場合(例えば、ポイントが誕生したり死亡するパーティクルシミュレーション)、このタイプのブラーを使用してください。
フレーム間でジオメトリのトポロジが変化する場合、Karmaはジオメトリを補間できなくて正しくモーションブラーを計算できなくなります。
そのような場合、元のジオメトリが変化しても整合性のあるvelocitiesやaccelerationsのアトリビュートをモーションブラーに使用することができます。
流体シミュレーションのサーフェスがまさにそのよい例です。
この場合と他のタイプのシミュレーションデータでは、ソルバが自動的にVelocityアトリビュートを作成します。
Note
Solarisでのvelocities、accelerations、angularVelocitiesのアトリビュートは、SOPではそれぞれv、accel、wに相当します。
No Velocity Blur
レンダラーでモーションブラーを許可するように設定しても、このオブジェクトに対してモーションブラーをレンダリングしません。
Velocity Blur
Velocityブラーを使用するには、ポイントVelocityを計算して、それをvelocitiesPointアトリビュートに保存しなければなりません。
レンダラーは、このアトリビュートが存在すれば、それを使用してVelocityモーションブラーをレンダリングします(レンダラーがモーションブラーのレンダリングを許可するように設定されていることが前提です)。
シミュレーションノード(例えばパーティクル系DOPs)は自動的にvelocitiesアトリビュートを生成します。
他にも、Point velocity SOPを使ってVelocityを計算して追加することができます。
velocitiesアトリビュート値の単位は、1秒あたりのHoudiniユニットです。
Acceleration Blur
加速度ブラーを使用するには、ポイント加速度を計算して、それをaccelerationsPointアトリビュートに保存しなければなりません。
レンダラーは、このアトリビュートが存在すれば、それを使用して複数セグメントの加速度モーションブラーをレンダリングします(レンダラーがモーションブラーのレンダリングを許可するように設定されていることが前提です)。
シミュレーション系ノードは自動的にaccelアトリビュートを生成することができます。
他にも、Point Velocity SOPを使って加速度を計算して追加することができます。
Acceleration Blur がオンの時、ジオメトリに 角速度 アトリビュート(w)が存在すれば、急回転にもブラーがかかります。
これは、ベクトルアトリビュートであり、各コンポーネントは、X、Y、Z軸を基準とした1秒あたりのラジアンの回転速度を意味しています。
これを Velocity Blur または Acceleration Blur に設定すると、変形ブラーがオブジェクトに適用されなくなります。 これを Acceleration Blur に設定すると、 Geometry Time Samples パラメータを使用して、加速度サンプルの数を設定することができます。
velocities)を使って線形モーションブラーを実行したVelocity Motion Blur。
ポイントインスタンス ¶
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ブラーを使用したいのであれば、そのインスタンスは、ポイント上にvelocitiesアトリビュートを持つポイントインスタンサー、または、v Primvarを持つネイティブインスタンスである必要があります。
velocitiesアトリビュート(v Primvar)値の単位は、1秒あたりのHoudiniユニット長です。
Acceleration Blur
Accelerationブラーを使用したいのであれば、そのインスタンスは、ポイント上にVelocityアトリビュートとAccelerationアトリビュートが含まれたポイントインスタンサーである必要があります。
レンダラーは、(存在すれば)このアトリビュートを使用して、複数セグメントのアクセラレーションモーションブラーをレンダリングします(レンダラーでモーションブラーが有効になっている場合)。
accelアトリビュートはシミュレーション系ノードで自動的に作成されますが、Point velocity SOPを使用して加速度を計算して
accelアトリビュートを追加することもできます。
このaccelアトリビュートは、SOPジオメトリがUSDに変換された時にaccelerationsに変換されます。
Instance Motion Samples
Accleration Blur または Deformation Blur を使用してインスタンスのモーションブラーを計算する場合、このパラメータには、そのモーションブラーで使用されるモーションセグメントの数を指定します。