(USD)」について、使ってみたので感想や引っかかったこと、メリット・デメリットなんかをつらつらと書いていきます。USDについては元Pixer社の手島さんが今年のCEDECで基本的な部分を講演されています。新たなコンテンツパイプラインを構築する大変わかりやすく、USDの利点もうまく語られていますので、興味がある方はご一読ください。GitHubでソースコードが公開されていますので、こちらをビルドすれば誰でも使用できるようになります。Descriptionライセンスは改変Apache2.0ライセンスとなっているようです。Apache2.0ライセンスは改変した場所を明示する必要があったはずなので、ゲームのランタイムで使用するにはちょっと不向きかもしれません。ゲーム開発の場合は社内ツールとかで使うことになると思いますのであまり気にしなくても大丈夫だとは思います。Windowsでのビルドは結構大変ですが、最近はかなり難易度が下がりました。詳しくはこちらの記事をお読みください。Qiitaさて、ここまでが前提。ここからは、MODO用の簡易メッシュエクスポータとそこから独自メッシュ形式へのコンバータを作成した際にわかったことなどをつらつらと書いていきます。私の書いたコードは以下になります。Monsho/D3D12Samples後者のUSDtoMeshは前者のエクスポータで出力したUSDファイルのみで確認していますので、他のどんなUSDファイルでも動作するかは保証しかねます。デバッグビルドがうまくいかない結局解決してないのがこの問題。前述のWindowsビルド方法はRelease版のビルドはできるのですが、この方法ではデバッグ版のビルドはできません。デバッグ版のライブラリが生成されないわけです。ライブラリはRelease版を使うとして、これをリンクするプロジェクトがデバッグ版だとどうなるかというと、単純にビルドが通りません。原因はインクルードするヘッダファイルに_Debugなどの定義を用いて分岐しているので、USDライブラリはRelease、アプリはDebugという方法がどうもうまくいかないのではないかと思われます。Debugでビルドを通したらUSD使用時にクラッシュしたので、やっぱりちゃんとDebugビルドを作成しなければならないようです。VSプロジェクト作成とかちゃんとやるべきだろうとは思いますが、とりあえず使ってみる分には自信のプロジェクトのDebug設定をRelease設定からコピー、最適化だけO0にするなどで対処するのが一番の近道じゃないかと思います。サンプルはあまり多くないまだ使っている人が少ないためだと思いますが、やはりサンプルが少ないです。GitHubで公開されているソースコードにはいくつかのサンプルがtutorrialとして置いてあります。Worldなんかを学ぶとよいでしょう。これらはPythonコードがほとんどで、C++コードはありません。C++での使用方法も基本的には同じですが、やはりサンプルは欲しいところです。4のUSDインポータ、およびMayaのUSDプラグインです。