本記事の内容に対して、事実と異なることが含まれている可能性があることに気づきました。今後、検証・訂正記事を書くのでこちらの内容は一旦白紙とさせてください。
(追記)訂正記事を書きました。やはり私の勘違いで、Maya でもかなりの恩恵を享受できそうです
SIGGRAPH ASIA 2018 が始まりましたね。皆さん有楽町の超長いレジストの行列並びましたか~?
今回も PIXAR は “USD and Scene Interoperability: Demystifying the State of the Art”と題して USD の紹介をするためのセッションを設けていました。
この USD なんですが、CGWorld.jp の連載で USD について記事を書いた関係でいろんな人から、「それで、結局 USD って何なのよ?」と聞かれることがちょいちょいあります。そこで、私なりの解釈で USD というものを説明したいと思います。
と言っても USD の内容については元PIXARの手島さんが日本語で詳細な解説をされていたり、本家でも詳細なドキュメントが公開されています。
これと同じ話をしてもしょうがないですし、私もそこまで詳しくないので、本記事では開発元である PIXAR とは別の、ユーザー側の視点から補足する形で USD って一体何なのよ?という疑問にお答えします。
USD って一体何なのよ?
USD にはいくつかの側面があります。
- シーンを記述するためのファイルフォーマット
- シーングラフと API
- パイプライン構築のための基盤技術
このどれもが USD であり、それぞれが密接に関わりあっています。そのため、一緒に解説がおこなわれてしまって混乱を招いている部分が大きいと感じます。そこで、ファイルフォーマットと基盤技術という二つの面を別々に説明します。
※シーングラフと API に関しては今回あまり重要じゃないので割愛します。
シーンを記述するためのファイルフォーマット
いわゆる .usd ファイル(に書かれれている内容)です。これは、ざっくりと Alembic や FBX の凄い版と考えて良いでしょう。DCCTool は .usd ファイルフォーマットの読み書きに対応することで、他のアプリケーションとやり取りをすることができます。
ただし。
ここが大事なことなのですが、アプリケーションが USD の全ての仕様を満たし、潜在能力を発揮できるとは限りません。USD ファイルを読みこんだ後はアプリケーションネイティブなシーンデータになるだけなので、USD の仕様にあるけれどもアプリケーションが対応していない機能は当然実現できません。
たとえば、Maya に RenderMan のシェーダ情報を埋め込んだ .usd ファイルを読み込んで Arnold でレンダリングをしても、RenderMan のシェーダを使ってレンダリングできるわけではないです。当然ですよね。
アプリケーションは、パイプラインの中で自分が必要とする USD の機能をサポートし、共通ファイルフォーマットとして入出力をおこないます。
んじゃ FBX でいいじゃん?って思うかもしれませんが、ここでレンダラまで一気通貫で対応している USD の強みが効いてきます。USD ならパイプラインのごく初めの段階で作ったデータを変換することなく、そのままレンダリングまで持っていくことができます。
また、共通のファイルフォーマットなので複数のアプリケーションを使用してデータを作成する場合にも複雑なデータ変換の手続きを踏まなくてもそのままガッチャンコとできます。
ここまでが共通ファイルフォーマットとしての USD のお話です。これは USD を導入するとすぐに享受できるメリットです。これだけでも十分すごいですよね。
パイプライン構築のための基盤技術
これが実はかなり厄介というか、初見殺しの内容になっています。
USD という基盤技術を使うことでコンカレントパイプラインを構築することができますよということでプレゼンでもかなり力を入れて説明がされるところなのですが、残念なことに
通常、我々はそのまま享受することはできません。
もう一回言います。
我々には使えません。
え?え?どゆこと!? PIXAR 嘘ついてるの!?と思うかもしれませんが、そんなことはありません。事実、PIXAR では USD を使ってそういうパイプラインを作っていますから。
そう、Presto があればねッ!!!!
先ほどのファイルフォーマットの時の説明を思い出してください。
“USD の仕様にあるけれどもアプリケーションが対応していない機能は当然実現できません”
※(訂正)USD プラグインとして提供される機能で対応している内容もあり、Maya の場合は USD 標準の Maya プラグインでかなりのことができるようです。USD が実現しようとしていることを完全に実現できているかはちょっとわからないですが、かなり高いレベルで実装されているようです。
つまり、コンカレントパイプラインを構築するためにはそれに対応した環境を自分で作る必要があります。これは当然ですね。パイプラインは各社各様それぞれなのでそこを USD がどうこうすることはできません。
PIXAR は自社で Presto を開発して対応していますし、AnimalLogic は AL_USDMaya を開発して Maya 上で対応しています。コンカレントパイプラインという思想を実現するための強力な基盤技術として USD を使用するのです。
また、当然ながらこの部分を USD に依存する必要性も無いのです。KATANA なんかは入出力として USD に対応しますが、シーン管理は自前でおこなっています。
よくわからないけど凄そうな usdview
ここで混乱に拍車をかけているのが usdview の存在です。USD のデモでは必ず登場し、ある意味 USD の顔のような存在になっています。ただ、これは名前の通り USD シーンのビューワでしかなく、シーンの編集機能は一切無いです。
何も知らないと “PIXAR で使っている CG ソフトがオープンソースに!?私も同じツールで CG を作れるの!?”とワクワクしてしまうのですが、そういうわけではないのです。
usdview 自体はとても強力なツールで、.usd ファイル(だけではなく、.abc ファイルも)を扱う時には手放すことのできない相棒のような存在です。
まとめ
私の視点からみた USD の概要についてまとめてみました。特に、PIXAR の中の人にとっては当たり前すぎて省略してしまいがちなことを重点的に書き出してみたので、この内容を念頭に置いた状態で PIXAR の資料を読むと、今までモヤッとしていた部分が晴れてくるんじゃないかなとおもいます。