カテゴリー: USD

CG, USD

USD のビルドの進捗を確認する

以前、CGWorld の記事で USD のビルドの進捗がわかり辛いということを書いたのですが、最近のバージョン(?) では ${INSTALLDIR}/build/USD/log.txt にビルド時の stdout(stderrも?) の内容が出力されるようです。

そのため、tail を使ってこんな感じで進捗の確認ができます。

[chiyama@docker USD]$ tail -f log.txt
[ 85%] Building CXX object pxr/usd/lib/usdGeom/CMakeFiles/_usdGeom.dir/wrapBasisCurves.cpp.o
[ 85%] Building CXX object pxr/usd/lib/usdSkel/CMakeFiles/usdSkel.dir/cacheImpl.cpp.o
[ 85%] Building CXX object pxr/usd/lib/usdLux/CMakeFiles/usdLux.dir/diskLight.cpp.o
[ 85%] Building CXX object pxr/usd/lib/usdShade/CMakeFiles/usdShade.dir/debugCodes.cpp.o
[ 85%] Building CXX object pxr/usd/lib/usdUtils/CMakeFiles/usdUtils.dir/coalescingDiagnosticDelegate.cpp.o
[ 85%] Building CXX object pxr/usd/lib/usdShade/CMakeFiles/usdShade.dir/input.cpp.o
[ 85%] Building CXX object pxr/usd/lib/usdUtils/CMakeFiles/usdUtils.dir/debugCodes.cpp.o
[ 85%] Building CXX object pxr/usd/lib/usdUtils/CMakeFiles/usdUtils.dir/dependencies.cpp.o

CG, USD

AL_USDMaya

PIXAR 標準の USD Maya プラグインとは別に、AnimalLogic が公開している AL_USDMaya があります。個人的には、Maya を中心に据えて USD ベースのパイプラインを組むのならこちらが本命じゃないかなと思っています。あんまり確たる根拠は無いですが。そこは勘ですよ勘!!セブンセンシズですよっ!

PIXAR 実装は Scene Assembly として USD の情報を扱う実装になっていますが、AL_USDMaya はそのあたりの扱いを自前でゴリゴリと頑張っているようです。.usd ファイルを読み込むと AL_usdmaya_ProxyShape ノードが作成され、単一のノードとして表示されるのですが、ビューポート上でオブジェクトをピックするとそこまでの階層がシーン中に現れて操作できるようになります。

このプラグインを使用している様子は “AL_USDMaya Layout and Animation Workflow” で見ることができるのですが、結構独自のツールを作って実現している機能が多いようなので、オープンソースになっているプラグインをビルドすればこれができると思ってしまうのは甘い感じです。そもそも、Hydra を Maya 上で使ってるっぽいことを言ってるんですがこれは一体。。。?

あと、手元でも環境を作ってみてはいるものの、まだ完全に動くようにはなっておらず試行錯誤しているところです。特に VP2 との相性が悪い様でオブジェクトのピック周りの問題が解決していないです。この辺りは PIXAR 版とは違って自前でゴリゴリ頑張っている弊害ですね。

もしかしたら Luma Pictures の outliner を併用すれば PIXAR 標準 Maya プラグイン(+ゴリゴリ自前開発)でも必要なことはできるのかもしれないですが。。。。このあたりは引き続き要調査です。

CG, KATANA, USD

USD for KATANA

USD のリポジトリには KATANA 用プラグインも含まれています。ビルドも難しくなく、KATANA プラグインビルド用のオプションを追加して USD をビルドするだけですんなりいけます。

ビルドができたら、KATANA が USD プラグインを認識できるように起動スクリプトに手を加えます。私はこのようにしました。

#!/bin/sh

export KATANA_ROOT=/opt/Katana3.0v6
export DEFAULT_RENDERER=arnold
export USD_INSTALL_ROOT=/opt/usd

export KTOA_ROOT=/opt/KtoA-2.2.1.0-kat3.0-linux
export "KATANTA_TAGLINE=With KtoA 2.2.1.0"

export KATANA_RESOURCES=$USD_INSTALL_ROOT/third_party/katana/plugin:$KTOA_ROOT
export KATANA_POST_PYTHONPATH=$USD_INSTALL_ROOT/third_party/katana/lib:$KATANA_POST_PYTHONPAT

export PATH=$KATANA_ROOT/bin:$KTOA_ROOT/bin:$PATH
export PYTHONPATH=${KTOA_ROOT}/python:$USD_INSTALL_ROOT/lib/python:$PYTHONPATH

$KATANA_ROOT/bin/katanaBin "$@"

KATANA を起動すると、PxrUsd から始まる名前のノードが選べるようになっています。

PxrUsdIn でサンプルシーンを読んでみました。
※ZUp なようなので、TransformEdit で X 軸に -90° 回転を加えています

これで、KATANA でも USD を使用することができるようになりました。

CG, USD

USD Maya plugin でできること・概要

Maya での USD 対応についてこれまで大きな勘違いをしていたので、改めてまとめます。ここでは USD のアーキテクチャというより、実際の実装として何ができるのかに注目をします。

PIXAR 標準の USD プラグインでは、様々な方法で USD シーンファイルを Maya に読み込むことができます。

・Import(Open)
・Reference
・Scene Assembly

上の二つの方法で読み込んだ場合、結局は Maya のシーンデータとして扱うだけで、幾ら .usd ファイル内でアセットが分割して管理されていても Maya 上では巨大な一つのファイルを扱っているのと変わりがありません。そのため、Maya では .usd ファイルの入出力はできるけれども一番美味しいところは実質的に使えないのかなと思って調査を打ち切ってしまいました。

つまり、シーンファイルとして読めて必要な情報は再現できるけれども、その情報を保持したまま出力することができないという勘違いをしてしまったわけです。

最も重要だったのは Scene Assembly として読み込むことができることでした。Scene Assembly を用いることで、必要のない時はアセットを一つのノードとして扱うことができ、内部を編集したい場合は展開して操作することができます。

これを用いることで複数の .usd ファイルを読み込んで複雑なアセットを構築し、その構造を維持したまま .usd ファイルとして出力することができます。
少なくとも、この点に関しては Maya+USD で実現できるということになります。そのため、Maya で USD の恩恵を受けることができないというのは誤りです。非常に大きな恩恵を受けることが出来そうです。

Maya+USD を使ってトータルでどのようなことができるかは “05 USD at ALA – Pixar USD Maya plugin” を見るのが早そうです。こちらは Animal Logic の AL_USDMaya と luma pictures の Outliner(usd-qt?) を使用したフローの解説になるため今回使用した純正の実装とはまた別ですが、Maya 上でこんなことができるんだという参考になるかとおもいます。

※こちらは PIXAR 純正の USD Maya プラグインを使用した例でした。。。AL_USDMaya と outliner を使用した例は AL_USDMaya Layout and Animation Workflow でした。訂正記事中で訂正をおこなうという失態、、、、もうダメだ。。。(´・ω・`)