リファレンスについて
コンポジションアークの説明もこれでラスト。
最後はリファレンスとペイロードについて。
リファレンスとは
まず、コンポジションアークの「リファレンス」とはどういう機能かというと
ざっくり言うと、別のレイヤー(usd ファイル)のルート直下にある指定プリム以下を
指定のプリムに接続する機能のことを言います。
まず、このような usd ファイルを準備します。
#usda 1.0
(
defaultPrim = "RootGrp"
)
def "RootGrp"
{
def Sphere "Sphere"{}
}
中身はこんな感じ。
defaultPrim が指定された Sphere1 つだけのファイルです。
このファイルをリファレンスで読み込んでみます。
#usda 1.0
def "Grp"{
def "RefA" ( prepend references = @ref_data.usda@){}
def "RefB" ( prepend references = @ref_data.usda@){}
def "RefC" ( prepend references = @ref_data.usda@){}
}
試しに同じファイルを複数読み込んでみます。
結果、3 つ Sphere ができあがってることが分かります。
どういう状況になっているかというと、
リファレンス先で定義している prepend referencd = ~~~ つきのプリムが
リファレンスしたいファイルの defaultPrim に置き換わるようになります。
上の例でいうと、 RootGrp が RefA という名前になって
RootGrp 以下のプリムがすべてマ ージされ、
こうなります。(RefB,C も同様)
今まで説明したサブレイヤーや継承、バリアントと大きく違うのは
指定がプリムではなくレイヤー(USD ファイル)指定であること。
構造すべてを合成するのではなく、あるプリムに対して別のレイヤーを合成するというのが
異なります。
ペイロードとは
実質最後のコンポジションアークですが、これは実質リファレンスと動作は同じで、
あるプリムに対して指定のレイヤーのデフォルトプリムを接続します。
では、リファレンスとはなにが違うかというと
usdview の Help を見るととてもわかりやすいのですが
--unloaded フラグの Help にある「Do not load payloads」の通り
ペイロードで読まれているものは、指定のフラグ付きでロードした場合「アンロード状態」
でシーンが開きます。
試しに、キッチンセットを --unloaded フラグ付きで読み込んでみると
なにも表示されません。
#usda 1.0
(
defaultPrim = "Ball"
upAxis = "Z"
)
def Xform "Ball" (
assetInfo = {
asset identifier = @./assets/Ball/Ball.usd@
string name = "Ball"
}
kind = "component"
payload = @./Ball_payload.usd@</Ball>
)
{
}