ICE シミュレーションのタイプによっては、通常どおりに各フレームを複数回サンプリングする必要があります。サブフレーム サンプリングを増やす必要があるシミュレーション状況の最も典型的な例は、次のとおりです。
サブフレーム サンプリングによって、フレームごとに ICE シミュレーションが評価される回数が決まります。サブフレーム サンプルが増えると、シミュレーションによる解析がさらに正確になります。たとえば、すばやく移動するパーティクル エミッタでは、サブフレーム サンプリングによって、パーティクルの位置についてさらに正確なデータが得られます。サブフレームサンプルを増やすとシミュレーション時間が長くなるため、目的とするエフェクトの結果と必要な時間の両方のバランスを考慮する必要があります。
Softimage 2012 以前に作成されたシーンおよびコンパウンド(またはそのいずれか)をアップグレードし、サブフレーム サンプリングを使用するには、下の「サブフレーム サンプリングを使用するためにシーンおよびコンパウンドを更新する」を参照してください。
下のイメージでは、サブフレーム サンプリング値は 30 です。パーティクルは球エミッタのパスに沿って適切に放出されています。この球は、ノンリニア パスを 8 フレームにわたって非常に速く移動します。他のパーティクルは衝突時に放出されます。
下のイメージでは、サブフレーム サンプリング値は 1 です。球が各フレームで一度パーティクルを放出することにより外観が非常に変化する様子がわかります。各フレームでの移動は非常に速いため、衝突を計算する時間はありません。
サブフレーム サンプリングは[シミュレーション設定]プロパティ経由で行われます。このプロパティは、オブジェクト用にシミュレート ICE ツリーを作成するときに自動的に作成されます。オブジェクト全体で同じサブフレーム サンプリングを使用し、予測可能な結果が得られるように、このプロパティはオブジェクトごとに設定されます。このプロパティは、[ICETree]ノードの EvolveOp オペレータ上のポートに接続されます。EvolveOp はシミュレーション領域にあるすべてのオペレータの結果を読み取り、以前の評価をメモリに保持します。
現在、衝突時やパーティクル放出時のみ増加させるなど、シミュレーションで使用するサブフレーム サンプル数を適宜変更することはできません。シミュレーションでは、コンスタントなサブフレーム サンプリングのみサポートされています。
ICE シミュレーションを作成します(パーティクル、リジッド ボディ、デフォーメーション、Lagoa、または Syflex ICE クロス/カーブ)。
Explorer で、シミュレーション オブジェクトの直下にある[シミュレーション設定]プロパティのノードをクリックします。
[シミュレーション設定]プロパティ エディタで、[サブフレーム サンプリング](Subframe Sampling)値を、フレームごとにシミュレーションをサンプリングする回数に設定します。たとえばこの値を 10 に設定すると、シミュレーション フレームはそれぞれ 10 回サンプリングされます。
2 や 3 など、小さい値で始めて結果をテストしてください。できるだけ小さい値を使用して必要な結果を出すことを推奨します。たとえば、Syflex ICE シミュレーションの場合は最大でも 4 または 5 しか必要ありません。また、Lagoa シミュレーションでは 10、極端に高速な ICE パーティクル エミッタまたはデフォームするオブジェクトでは最大 20~30 となります。
サブフレーム サンプリングの評価は、シミュレーション領域に存在するシミュレーション オペレータ(ソルバ)を使用して行われます。最善の結果を得るには、[Simulate Particles]ノードや[Lagoa Simulate Multiphysics]ノードなど、インテグレーションに時間を使用するソルバを使い、シミュレートされたポイントを移動させる必要があります。
1 を超える値をサブフレーム サンプリングに設定した場合、パーティクル放出のレートが変化することがわかります。放出レートは各サンプルで放出されたパーティクルの数に基づくため、これは通常の動作です。
たとえば、1 つのフレームで 3 つのパーティクルを放出し、フレームごとに 1 つのサブフレーム サンプルを使用するとします。その後、サブフレーム サンプル数を 2 つに増やした場合、1 つのサブフレーム サンプルを使用した結果と一致するように、最初のサンプルで 1 つ、2 番目のサンプルで 2 つのパーティクルを放出する必要があります。基本的に、定数値を使用して同じ数のパーティクルを完全に一致させることは不可能です。
表示属性プロパティを作成すると、[サブフレーム サンプリング](Subframe Sampling)値を視覚化できます。[属性表示]プロパティ エディタで[属性]値を[NbSubSamples]に設定し、必要に応じて他のオプションを設定します。
表示属性プロパティを作成する方法については、「属性値を表示する」を参照してください。
ICE シミュレーションがサブフレーム サンプルを使用しているときは、シミュレーション フレームを「通常の」フレームとしてキャッシュしたり、[サブフレーム サンプリング](Subframe Sampling)値でフレームをキャッシュすることを選択できます。
サブフレーム サンプルは、[Cache Manager]ノードまたは[Cache on File]ノードを使用してキャッシュできます。いずれの方法もここで説明します。
Cache Manager からサブフレーム サンプルをキャッシュする
ICE シミュレーション オブジェクトの[シミュレーション設定]プロパティ エディタを開き、[サブフレーム サンプリング](Subframe Sampling)値を前述したように設定します。
現在の[サブフレーム サンプリング](Subframe Sampling)値を使用してシミュレーションをキャッシュするには、[Cache Manager]-[Cache All Simulation Samples]オプションを選択し、各サブフレームがキャッシュ ファイルに保存されるようにします。
このオプションがオフの場合、シミュレーション フレームは、全体およびサンプリングされていないフレームとしてキャッシュされます。
[Open Cache Manager]ボタンをクリックして Cache Manager を開いた後、ICE シミュレーションをキャッシュ ファイルに書き込みます。「アニメーションまたはシミュレーション データをキャッシュ ファイルに書き込む」を参照してください。
キャッシュ ファイルをオブジェクトに、そしてキャッシュ クリップを Animation Mixer にロードするには、「Animation Mixer でキャッシュ ファイルを使用する」を参照してください。
サブフレームはそれぞれキャッシュ ファイルに保存されます。このキャッシュ ファイルは、元のシミュレーションの速度に一致するように自動的にスケーリングされます。たとえば、キャッシュするシミュレーションが 8 フレーム長で[サブフレーム サンプリング]値が 20 の場合、下のキャッシュ クリップに表示されている値のように、160 のサブフレームがキャッシュ ファイルに実際に保存されます。
サブフレーム データを使用すると、Animation Mixer にあるキャッシュ ファイルをフル フレームのキャッシュよりも正確にリタイムできます。
[スケール](Scale)値を使用してクリップのタイミングをスケールしたり、タイムワープ カーブを使用してシミュレーションのタイミングを調整または反転できます。
これらのオプションの詳細については、「クリップをスケーリングする」および「時間のリレーション(タイムワープ)を変更する」を参照してください。
[Cache on File]ノードを使用してサブフレーム サンプルをキャッシュする
ICE シミュレーション オブジェクトの[シミュレーション設定]プロパティ エディタを開き、[サブフレーム サンプリング](Subframe Sampling)値を前述したように設定します。
シミュレーション オブジェクト用に ICE ツリー ビューを開き、シミュレーション オブジェクトの ICE ツリーに[Cache on File]ノードを接続します。
別のオブジェクト(または同じオブジェクト)で、「ICE ツリーでのキャッシュ ファイルを読み込む」の説明に従って、キャッシュ ファイルを読み取るように[Cache on File]ノードを設定します。
オリジナル シミュレーションの速度に合わせてキャッシュ ファイルのサイズが自動的に調整されるように、必ず[すべてのシミュレーション サンプル](All Simulation Samples)オプションを選択してください。
キャッシュ ファイルの読み取り時にこのオプションが無効になっていると、各サブフレームは通常のフレームとして読み取られ、シミュレーション速度が低下します(サブフレーム サンプルの数が 2 つ以上の場合)。
サブフレーム サンプリングを使用するためにシーンおよびコンパウンドを更新する
2012 以前の Softimage バージョンのシーンおよびコンパウンドのサブフレーム サンプリングを使用するためには、いくつかの手順を実行する必要があります。古い ICE シミュレーションでは、[シミュレーション設定]プロパティが作成されず、旧バージョンの EvolveOp オペレータ(シミュレーション領域のものを計算するために使用されたオペレータ)が使用されました。
バージョン 2012 以前の Softimage バージョンで作成されたシーンを更新するには、次の手順を実行します。
ICE シミュレーション オブジェクトを選択し、ICE ツリーを開きます。右側のコンストラクション スタックに、シミュレーション領域の現在の[ICETree]ノードが表示されます。
[ICETree]ノードを、シミュレーション領域から次に示す領域の 1 つ(アニメーション領域やモデリング領域など)に移動させます。これは一時的な状態です。
新しい[ICETree]ノードを含む新しいシミュレーション領域マーカーが作成されるように、新しいシミュレーション ICE ツリーを作成します。
新しい[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 を超える[サブフレーム サンプリング]値を処理できるようになりました。