SIGGRAPHで配布されるCGWマガジンにUSDの生い立ちに関する記事が掲載されているようです。
http://digital.copcomm.com/i/1277231-edition-2-2020/0?
記事についてUSD開発者の方が日本語で紹介されてます。
ピクサーが90年代にトイストーリーを作り始めたとき、すでにスケーラビリティの問題に対処する必要があることがわかった。多人数が同時制作をするためには、個々人の作業を別々のファイルに対してできるようにしないと長編アニメなど作れない
(※恐ろしい慧眼である)— 技師長 (@gishicho) August 20, 2020
obj, collada, fbx, … いろいろあるが、ピクサーでは「モヒート」と呼ばれる多対多のデータ互換レイヤーを作って新たなソフトウェアに対応していた。しかし維持が大変だしスケーラビリティ問題を解決しなかった。大きな変化は2010年に登場した Alembic。
— 技師長 (@gishicho) August 20, 2020
リグやプロシージャルを横に置きフラットなデータ構造を維持したAlembic は利用が拡大していき、ほとんどのツールが対応した。ただ、ピクサーは Alembic は使わず、TidScene という同様のベイクジオメトリを開発した。
— 技師長 (@gishicho) August 20, 2020
どのショットも何十ものファイルに分かれていて、基本的なジオメトリ、UVなどのパラメータ、シミュレーション結果のオーバライド、シェーダ、シェーディングネットワーク、マテリアルバインディング、などが全部別々になっていた。
— 技師長 (@gishicho) August 20, 2020
このときレイヤーシステム(Photoshop のレイヤーのようなもの)、リファレンス、継承、バリアントなどのコンポジションシステムが完成し、後に USD となる。
— 技師長 (@gishicho) August 20, 2020
Presto で作ったデータを後段に流すために、Alembic に似た機能の、berkeleyDB ベースの TidScene を作って対処することとした。ところがすでにコンポジションが広く利用されており、すぐリファレンスや継承などが TidScene にも必要になってしまった。
— 技師長 (@gishicho) August 20, 2020
実験では TidScene と同等のパフォーマンスを出したままコンポジションができた。ただこれだけでは満足せず、今後10年以上使えるものにしたかった。USD スタックのあらゆる部分をマルチスレッド化し、強力なインスタンス機能も追加した。こうして高パフォーマンスの良いライブラリになった
— 技師長 (@gishicho) August 20, 2020
レイヤー:複数アーティストでのコラボレーション
Photoshop と同じアイディアだが、レイヤーごとに別ファイルで別々のアーティストが編集する。これで他人の作業を壊さずに同時に編集ができる。また他の人レイヤーをオーバライドできる。— 技師長 (@gishicho) August 20, 2020
バリアントセット
昨今の CG フィルムではアセットバリエーションを非常に多く作る。USD ではどんなに深くリファレンスされていてもこのバリエーションを選択することがロバストにできる。またモデル・シェーディング・リグや LOD などあらゆるデータに対してバリアントを定義できる。— 技師長 (@gishicho) August 20, 2020
最初の Hydra は(当時)最新の OpenGL 機能を駆使して、長編映画のフルセットをリアルタイムにプレビューすることができた。導入していくにつれ、OpenSubdiv と同じゴールにすべきだ、と考えるようになった。それはつまり、どんなツールでも一貫して同じ内容が、高速かつ高精度に見える、というもの。
— 技師長 (@gishicho) August 20, 2020
今では Presto 内で RenderMan などの Hydra レンダラ使えるようになった。ただ、正直言うとピクサー内でもまだすべてのポテンシャルを使い切れていない。これからだ。
— 技師長 (@gishicho) August 20, 2020
USD がユニバーサルシーン互換の目標を達成するには 3D ベンダがネイティブにサポートしてもらうことが必要である。様々なデータフォーマットを扱えるようにプラグイン構造も備えている。これらのサポートはファイルフォーマットプラグイン、アセットリゾルバ、カスタムスキーマとして利用可能。
— 技師長 (@gishicho) August 20, 2020
このロールアウトは大きな問題もなくうまくいった。旧フォーマットの TidScene と USD を同時に生成して、初期はプロダクションでは TidScene の方を使った。bcsystem というツールを作って、二通りのレンダリングをして毎日比較し続ける、ということをした。そしてこの差がある限りバグを直し続けた。
— 技師長 (@gishicho) August 20, 2020
社外では、LumaPicture, DNeg, AnimalLogic, DreamWorks, MPC, RodeoFX, Weta らの協力も得て、SIGGRAPH2016 の BoF についに USD を github に公開した。
— 技師長 (@gishicho) August 20, 2020
すべての共通言語となり、デバッグツールが部門を超えて使えるようになった。MaterialX が発展したら、インハウスの OSL/GLSL コードから MaterialX を使うようになるかもしれない。
— 技師長 (@gishicho) August 20, 2020
Foundry は Katana に Hydra ビューポートをいれた。2019 年には Houdini が Solaris を発表、商用ソフトによる USD ベースワークフローを作った。他にも Unity, UnrealEngine, Blender など、たくさんのソフトに統合されている。
— 技師長 (@gishicho) August 20, 2020
リグサポートの要望は根強いが、UsdSkel は群集用に利用可能。ある種のプロシージャルサポートに欠けている点もある。しかし手厚いコミュニティからのサポートのおかげで、今までピクサーでは想像もしなかったようなユースケースが提案され、貢献されている。今後もこれを続けていく。
(完)— 技師長 (@gishicho) August 20, 2020