コンテンツにスキップ

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 で説明したOpenMaskで指定したPath以下だけをロード・表示する機能です。

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

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

このようになります。

まとめ

以上が usdcat でした。

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

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


最終更新日: 2022-01-28 18:19:54