参考資料

UsdFbx プラグイン

USDでFBXを読み込むことができるプラグインが公開されています。プロジェクトがUSDに完全に移行するまでの間、既存のデータ(FBX等)をUSDのように使えるようにするためのプラグインだそうです。

https://github.com/Remedy-Entertainment/usdFBX

 

usdFbx

このプロジェクトは、USDレイヤー内でのAutodesk Fbxファイルの読み込みと合成を可能にするUSD用 SdfFileFormat プラグインです。このプロジェクトは、スタンドアロンバージョン/Houdini専用にビルドされたプラグインを設定します。

MayaUSDはサポートされていますが、今のところローカルでビルドされたバージョンのMayaUSDのみがテストされています。MayaUSDのパブリッシュされたビルドに付属するUSDライブラリを使用することで、理論的には動作するはずですが、これは未知の領域です。

このプラグインは、USD のソースにバンドルされている Alembic のサンプルをベースにしているため、類似点が多くあります。将来的には、このプロジェクトはリファクタリングされてシンプルになるかもしれません。

 

機能と制限

  1. 以下のFBXノードタイプをサポートします。
    • FbxNodeAttribute::eNull
    • FbxNodeAttribute::eMesh
    • FbxNodeAttribute::eSkeleton
    • FbxNodeAttribute::eCamera
  2. マテリアルはまだサポートされていませんが、近い将来のロードマップにあります。
  3. カスタム FBX プロパティは、userProperties: プロパティ名前空間がプレフィックスとして付いた USD プロパティに変換されます。Custom Metadatatumもまた、これらに対して設定されます。
  4. USD によるファイルフォーマット自体へのアクセスはマルチスレッドですが、FBX SDK 自体とのやりとりは今のところシングルスレッドです。
  5. ボーンごとのアニメーションプロパティは、UsdSkelAnimプリムのカスタムプロパティセットに記録されます。
  6. プラグインは、USDからFBXに書き戻す機能をサポートしていませんし、今後もサポートしません。FBXデータの編集は、新しいサブレイヤー/エディターゲットで行うことを推奨します。
  7. すべてのFBXシーンはY-up、0.01mPerUnit (cm)に変換されます。

 

HOUDINI

Houdiniプラグインを使用するには、CMAKE に SIDEFX_HDK_LOCATIONを設定する必要があります!

PXR_PLUGINPATH_NAME環境変数に<PATH TO INSTALLED USDFBX_HOUDINI/RESOURCES>を追加し、同じシェルからHoudiniを起動します。その後、上のレイヤーのリファレンス/サブレイヤー/などを追加したり、fbxを直接指定することができます。

 

 

Northlightの開発 OpenUSDのコンテンツワークフロー

https://www.remedygames.com/northlight-openusd-workflows/

Northlightのテクノロジー・スタックに関する前回のブログ記事でお約束した通り、今回は私たちの技術についてもっとお話したいと思います。今回はこのスタックの非常に具体的な部分、つまりコンテンツ・パイプラインのワークフローにOpenUSD(別名:Universal Scene Description)を組み込む予定です。

背景を説明すると、私たちはこれまで、3Dアーティストやアニメーターなどが、Autodesk Mayaのようなデジタル・コンテンツ・クリエーション(DCC)ソフトウェア群から、アセットごとに私たちのデータ変換プロセスに直接コンテンツを出力するというモデルで運営してきました。このプロセスは、DCC出力を、ジオメトリやアニメーションなどのさまざまなアセットタイプに最適化されたランタイムデータフォーマットに変換する役割を担っています。例えば、コントロールのジェシーを例にとってみましょう。私たちの現在のワークフローでは、ジェシーの衣装は私たちの才能あるリギングチームによってDCCで組み立てられ、その後、Autodesk FBXのような中間ファイルフォーマットに完全な衣装をエクスポートします。私たちのデータ・コンバーターはこのFBXファイルをピックアップし、対応するランタイム・データ・フォーマットに変換します。

 

このようなアーティストの手によるユニークなコンテンツは、これまでもうまく機能してきました。しかし、OpenUSDを使えば、同じレベルの忠実度を維持しながら、アーティスト間の並列編集ワークフローを可能にすることができます。要するに、よりハードにではなく、よりスマートに仕事をするということです。

ジェシーの例に戻って、OpenUSDのワークフローを考えてみると、かなり面白くなります。アーティストがDCCで衣装を組み立て、それを1つのユニークなアセットとしてエクスポートする代わりに、衣装のすべてのコンポーネント(靴、シャツ、顔、手など)がそれぞれのアセットとなり、OpenUSDを使って組み合わせることができます。これは、OpenUSDがDCCと変換されたデータの間の一種の仲介「アセンブリ」ステージとして機能するため、はるかに柔軟なワークフローを可能にします。

 

この場合、OpenUSDを使用することで、個々の衣服が単独で更新され、ターンアラウンドタイムが大幅に短縮されます。さらに、データの重複がなくなるので、アセットのロード時間が短縮されます。例えば、ジェシーの頭部を表すOpenUSDアセットは、すべての衣装で重複するのではなく、1つだけとなります。

重複をなくすことができることは、モジュラーコンテンツにとって大きな恩恵ですが、OpenUSDは、バリエーションを表現する能力、既存のデータを非破壊で上書きする能力、クロスエンジンやプロジェクトで移植可能なデータを作成する能力なども提供しています!OpenUSDそのものについてもっと知りたいなら、OpenUSDのオープンソース初心者向けガイドであるBook of USDを見てください。

しかし、どのようにすれば、よりスマートでハードでない実践的なポイントに到達できるのでしょうか?私たちは最近、現在の現状維持のパイプラインから、OpenUSDの恩恵を十分に受けられる状況に移行する、やっかいな移行期間の選択肢を検討しています。これを達成する1つの方法は、基礎となるサービスを徐々にOpenUSDを使用するように移行させることですが、コンテンツクリエイター側はそのままにしておきます。例えば、私たちの変換プロセスが、フードの下でOpenUSDを使用できるようにすることができます。(これは、変換プロセスがOpenUSDデータをインジェストし、我々の最適化されたランタイムデータに出力できることを意味する)。とはいえ、コンテンツ・パイプラインがOpenUSDデータを出力しなければならないので、これだけをサポートすることは、コンテンツ作成側に破壊的な変化をもたらします。

この混乱を避けるために、私たちはOpenUSDプラグイン・ソリューションを選ぶことにしました。私たちはOpenUSDのために、Autodesk FBXのような、私たちが現在使用しているデータフォーマットを読み込むことができるプラグインを書いています。このようなプラグインによって、OpenUSD内で現在使用しているファイルフォーマットをそのまま使用することができるようになります。プラグインは、フォーマット固有のデータを取り込んで OpenUSD のデータを出力する役割を担い、OpenUSD の変換プロセスがこれらのフォーマットをあたかもネイティブの OpenUSD であるかのように操作できるようにします。

時間が経つにつれて、これは、パイプラインとコンテンツチームが、いつでも適切なときに OpenUSD に移行できることを保証します。その上、手動でOpenUSDに変換することなく、このプラグインのメカニズムを使って、すぐにサポートできる既存のコンテンツもたくさんあります。

なぜこんなことを言うのか?なぜなら、Northlightは私たち独自の技術ですが、OpenUSDのようなフリーオープンソースソフトウェアの精神に忠実でありたいからです。私たちは、このプラグインが、OpenUSDへのパイプライン移行の基礎(またはドロップインソリューション!)として役立つことを願っています。

コメントを残す