Alembic を使用して Bullet シミュレーションをレンダーする

 
 
 

このワークフローは、Bullet シミュレーションを Alembic キャッシュに書き出す方法を実演します。Maya の Alembic キャッシュを使用すると、制作パイプラインのさまざまな段階間で Bullet シミュレーションを転送することができます。Alembic キャッシュ ファイルの内容は Maya ジオメトリとして評価され、ポリゴン、NURBS、サブディビジョン サーフェスなどの編集ツールを使用して変更できます。

Alembic のキャッシュのしくみに関する詳細は、「Alembic キャッシュ」を参照してください。

このような作業の仕方は、照明やカメラの専門家など他のチームが後工程を担当するシーンの場合に最適です。たとえば、シミュレーションの軽量バージョンを用意して専門家に渡し、それに専門家がそれぞれの要素を加えてから最終レンダリングを行うような場合です。

このワークフローは 2 つの部分に分けることができます。

シミュレーションをキャッシュ ファイルに書き出す

ワークフローのこの部分では、照明とカメラを含む侍シーンで始まります。1000 個のオブジェクトが空から落ちて Samurai Dojo モデルと衝突するリジッド セット シミュレーションを使用します。これからリジッド ボディ シミュレーションの階層の Alembic キャッシュ ファイルを作成します。このファイルは、照明とカメラを追加する後工程チームに送ることができます。Alembic の使用でスケールできるため、実際のオブジェクトをシミュレートすることも動かすこともしません。

シミュレーションに使用されるリジッド セットは、オリジナルのジオメトリからマテリアルやテクスチャを転送しない標準のプリミティブ シェイプ(たとえば、ボックスおよび球やハル)です。このワークフローで使用されるシーンは Samurai Dojo のモデルです。(Samurai Dojo モデル: AMD 提供)

  1. 基本ジオメトリのあるレイアウト シーンから開始します。bulletRigidBodyShape のアトリビュート エディタ(Attribute Editor) のリジッド ボディのプロパティ(Rigid Body Properties)で、Dojo モデルのボディ タイプ(Body Type)スタティック ボディ(Static Body)に設定し、衝突フィルタ(Collision Filter)スタティック メッシュ(Static Mesh)に設定します。これにより、Samurai Dojo モデルがスタティックなメッシュとして作成され、スタティックな衝突ボリュームになります。
  2. 内部フレーム レート(アトリビュート エディタ(Attribute Editor): 内部の固定フレーム レート(Internal Fixed Frame Rate))を 120Hz に上げて、より良い衝突を作成します。
  3. モデルの表示を改善するために、アトリビュート エディタ(Attribute Editor)デバッグ描画(Debug Draw)を有効にします。
  4. 落下するブロックを選択し、Bullet > リジッド ボディを作成 (Bullet > Create Rigid Set)の順に選択して、落下ブロックをリジッド セットに変えます。マテリアルが転送されていないため、ブロックが灰色になります。
  5. シミュレーション シーンのサイズをさらに合理化するために、ディスプレイ(Display) > ジオメトリの非表示 > すべて(Display > Hide Geometry > All)の順に選択してオリジナルのメッシュとソース ジオメトリを非表示にします。デバッグ描画(Debug Draw)を必ず有効にして、モデルが表示されるようにします。
  6. 再生(Play)を押してシミュレーションを表示します。必要に応じて物理特性の設定を微調整します。
  7. シミュレーションの準備ができたら、マテリアルとテクスチャのあるオリジナルのジオメトリにアニメーションを転送する必要があります。

  8. Bullet > シミュレーションを書き出し > すべて書き出し(Bullet > Export Simulation > Export All)の順に選択して、シミュレーションを Alembic キャッシュに書き出します。
    注: 重要なのは、書き出しのときに .abc をファイル名の後に追加することは重要です。そうしないと書き出しが失敗します。
    注: Bullet > シミュレーションを書き出し(Bullet > Export Simulation)メニューは、シーン全体を書き出すことも、リジッド ボディを持つか特定のソルバ処理済み状態の特定オブジェクトのみ書き出すこともサポートしています。
  9. Alembic の書き出し(Alembic Export)ウィンドウで、時間設定(Time Setting)を有効にします。下にスクロールして、ワールド空間(World Space)を有効にします。
  10. 選択項目の書き出し(Export Selection)をクリックします。シミュレーションが書き出されます。

    Alembic キャッシュ ファイルには、ワールド空間のアニメーションを使ったすべてのアニメートされたオブジェクトを単純に一覧したものが入っています。キャッシュ ファイルには、アニメーションのみが入っています。メッシュもマテリアル情報も入っていません。

キャッシュ ファイルは、最初のチームが次のチームに送ってシミュレーションを確認できるように作成されています。読み込み/マージのプロセスはこのワークフローの次の部(キャッシュ ファイルを読み込んでマージする)で説明されています。

キャッシュに関する注記

  • ワールド空間のアニメーションの書き出しのみサポートされています。
  • 大きなシーンには時間がかかります。該当する場合は、シミュレーションを一括で実行してください。「静止画またはアニメーションをバッチ レンダーする」を参照してください。
  • 不安定な回転をするオブジェクトがある場合は、オイラー フィルタ(Euler Filtering)を有効にして、連続的な回転を保証してください。

キャッシュ ファイルを読み込んでマージする

ワークフローのこの部分では、書き出された Alembic キャッシュ ファイルを照明とカメラのチームが受け取り、それを照明とカメラのある独自バージョンのシーンにマージします。次のチームのシーンには、ソルバを作成したチームと同じ 階層が含まれ、アニメーションは入っていません。

  1. ライトやカメラ ショットを準備している照明ファイルに移動します。オリジナルのジオメトリすべてがそこにあります。
  2. パイプライン キャッシュ > Alembic キャッシュ > Alembic から読み込み(Pipeline Cache > Alembic Cache > Import Alembic) > の順に選択してください。
  3. Alembic の読み込み(Alembic Import)ウィンドウで、マージ(Merge)を選択します。これにより、Alembic キャッシュが現在のシーンとマージされ、Alembic ファイルでアニメート トランスフォームを再接続することができます。
    注:ビューポートの左右隅にフレーム レートが表示されます。
  4. 再生(Play)を押します。オリジナルのジオメトリによって Alembic アニメーションが動作します。
    注:自分のシーンができたら、それをレンダリング用に提出したりプレイブラストを生成できます。