SubstanceDesigner:sbsファイルやsbsarファイルは衝突しないのか?

SubstanceDesigner:sbsファイルやsbsarファイルは衝突しないのか?

snsファイルやsbsarファイルは別のsbsファイルつまりサブスタンスグラフの1ノードとして取り込む事ができる。ここで気になるのが、それらのバージョン違いが混在した場合などに衝突など面倒くさい問題が起きないのか?という事である。

なお、関連で以下のような調査を事前に行っている。

以下、いくつかのややこしいパターンを検証する。

外部sbsが更新されたら

グラフAがこの内容だとする。単純に青いカラーを出力する。

グラフBにグラフAのsbsを読み込んだ。

ここで、グラフAを更新するとどうなるか。赤い色を返すようにしてみる。

結果グラフBでも赤い色が表示されるようになる。まあ普通の事でこうではないと困る。では、これで読み込まれるのがsbsarだったら?

青い色を返すsbsから書き出しておいたsbsarを読み込んでみたが青い色のままである。sbsの変更はsbsarに影響を与えない。

あらためてグラフAのsbsarをパブリッシュしなおすとグラフBのsbsarもここまで当たり前だ。

同じフィル名でグラフAを別の場所で作り、緑色を返しようにしてsbsarをパブリッシュした。そしてsbsファイルは黄色い色を返すように変更した。

このsbsとsbsarファイルをグラフ2に取り込んでみる。

黄色と緑の出力が得られた。このように、sbsとsbsarは内部IDなどではなくファイルパスで内容が区別されるようである。

さらに複雑な状態

グラフCとグラフDを用意し、それぞれ赤色を変えすグラフAのsbsとsbsarを読み込む。グラフCとグラフDともにこれを左右で合成した画像を返す。

グラフCとグラフDの最初の内容

さらにこれらのsbsarとsbsをグラフEに読み込む。

ここでノードグラフを全部一度閉じ、改めてグラフAの返す色をピンクにして、sbsarをパブリッシュする。

ここでグラフCは何もしないが、グラフDだけ開きなおしてsbsarもパブリッシュしなおす。

このタイミングでグラフDは最新のグラフAの内容を取り込んでいる。グラフCのsbsとsbsarは赤い色を返すグラフAを参照させたままである。

ここでグラフEを開くとどうなるか?

このように面白い状態となった。ヘッダの背景色が緑いろなほうがsbsarで赤いほうがsbsだ。つまりグラフCのsbsarだけが最新のグラフAの内容を反映していない事となる。

まとめの考察

sbsarファイルはパブリッシュした時点でのノードグラフ全体のスナップショットのような物。対してsbsファイルはお互いに参照して依存するファイル群。

sbsarファイルをダウンロードして使うだけのような人はあまり難しいことを考える必要はない。そこに依存関係は存在せず、製作者の意した通りに動く。

他のsbsに取り込まれて使われるようなsbsファイルを配布しているような人(つまり自分)は、依存や後方互換性にある程度気をつかわないといけない。しかし、問題が起きた場合でも依存があまり複雑でなければ、違う場所にsbsファイルを置いてそれぞれ読み込むことでとりあえずの衝突は避けられそうだ。

sbsファイル保存時にすべての依存を組み込んで保存するようなオプションがあるので、場合によってはそれを使ってsbsファイルを配布したほうがいいかもしれない。

調べていない事

sbsarファイルの複雑な入れ子構成の場合は調査していないが、おそらく依存問題は起こらないのではないか。

今回、内容が地味だが、いいまとめ記事だったかもしれない?


Previous post SubstanceDesigner:ファミコン52色カラーパレットノード ver.2
Next post AfterEffects:読み込んだcsvの行数を得る