USD フォーマットチートシート¶
UPythonUSDチートシート では、Python コマンドのチートシートをまとめましたが
こちらは USD フォーマットの内部構造の記述についての Ascii ファイルとして記述した場合のチートシートです。
Usd ファイル内での Path の記述方法¶
USD 内で外部ファイルを読んでいる場合は @@ で囲う。
例)Reference 等
1 2 3 4 5 6 7 |
|
USD 内の SdfPath を指定する場合は
1 2 3 4 5 |
|
<>で囲う。
/ から始まる場合は Root からの絶対パス、なにもない場合は現在の Prim からの相対パスになる。
最低限の構造¶
1 |
|
USD ファイルを記述する場合は、一番頭に #usda 1.0 と書きます。
コレがあれば、すべて USD ファイルとしてロードできます。
Prim を定義する¶
スキーマなしで Prim を定義¶
1 2 3 4 5 |
|
Prim と呼ばれるタグを作成する
1 2 3 4 5 6 |
|
Prim は、このように {} の中に def を記述することでネストできる。
スキーマ(Type 指定)付きで Prim を定義する¶
1 2 3 |
|
クラスを定義する¶
1 2 3 |
|
クラスで定義されているものは、usdview 等でシーンを読んでもシーングラフには表示されない。
Over を定義する¶
1 2 3 |
|
Over の場合は、Prim と違い
すでに Prim がある場合のみ値を上書きする。
定義されている Prim がない場合はなにもしない。
DefaultPrim を指定する¶
1 2 3 4 5 6 7 8 |
|
DefaultPrim とは、リファレンスで usd を読み込んだ場合の起点になる Prim の事。
アトリビュートに値をセットする¶
1 2 3 4 5 6 |
|
アトリビュートを追加する場合、Prim の{}の中に 型 名前 = 値
のように指定する。
Metadata を追加する¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Metadata はレイヤー、プリム、アトリビュートそれぞれに付加情報として設定できる。
指定したい場合は それぞれの定義の後に () を入れて、その中にアトリビュートを追加するように
記述する。
CustomData を追加する¶
1 2 3 4 5 6 7 8 9 |
|
customData = {} を使うと、好きに自分の入れたい Meta 情報をレイヤー、プリム、アトリビュートに対して
追加できる。
リファレンスでモデルを読み込む¶
DefaultPrim が指定されている場合¶
1 2 3 4 5 6 7 |
|
リファレンスで読み込む場合は、読み込む先の Prim の Metadata に prepend references = ### で
ファイルを指定する。
ファイルパスは @@でかこって表現する。
ファイルパスは、現在の usd ファイルからの相対または絶対パスで指定する。
references 時に Prim を指定する場合¶
1 2 3 4 5 6 7 |
|
DefaultPrim の指定がない、あるいはそれ以外の Prim を狙ってリファレンスしたい場合は
ファイル指定の後に <>で囲って SdfPath を指定する。
SubLayer で読み込む¶
1 2 3 4 5 6 |
|
サブレイヤーで読み込むときは、レイヤーの Metadata に対して subLayers = []
を追加して、配列で読み込みたいファイルパスを指定する。
ファイルパスは @@ で囲う。
リレーションを追加する¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
リレーションを追加したい場合は、 アトリビュートを rel で宣言して、
リレーション先の SdfPath を配列で指定する。
継承(Inherits)する¶
1 2 3 4 5 |
|
継承の場合は、継承したい Prim の Metadata に対して prepend inherits = SdfPath を追加する。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
継承は、SdfPath で指定する。
ので、例えば別ファイルに定義されている class や def を継承したい場合は
subLayer で読み込んでから inherits で指定をする。
VariantSet を定義する¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
variantSet は、 variantSet で定義する。
定義した variantSet を Prim で使う場合は、Metadata 内に prepend variantSets = "名前"
を追加する。
その variantSet のうち、選択されているセットは variants で、選択中の値を指定する。
アニメーションの定義¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
コレを手で書くことはないと思うけど念のため。
スタートフレームとエンドフレームは、レイヤーの Metadata に記載。
Key 情報は、timeSamples に Dict 型で記載。
xformOpOrder は、どういう順序で Transform を行うのかを指定する。
マテリアルのアサイン¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
これもまぁ手では書かないけど念のため。
Material アサインはリレーションによって定義されている。
Mesh データはリレーションで Bind 先の Material 情報を保持し、
Material は、Shader との Connection で値を受け取る。