ICE シミュレーションのサブフレーム サンプリング

 
 
 

ICE シミュレーションのタイプによっては、通常どおりに各フレームを複数回サンプリングする必要があります。サブフレーム サンプリングを増やす必要があるシミュレーション状況の最も典型的な例は、次のとおりです。

サブフレーム サンプリングによって、フレームごとに ICE シミュレーションが評価される回数が決まります。サブフレーム サンプルが増えると、シミュレーションによる解析がさらに正確になります。たとえば、すばやく移動するパーティクル エミッタでは、サブフレーム サンプリングによって、パーティクルの位置についてさらに正確なデータが得られます。サブフレームサンプルを増やすとシミュレーション時間が長くなるため、目的とするエフェクトの結果と必要な時間の両方のバランスを考慮する必要があります。

Softimage 2012 以前に作成されたシーンおよびコンパウンド(またはそのいずれか)をアップグレードし、サブフレーム サンプリングを使用するには、下の「サブフレーム サンプリングを使用するためにシーンおよびコンパウンドを更新する」を参照してください。

下のイメージでは、サブフレーム サンプリング値は 30 です。パーティクルは球エミッタのパスに沿って適切に放出されています。この球は、ノンリニア パスを 8 フレームにわたって非常に速く移動します。他のパーティクルは衝突時に放出されます。

下のイメージでは、サブフレーム サンプリング値は 1 です。球が各フレームで一度パーティクルを放出することにより外観が非常に変化する様子がわかります。各フレームでの移動は非常に速いため、衝突を計算する時間はありません。

注:サブフレーム サンプリングは、非 ICE シミュレーション(リジッド ボディ、ソフト ボディ、クロス、非 ICE Syflex クロス)では現在サポートされていません。

シミュレーション用のサブフレーム数を設定する

サブフレーム サンプリングは[シミュレーション設定]プロパティ経由で行われます。このプロパティは、オブジェクト用にシミュレート ICE ツリーを作成するときに自動的に作成されます。オブジェクト全体で同じサブフレーム サンプリングを使用し、予測可能な結果が得られるように、このプロパティはオブジェクトごとに設定されます。このプロパティは、[ICETree]ノードの EvolveOp オペレータ上のポートに接続されます。EvolveOp はシミュレーション領域にあるすべてのオペレータの結果を読み取り、以前の評価をメモリに保持します。

現在、衝突時やパーティクル放出時のみ増加させるなど、シミュレーションで使用するサブフレーム サンプル数を適宜変更することはできません。シミュレーションでは、コンスタントなサブフレーム サンプリングのみサポートされています。

  1. ICE シミュレーションを作成します(パーティクル、リジッド ボディ、デフォーメーション、Lagoa、または Syflex ICE クロス/カーブ)。

  2. Explorer で、シミュレーション オブジェクトの直下にある[シミュレーション設定]プロパティのノードをクリックします。

  3. [シミュレーション設定]プロパティ エディタで、[サブフレーム サンプリング](Subframe Sampling)値を、フレームごとにシミュレーションをサンプリングする回数に設定します。たとえばこの値を 10 に設定すると、シミュレーション フレームはそれぞれ 10 回サンプリングされます。

    2 や 3 など、小さい値で始めて結果をテストしてください。できるだけ小さい値を使用して必要な結果を出すことを推奨します。たとえば、Syflex ICE シミュレーションの場合は最大でも 4 または 5 しか必要ありません。また、Lagoa シミュレーションでは 10、極端に高速な ICE パーティクル エミッタまたはデフォームするオブジェクトでは最大 20~30 となります。

サブフレーム サンプル データを表示する

表示属性プロパティを作成すると、[サブフレーム サンプリング](Subframe Sampling)値を視覚化できます。[属性表示]プロパティ エディタで[属性]値を[NbSubSamples]に設定し、必要に応じて他のオプションを設定します。

表示属性プロパティを作成する方法については、「属性値を表示する」を参照してください。

このイメージでは、サブフレーム サンプリング値が 20 に設定されています。

サブフレーム サンプル データをキャッシュする

ICE シミュレーションがサブフレーム サンプルを使用しているときは、シミュレーション フレームを「通常の」フレームとしてキャッシュしたり、[サブフレーム サンプリング](Subframe Sampling)値でフレームをキャッシュすることを選択できます。

サブフレーム サンプルは、[Cache Manager]ノードまたは[Cache on File]ノードを使用してキャッシュできます。いずれの方法もここで説明します。

Cache Manager からサブフレーム サンプルをキャッシュする

  1. ICE シミュレーション オブジェクトの[シミュレーション設定]プロパティ エディタを開き、[サブフレーム サンプリング](Subframe Sampling)値を前述したように設定します。

  2. 現在の[サブフレーム サンプリング](Subframe Sampling)値を使用してシミュレーションをキャッシュするには、[Cache Manager]-[Cache All Simulation Samples]オプションを選択し、各サブフレームがキャッシュ ファイルに保存されるようにします。

    このオプションがオフの場合、シミュレーション フレームは、全体およびサンプリングされていないフレームとしてキャッシュされます。

  3. [Open Cache Manager]ボタンをクリックして Cache Manager を開いた後、ICE シミュレーションをキャッシュ ファイルに書き込みます。「アニメーションまたはシミュレーション データをキャッシュ ファイルに書き込む」を参照してください。

  4. キャッシュ ファイルをオブジェクトに、そしてキャッシュ クリップを Animation Mixer にロードするには、「Animation Mixer でキャッシュ ファイルを使用する」を参照してください。

    サブフレームはそれぞれキャッシュ ファイルに保存されます。このキャッシュ ファイルは、元のシミュレーションの速度に一致するように自動的にスケーリングされます。たとえば、キャッシュするシミュレーションが 8 フレーム長で[サブフレーム サンプリング]値が 20 の場合、下のキャッシュ クリップに表示されている値のように、160 のサブフレームがキャッシュ ファイルに実際に保存されます。

    サブフレーム データを使用すると、Animation Mixer にあるキャッシュ ファイルをフル フレームのキャッシュよりも正確にリタイムできます。

    [スケール](Scale)値を使用してクリップのタイミングをスケールしたり、タイムワープ カーブを使用してシミュレーションのタイミングを調整または反転できます。

    これらのオプションの詳細については、「クリップをスケーリングする」および「時間のリレーション(タイムワープ)を変更する」を参照してください。

[Cache on File]ノードを使用してサブフレーム サンプルをキャッシュする

  1. ICE シミュレーション オブジェクトの[シミュレーション設定]プロパティ エディタを開き、[サブフレーム サンプリング](Subframe Sampling)値を前述したように設定します。

  2. シミュレーション オブジェクト用に ICE ツリー ビューを開き、シミュレーション オブジェクトの ICE ツリーに[Cache on File]ノードを接続します。

  3. シミュレーションをキャッシュ ファイルに書き込みます。「ICE ツリーにキャッシュ ファイルを書き込む」を参照してください。 サブフレーム サンプルをキャッシュに書き込むために、このプロパティ エディタで必ず[すべてのシミュレーション サンプル](All Simulation Samples)オプションを選択してください。
  4. 別のオブジェクト(または同じオブジェクト)で、「ICE ツリーでのキャッシュ ファイルを読み込む」の説明に従って、キャッシュ ファイルを読み取るように[Cache on File]ノードを設定します。

    オリジナル シミュレーションの速度に合わせてキャッシュ ファイルのサイズが自動的に調整されるように、必ず[すべてのシミュレーション サンプル](All Simulation Samples)オプションを選択してください。

    キャッシュ ファイルの読み取り時にこのオプションが無効になっていると、各サブフレームは通常のフレームとして読み取られ、シミュレーション速度が低下します(サブフレーム サンプルの数が 2 つ以上の場合)。

サブフレーム サンプリングを使用するためにシーンおよびコンパウンドを更新する

2012 以前の Softimage バージョンのシーンおよびコンパウンドのサブフレーム サンプリングを使用するためには、いくつかの手順を実行する必要があります。古い ICE シミュレーションでは、[シミュレーション設定]プロパティが作成されず、旧バージョンの EvolveOp オペレータ(シミュレーション領域のものを計算するために使用されたオペレータ)が使用されました。

古いシーンを更新する

バージョン 2012 以前の Softimage バージョンで作成されたシーンを更新するには、次の手順を実行します。

  1. ICE シミュレーション オブジェクトを選択し、ICE ツリーを開きます。右側のコンストラクション スタックに、シミュレーション領域の現在の[ICETree]ノードが表示されます。

  2. [ICETree]ノードを、シミュレーション領域から次に示す領域の 1 つ(アニメーション領域やモデリング領域など)に移動させます。これは一時的な状態です。

  3. ICE コンストラクション スタックでシミュレーション領域マーカーを削除します。

  4. 新しい[ICETree]ノードを含む新しいシミュレーション領域マーカーが作成されるように、新しいシミュレーション ICE ツリーを作成します。

  5. 新しい[ICETree]ノードを削除し、続いて本来の[ICETree]ノードをシミュレーション領域にドラッグして戻します。

以上の操作で、ICE シミュレーション用に新しい EvolveOp オペレータと[シミュレーション設定]プロパティが用意されます。

[Simulation Step]ノードを使用していたほとんどの ICE サンプル シーン(Lagoa シーンなど)は、サブフレーム サンプルを使用できるように更新されました。

古いコンパウンドを更新する

2012 以前の Softimage バージョンを使用してコンパウンドを作成した場合、1 を超える値を持つサブフレーム サンプルを使用できるようにするためには、通常それらを更新する必要があります。

  • コンパウンドが時間ベースの場合、それらを更新する必要はありません。

  • コンパウンドがフレームベースの場合は(コンパウンドは[Simulation Step]ノードを使用する)、[Simulation Step]ノードではなく[フレーム ステップ](Frame Step)ノードを使用してそれらを更新する必要があります。[フレーム ステップ](Frame Step)ノードはサブフレームを処理でき、[Simulation Step]ノードはサブフレームを処理できません。

コンパウンドが最新バージョンのノード(タグ付きの「サブフレーム サポート」)を使用しているかどうかをチェックするには、Compound Version Manager を使用できます。ICE Tree ビューで[コンパウンド](Compounds) [Compound Version Manager]を選択してください。

コンパウンドのバージョンを更新する方法については、「コンパウンドのバージョニングを行う」を参照してください。

更新された出荷時のノードとコンパウンド

[Simulation Step]ノードを使用していた以下の出荷時の ICE コンパウンドは、[フレーム ステップ](Frame Step)ノードを使用するように更新されました。これにより、1 を超える[サブフレーム サンプリング]値を処理できるようになりました。