Skip to content

USDの便利なツールたち (2) usdcat

USD AdventCalendar2021 6 日目は USD に付属する便利ツール usdcat について
紹介したいとおもいます。

usdcat とは

usdcat は、
https://graphics.pixar.com/usd/release/toolset.html#usdcat
USD ツールの1つで、引数で受け取った usd ファイルを、テキストとして標準出力・またはファイルに出力します。

1
usdcat D:/sample.usd

使用方法は、コマンドプロンプトから usdcat 確認したい usd ファイルを指定します。
指定すると、上のように指定した usd ファイルの中身を表示してくれます。

USDA - USDC 変換

引数を指定しない場合は、標準出力で usd ファイルの中身を表示するだけですが、
引数を指定することでアスキーとバイナリの変換をすることができます。

1
usdcat D:/sample.usd --usdFormat usdc -o D:/sample2usdc.usd

アスキーのファイルをバイナリに変換した例。逆の場合は usdFormat を usda にすることで変換できます。

flatten/flattenLayerStack

usdcat の機能に flatten という機能があります。
これは、指定の usd のコンポジションをすべてベイクした状態で出力する機能です。

たとえばこんな Cube の usd ファイルを、

このようにリファレンスしたファイルを usdcat を用意します。

1
usdcat D:/root.usda

--flatten をつけずに実行すると、指定した usda の中身をそのまま(コンポジションなどの情報も含んだまま)
表示されます。

対して、--flatten するとどうなるかというと

--flatten した場合、コンポジションの情報はなくなり1つの usd で完結する状態になりました。
コンポジションがあった部分(refCube に cube.usda の cubePrim がリファレンスされている)はなくなり
コンポジションの結果の Prim になっているのがわかるかとおもいます。

1
2
stage = Usd.Stage.Open("D:/root.usda")
print(stage.ExportToString())

--flattenLayerStack はすべてを Flatten するのではなく、サブレイヤー部分だけを Flatten します。

こんな感じにサブレイヤーにして実行すると

このようになります。
サブレイヤーだけ Flatten されていますが、リファレンスは残っているのがわかります。

mask

mask は、 PopulationMask(OpenMasked)について で説明した OpenMask で指定した Path 以下だけをロード・表示する機能です。

こんな感じでファイルのうち /a のみロードする場合

1
usdcat --mask /a --flatten D:\root.usda

このようになります。

まとめ

以上が usdcat でした。

usdcat は usdc を usda に変換したりまたその逆をしたりする場合や
手書きの usda のフォーマットが正しいか確認したり、コンポジションの結果を確認したり
大量のレイヤーに分けられた usd を1つにまとめたりといったことが可能になります。

usdchecker と同様、とても便利なツールなのでぜひともお試しください。