コンテンツにスキップ

CompArc(5) 特殊化(Specialize)

コンポジションの中でもかなり特殊すぎて、詳しく構造を調べていなかった
Specializeを紹介しようと思います。

コンポジションの強さ(LIVRPS)では最も弱いのがSpecializeです。
その挙動は継承(Inherits)とよく似ていますが
重要な違いとして Specialize/Inherits とReference 比べてオピニオンが
強いか弱いか...という違いがあります。
文字だけだとわかりにくいので、
https://graphics.pixar.com/usd/docs/USD-Glossary.html#USDGlossary-Specializes
USD GlossaryのSpecialize にかかれているサンプルを使用して
図で説明してみようと思います。

Specialize

Robot.usd と RobotScene.usd の2つのレイヤー内のコンポジションは
このようになっています。

まず、サンプルをusdviewで表示するとこのようになります。

1
2
            # specialize roughness...
            float inputs:specularRoughness = 0.2

Robot.usd の CorrdedMetal の specularRoughness に、 0.2 とある通り
最終的な結果を見ても 0.2 になっています。

Specialize は Reference よりも弱いオピニオンなので、
Compositionを確認すると、Robot.usdでまずSpecializeで合成され
その合成されたあとに Reference されていることがわかります。

コンポジションの順番を追記すると、このようになります。

ここで注目なのが、Robot.usdの CorrodedMetal.specularRoughness です。

diffuseGainは、Specializeのおかげで Metal.diffuseGainの値が合成されていますが
specularRoughness は、CorrodedMetalにオピニオンがあるため、その値が優先され 0.2になります。

Inheritsとの比較

比較のためにInheritsに変更するとどうなるか確認してみます。

Inheritsの場合は、最終的な合成結果が変わっているのがわかると思います。

Compositionを比較してみると、一目瞭然で
Referenceを基準にしてみると InheritsはReferenceより強く
SpecializeはReferenceより弱いことがわかります。

Inheritsの場合は、まず先にReferenceが合成されます。
RobotがRosieにリファレンスされ、そのLocalの 0.1 がMetalに合成されます。
InheritsはそのPrimを合成するので、 Metal と CorrodedMetalの値が同じになります。

つまり、SpecializeとはInheritsと基本同じだが、コンポジションの解決順序が異なるため
大量のReferenceをInheritsでまとめて編集できるInheritsに対して、
Referenceよりも弱いことから、
結果、「Referenceの空間内でInheritsする」挙動になるということがわかりました。

最初に説明した通り「Referenceより弱いか・強いか」というのが大きな差になることから、
RobotScene.usd にリファレンスする前のRobot.usd では、
Inherits であっても Specialize であってもその結果は変わりません。

まとめ

以上が Specialize(特殊化)の挙動についてのまとめになります。
思っていたよりもかなり特殊な処理なので、ぱっと使い所が思いつかないですが
https://fereria.github.io/reincarnation_tech/10_Houdini/11_SOLARIS/13_create_usdAssets_01/#_11
以前HoudiniでのUSDセットアップの継承で説明したように
Referenceよりも強いオピニオンであることを利用して、
大量のリファレンスしたアセットをまとめて編集する...というのがInherits(継承)であるのに対して
サンプルのように、リファレンス先のマテリアルの一部バリエーション違いを作る...といった使い方をすれば良いのかな?と思います。

これにて全6種類のコンポジションの動作説明は終了です。
あとは、このコンポジションの解決順序・挙動を踏まえて、シーンをどのように構築するか
考えることになります。


最終更新日: 2021-06-05 03:47:37

Tag