USDの便利なツールたち (2) usdcat
USD AdventCalendar2021 6 日目は USD に付属する便利ツール usdcat について 紹介したいとおもいます。
usdcat とは
usdcat は、 https://graphics.pixar.com/usd/release/toolset.html#usdcat USD ツールの1つで、引数で受け取った usd ファイルを、テキストとして標準出力・またはファイルに出力します。
usdcat D:/sample.usd
使用方法は、コマンドプロンプトから usdcat 確認したい usd ファイルを指定します。 指定すると、上のように指定した usd ファイルの中身を表示してくれます。
USDA - USDC 変換
引数を指定しない場合は、標準出力で usd ファイルの中身を表示するだけですが、 引数を指定することでアスキーとバイナリの変換をすることができます。
usdcat D:/sample.usd --usdFormat usdc -o D:/sample2usdc.usd
アスキーのファイルをバイナリに変換した例。逆の場合は usdFormat を usda にすることで変換できます。
flatten/flattenLayerStack
usdcat の機能に flatten という機能があります。 これは、指定の usd のコンポジションをすべてベイクした状態で出力する機能です。
たとえばこんな Cube の usd ファイルを、
このようにリファレンスしたファイルを usdcat を用意します。
usdcat D:/root.usda
--flatten をつけずに実行すると、指定した usda の中身をそのまま(コンポジションなどの情報も含んだまま) 表示されます。
対して、--flatten するとどうなるかというと
--flatten した場合、コンポジションの情報はなくなり1つの usd で完結する状態になりました。 コンポジションがあった部分(refCube に cube.usda の cubePrim がリファレンスされている)はなくなり コンポジションの結果の Prim になっているのがわかるかとおもいます。
stage = Usd.Stage.Open("D:/root.usda")
print(stage.ExportToString())
--flattenLayerStack はすべてを Flatten するのではなく、サブレイヤー部分だけを Flatten します。
こんな感じにサブレイヤーにして実行すると
このようになります。 サブレイヤーだけ Flatten されていますが、リファレンスは残っているのがわかります。
mask
mask は、 で説明した OpenMask で指定した Path 以下だけをロード・表示する機能です。
こんな感じでファイルのうち /a のみロードする場合
usdcat --mask /a --flatten D:\root.usda
このようになります。
まとめ
以上が usdcat でした。
usdcat は usdc を usda に変換したりまたその逆をしたりする場合や 手書きの usda のフォーマットが正しいか確認したり、コンポジションの結果を確認したり 大量のレイヤーに分けられた usd を1つにまとめたりといったことが可能になります。
usdchecker と同様、とても便利なツールなのでぜひともお試しください。