続・ざっくりOmniverse - Layerを使おう
引き続きOmniverseを触っていこうと思います。
2回目は、CreateのLayer周りの挙動を見ていこうと思います。
レイヤーを作る
まずは、CreateをNewSceneします。
そうすると、RootLayerがAuthoring Layer になった状態でシーンが作成されます。
Authoring Layerは、PhotoShopなどのレイヤーが選択された状態で絵を書くのと同じで
Authoring LayerになっているUSDファイルに対して
Editが行われます。
なので、例えばCubeを作れば、Authoring LayerにCubeが作成されます。
つぎに、Layerを追加してみます。
Create Sublayerをクリックしてみると
レイヤーが追加され、NewSceneから特に保存していない場合
追加したレイヤーに、先程の編集が追加されます。
レイヤーを更に作る
さらにレイヤーを追加してみます。
追加できました。
このレイヤーを、Authoring Layerに変更して、別のレイヤーにあるCubeを
編集してみます。
今回はマテリアルを追加してみます。
addMaterials.usda を AUthoring Layer にして、PreviewSurfaceを追加します。
そして、作ったマテリアルをビューポートのオブジェクトにDrag&Dropでアサインできます。
そして、シェーダーを選択して Diffuse Color をわかりやすい色にします。
アサインできました。
このとき、addMaterials.usd にも、▲つきのCubeが表示されました。
このusdを覗いてみると
over "Cube"
{
rel material:binding = </World/Looks/PreviewSurface> (
bindMaterialAs = "weakerThanDescendants"
)
}
over で、Cubeが定義されていて、Bind情報のみがレイヤーに書かれるようになりました。
この over (▲)は、いわゆる「差分」を表していて
他のレイヤーに定義がある場合にのみ上書きする(ほかが存在しなければ何もしない)
ようになります。
このレイヤーで別レイヤーに同じ処理があった場合どちらが強いかみてみます。
こんなかんじで新しく addMaterialsB.usd というレイヤーを作ります。
シェーダーができました。
合成結果を見ると、シェーダーが2つある状態になります。
このシェーダーを赤くすると
赤くなりました。
つまりは、上のレイヤーのほうが強い(優先される)というのがわかりました。
こんな感じで入れ替えてみると、上のほうが強い事がわかります。
そして目のマークをON/OFFでレイヤーの表示非表示がPhotoShopなどと同じように
編集できることがわかります。
このあたりはとても直感的でわかりやすいですね。
レイヤー結合
このレイヤーは、結合ができます。
まず1つ目が Flatten Sublayers。
これはその名の通りすべてのレイヤーを「フラット」にします。
実行すると、サブレイヤーがなくなり、RootLayer1つに統合されます。
次が、 Merge Down Oneです。
名前の通り、指定のレイヤーの1つ下のレイヤーに
内容を統合します。
このあたりの操作は、PhotoShopと同じ感覚で使えるのが良いです。
レイヤーのネスト
先程までのこのような RootLayer直下にレイヤーが並んでいる状態は
rootLayer.usda の subLayers に、 addMaterials.usd と testLayerA.usd が
書かれている状態になります。
サブレイヤーはこれだけではなく、サブレイヤーの中にもサブレイヤーを追加できます。
こんなかんじ。
ここに、青いマテリアルを追加してCubeにアサインしてみます。
どん。
しかしなにもおきません。
これはどういうことかというと、サブレイヤーの中にサブレイヤーがある場合は
サブレイヤーの中からコンポジションされていくせいです。
強いレイヤー側のOverを消すと(Delete Delta で消せる)
より強い方の主張が消えるので、サブレイヤー内のサブレイヤーの記述が
反映されます。
まとめ
Omniverseのレイヤーは、SOLARISよりもより直感的で、まさに「レイヤー」として
扱えることがわかりました。
そしてこの個別のレイヤーにLiveSyncをすれば、複数人で同時作業とかも
かんたんにできそうで、夢が広がります。
Discussion