Skip to main content

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 と同様、とても便利なツールなのでぜひともお試しください。