Thinkbox Software 製品
ブログ

XMesh MY イントロダクション

XMeshとは?

XMeshは、メッシュのキャッシングソリューションです。1つ以上のジオメトリオブジェクトのレンダリング時の表現をディスクファイルに保管し、頂点変形、頂点ベロシティデータ、トポロジ(位相)変更、マッピング座標、情報のスムージング、マテリアル割り当てを含む全ての関連する情報を保持しながら、ビューポート再生やレンダリング用に復元することができます。

XMeshは、現在、Autodesk MayaとAutodesk 3ds Maxのプラグインとして入手でき、他の2D/3D DCCアプリケーションへのサポートは開発中です。

XMeshシステムは、ジオメトリオブジェクトをXMeshファイルシーケンスにキャッシングするXMesh Saverユーティリティと、保存されたデータを3Dアプリケーション読み込むXMesh Loaderオブジェクトで構成されています。

XMeshは2006年以降、複雑なVFX制作で使用されており、何百万ものポリゴンメッシュや複雑なパーティクルシステムの構成において安定して動作します。データをコンパクトで拡張可能なチャンネルに関連づけられたフォーマットで保存し、複数のネットワークマシン上で同じアニメーションシーケンスを並列で処理することを含め、Thinkbox社のDeadline Network Managerを使ったネットワーク上でのジオメトリのキャッシングに対応しています。

 

XMeshを使う理由は?

VFXパイプラインにおいては、全ての制作段階でダイナミックなシーンを扱うと問題が起こることがあります。例えば、アニメーション、シミュレーションやエフェクトの各部門の結果は、ライティングとレンダリング部門へ転送されますが、ライティングアーティストは自身の作業のために実際のアニメーションリグ、シミュレーションデータ、エフェクト/パーティクル設定にアクセスする必要はありません。事実、その基礎をなすリグに前の段階からアクセスできてしまうと、nullやパーティクルシステムコンポーネントなどの重要なエレメントが偶発的に移動/修正/削除され、最終レンダリング出力に影響を与えてしまう危険性があります。

XMeshはジオメトリデータをキャッシングし、アニメーション/シミュレーション/エフェクトリグへの依存状態を取り除き、ライティングやレンダリング部門に精度の高い結果を変更不可能な形で渡します。

さらに、それぞれが数個のポリゴンを持つ何千個ものオブジェクトよりも、数百万個ものポリゴンを持つ1個のオブジェクトの方が通常は高速に動作する3Dシーン上でパフォーマンスの壁に突き当たることをかなり軽減させながら、複数のメッシュを結合して単一のメッシュにすることができます。

そのデータは、キャッシュをただ再保存するだけでシーンジオメトリデータを簡単に更新しながら、メインMayaシーン外側のファイルシーケンスとして外部化されます。

最終的に、Autodesk Mayaや3ds Maxのような3Dアプリケーションに対応しているため、これらのパッケージ間でメッシュデータを交換するためにXMeshを使用することができます。

 

どのように動作しますか?

XMeshファイルシーケンスはフレームごとに複数のファイルを使用するため、結果的にシーケンスごとのファイル数はかなり大量になります。そこにはプラスの要素がいくつかあります。

  • 変化していないチャンネルデータは、ディスク使用量を削減しながら全体のシーケンス用に1度だけ保存されます。
  • より速くターンアラウンドを行うため、複数のマシンが同じシーケンスに並列で保存できます。
  • シーケンスを複数の過程で保存でき、必要であれば、より多くのフレームを既存のフレームに追加できます。
  • シーケンス全体を再保存しなくても、既存シーケンスのサブレンジの再保存/更新が可能です。
  • 破損したデータは、シーケンス全体を再保存しなくても、個別フレームを再保存すれば簡単に修復できます。
  • 複数のCPUでは、並列で、同フレームにおける個別データチャンネルの保存と圧縮が可能です。
  • 複数のCPUでは、並列で、同フレームにおける各データチャンネルの展開と読込みができます。

などです。

構造及びXMeshのファイルシーケンスの内容に関しては、「XMesh MY ファイルシーケンス」の項目をご覧ください。

 

Saving Modes (保存モード)

XMesh Saverには、保存モードがいくつかあります。

  • ワールド空間で複数のオブジェクトを単一メッシュとして保存 – 個別の実在データへのアクセスが必要でない場合、難解なシーンのパフォーマンスを最適化するために、多くのオブジェクトを単一のメッシュに結合することができるモードです。
  • ワールド空間で複数のオブジェクトを個別のキャッシュとして保存 XMeshシーケンスをオブジェクトごとに保存することで個別のオブジェクトを保存できるモードですが、オリジナルシーンの再現が、すべてのXMesh Loadersをワールドの原点に配置するのと同じくらい簡単にでき、ワールド変形をメッシュのキャッシュにベイクします。
  • オブジェクト空間で複数のオブジェクトを個別のキャッシュとして保存 – オブジェクト空間変形のみをベイクし、オブジェクト空間変形だけをキャッシングしながら、各XMesh Loaderがそれぞれのソースオブジェクトを既存の階層に再配置できるモードです。

 

XMeshはどのようなデータに対応していますか?

XMeshは任意に命名されたデータチャンネルの保存と読み込みを行いますが、現在XMesh for Mayaに実装されている機能は、3ds Maxで保存されたチャンネルの特定のサブセット及び、ハードコーディングされたチャンネルセットに対応しています。VertexおよびFaceリストだけが必須で常駐しており、他のすべてのチャンネルはオプションで、保存するときに無効化できます。

Autodesk Mayaの使用時に、XMeshが保存するもの。

  • Vertex リスト (常時)
  • Face リスト(常時)
  • Edge Smoothing(3ds Max起動時は3ds MaxのSmoothing Groupsに自動的に変換されます)
  • Vertex Normals (3ds Max起動時に双方使用可能な場合、Smoothing Groupsを優先します)
  • Material割り当て(3ds MaxのMaterial IDsとして読み込まれます)
  • Current UVセット(map 1チャンネルとして)
  • Custom UVセット(命名したmap2からmap99まで)存在する場合。主に3ds MaxとMaya間の往復データ転送用。)
  • Vertex Velocity (存在する場合およびユーザーからの明示的に要求がある場合)

Autodesk 3ds Maxで保存されたファイルを読み込む場合、現在XMesh MYは以下のチャンネルに対応しています。

  • Vertexリスト
  • Faceリスト
  • Maya Edge Smoothingに変換されたFaceごとのSmoothing Groups
  • Vertex Normals(Smoothing Groups チャンネルも利用可能な場合、 Edge Smoothing が優先されます)
  • FaceごとのMaterial ID (Mayaに読込み時にはShading Groupsに変換)
  • VertexColorチャンネル (Mapping Channel 0)、vertex color setとして読み込まれます。
  • TextureCoordチャンネル (別名Mapping Channel 1) map1と命名されたUVセットとして読み込まれます。3ds Max UVWチャンネルの3番目のコンポーネントは失われますのでご注意ください。
  • Mappingチャンネル (Mapping2からMapping99まで)はmap2からmap99として読み込まれます。3ds Max UVWチャンネルの3番目のコンポーネントは失われますのでご注意ください。
  • Vertex Velocity(要求に応じて、サブフレーム上のvertexポジションを外挿するためにLoaderで使用されます)

 

XMesh Loaderはどのように動作しますか?

XMesh Loaderノードはジオメトリオブジェクトであり、Maya内の他のジオメトリオブジェクトと同様に修正することができます。アニメーション化された変形を含む、読み込まれたジオメトリを変形するために、自由に移動/回転/スケールすることができます。XMesh Loaderを他のオブジェクトの親や、階層の一部にすることができます。メッシュは1つのフレームから次のフレームへ完全に変更することができるため、トポロジに従属する変更を使用しない方が良いでしょう。

 

File Sequences (ファイルシーケンス)

XMesh Loaderオブジェクトは、ディスクからXMeshシーケンス(Render SequenceおよびProxy Sequence)を1つか2つ読み込むことができます。

Render Sequenceは、オブジェクトのレンダリング時間の表示や、もしProxy Sequenceがどれも保存されていない場合、オプションでビューポートの表示用に使用されます。Proxy sequenceが存在する場合でも、必要であればRender Sequenceを強制的にディスプレイに表示させることができます。

オプションであるProxyシーケンスは、通常は低解像度で保存され、高速なパフォーマンスのためにビューポートプロキシとして使用されますが、必要であればレンダリングするために選択することもできます。(例えば、高速なプレビュー用に)

この2つのシーケンスは異なるサンプリング段階で保存することができ、完全に異なるチャンネルを含むことができます(例:Proxyシーケンスは、データ量を削減して再生スピードを改善するために、Velocities、Mapping、MaterialsまたはSmoothingデータを削除することができます)。さらに、Proxyシーケンスには、ユーザー任意の割合でポリゴンを削減して保存するオプションがあります。

どんなXMeshファイルでもシーケンスからXMesh Loaderで選択することができ、必要であればフレーム番号を現行もしくはカスタムの時間に置き換えることができます。また、オプションとして、毎回シーケンスから1フレームだけ読み込むことができます。この場合、シーケンス全体の代表として選択されたフレームは、フレーム番号と置き換えることなく使うことができます。

 

Retiming (リタイミング)

XMesh Loaderは、時間内の再生をオフセットするためのコントロールの露出や、カスタムグラフを使ったシーケンスのリタイムが自由に行なえます。

またXMesh Loaderは、リタイムのコントロールが存在しないフレームを要求しないことを保証するために、シーケンスの読み込みをユーザー定義のフレームレンジに制限することができます。

 

Memory Caching (メモリーキャッシング)

XMesh Loaderは、前もってフレームをメモリーに読み込まず、既に読み込んだフレームもメモリーに保存しません。これは、単一フレームがほぼすべてのRAMを使いきるようなかなり複雑なメッシュで問題が起こるのを避けるためです。

XMesh Loaderは、変更されていないチャンネルデータの読み込みを加速するために、個別のチャンネルのメモリーキャッシングに対応しています。例えば、Faceリストが複数のフレーム間で一貫性がある場合、最初のフレーム上で1度だけ読み込まれ、ディスクから圧縮データにアクセスしなくても、その後に続くフレーム上にメッシュを作成するために再利用されます。

XMesh Loaderが各フレーム上で同じ単一フレームを使用するように設定されているとき、それがキャッシングされ、各フレーム上では再読み込みされません。もし、再生が開始と最終フレームが同じカスタムレンジに制限されている場合、特定のフレームは、変更の度にディスクから再読み込みされます。

 

Multi-Threading (マルチスレッド)

XMesh Loaderは、読み込み処理を加速させるためにマルチスレッドを使用します。各データチャンネルは分離された圧縮ファイルに保存され、展開は、CPUに負担をかけるシングルスレッドよりはむしろ、分離したスレッドが各データチャンネルを展開するために分散します。これは、8スレッドのマルチコアマシンは最大8つのデータチャンネルを同時に読み込みが可能なことを意味します。

 

ライセンス認証の方法は?

XMesh Saverは、アプリケーション間非依存のフローティングライセンスです。

XMesh Saverにはフローティングライセンスが必要です。1本のXMesh Saverライセンスは、同時に保存しない限り、複数のアーティストが異なるマシン上で使用することができます。

Deadlineでの同時の処理を含む、並列でXMeshファイルを保存する必要がある場合、複数のXMesh Saverライセンスが必要になります。

XMesh Saverライセンスは、XMeshの全ての実行環境で同じライセンスが使用可能です。Autodesk MayaとAutodesk 3d Maxの両方からのキャッシングで使用でき、他のアプリケーションで将来的に対応するXMesh Saverを実行するためにも使用できます。

 

XMesh Loaderは、読み込みとレンダリングをライセンス無しで行なえます。

XMesh Loaderは、対応しているどのアプリケーションでもライセンスを必要としません。商用版XMesh Saverで保存したXMeshデータの読み込み/表示/レンダリングを行うために無償でダウンロードとインストールができます。