多重着せ替え定義について

Last-modified: 2016-12-19 (月) 23:28:52

執筆者:もっしょくし  ※編集に許可は不要ですが、相談には応じます。

 

この記事は伺か Advent Calendar 2015の22日目です

 

SSP?が実装する「多重着せ替え定義」についての解説記事です。

基本的な着せ替え?設定はできる方向けの記事です。


目次


多重着せ替え?定義とは

どんなもの?

実は名前を知らないだけで普通に使っている方もいらっしゃる気がしてるのですが…。

一言でいうと「着せ替え?のパーツがさらに着せ替え?を持つ仕様」です。

といって済ませるくらいならこんな記事を書くこともないので、以下普通の着せ替え?との比較という形で見ていきましょう。

まずは以下のイメージ図に普通の着せ替え?をざっくり表してみました。

1.png


ご覧のように、元(キャラクターの体など)となるサーフェスがパーツ(服など)となるサーフェスを呼び出す関係ですね。

そう、体や服といくら呼び分けたところで、実際これらはどちらもサーフェスには違いないのです。

であれば、パーツとなるサーフェスにさらに着せ替え?を定義することもできないでしょうか。

つまりこんな感じです。

2.png


実はSSP?ではこのような多重的なサーフェスの呼び出し関係が、着せ替え?に限って(intervalがbindのアニメーション?に限って)許されています。

実際に上記定義のままシェル?として動かしてみると…

3.png

このように、「着せ替え?のパーツにさらに定義されている着せ替え?」もきちんと表示に反映されます。

これを多重着せ替え?定義といいます。

どんなことができるのか

さて、できるのはわかったが実際これがどういう場面で役立つの? という疑問にこたえるべく、続いていくつかの例をあげてみたいと思います。

特定の着せ替え?がONのときのみ有効な着せ替え?

例えばキャラクターが「服A」「服B」の2種類の着せ替え?を持っているとします。

そして、「服A」の時だけ「飾りA」、「服B」の時だけ「飾りB」が表示できるようにしたいとしましょう。

言い換えると「服B」のときに「飾りA」(「服A」のときに「飾りB」)は表示したくない、ということですね。

4.png


多重着せ替え?定義なら、これが可能です。

「服A」や「服B」を着る身体サーフェスではなくて、「服A」のパーツサーフェスに対して「飾りA」を多重的に定義してしまえば、当然「服A」が表示されていない場合には「飾りA」は表示されなくなる、という理屈です。

5.png

上図のように定義しても、着せ替え?メニュー?自体から適応外の着せ替え?を隠すことはできませんが、例えば「服A」が選ばれているときに「飾りB」が選ばれたとしても、シェル?の表示上は変化が起きなくなります。

着せ替え?を反映したアニメーション?

すこし特殊な例がこちらです。

普通のアニメーション?着せ替え?と同時にやろうとすると、なかなかうまくいかないことが多いです。

アニメーション?で動く部位が着せ替え?によって変化のある部位だと、着せ替え?によってアニメーション?が影響を受けてしまうからです。

6.png

上図は腕を上下に振るアニメーション?の各コマを表していますが、着せ替え?によって動く部分(この場合は袖)が変化するため、単純にアニメーション?を定義しようとしてもできません

ここでピンとくるかもしれません。そう、アニメーション?のコマもそれぞれサーフェスなわけですから、そのサーフェス一つ一つに多重着せ替え?定義ができます。

つまり、着せ替え?によって表示の変わるコマを指定できる=着せ替え?を反映したアニメーション?を設定することが可能になるのです。

7.png

さっき多重定義は着せ替え?(intervalがbindのアニメーション?)に限って有効だとか言ってなかったか、と思うかもしれませんが、それは多重的に呼び出される側の話であって、呼ぶ側が(多重的でない)アニメーション?のコマのサーフェスである分には動作するようです。

ポーズ差分用に表示位置だけ異なる着せ替え?定義をする場合の記述の省力化

言葉で聞くとちょっとわかりにくいかもしれませんが、以下の図を見てください

8.png

上記のように立っているポーズと屈んでいるポーズがあるとして、帽子を色々着せ替え?できるシェル?を考えます。

普通ポーズ差分があると、着せ替え?も各ポーズ用に素材を作り直して定義もし直して、と大変なのですが、幸運にもこのケースだと頭の向きが全く同じなので帽子の向きも変わりません。

つまり「帽子の画像素材自体はどっちも同じでいいけど、合成位置だけ変える必要がある」という状況ですね。

しかしそれにもかかわらず、普通はポーズの数だけ同じような帽子の着せ替え?定義をずらっと並べなければなりません。

9.png

ここで多重着せ替え?定義を使ってもう一工夫してみましょう。

帽子のHUBサーフェスとでもよべるものを一つ用意し、ここに基本的な帽子の着せ替え?定義を一セットまとめるのです。

10.png

そして、各身体サーフェスでは直接帽子の着せ替え?を定義せずに、この帽子HUBサーフェスのみを着せ替え?として定義します。

このときポイントになるのは、着せ替え?のパーツの設定(pattern定義)でオフセットがそれぞれ指定できるということです。

したがって以下のようにそれぞれ別の位置指定をすれば、それぞれ適切な位置に着せ替え?が表示されます。

11.png


着せ替え?数が多ければ多いほど、また表示位置だけ変更すればいいポーズ差分が増えるほど、効果を発揮するでしょう。

補足

ところでこのHUBサーフェスを使う方法だと、HUBサーフェスが着せ替え?OFFの場合、HUBサーフェスで定義されているすべての着せ替え?が表示されなくなってしまいますね。

どうせHUBサーフェスそのものはONでもOFFでも見えない透明な存在なので、常にONだと都合がいいでしょう。

というわけで、descript.txt?のように以下のような記述を追加しておきましょう。

sakura.bindgroup100.default,1
sakura.bindoption1.group,帽子HUB,mustselect

それぞれの記述の詳細はUKADOCへ!

なお当然ながらHUBサーフェス自体はメニュー?に表示しないようにします。ユーザさんが弄る意味はなく、不具合の原因にしかなりません。

特定の着せ替え?メニュー?に表示しない設定については「着せ替えをメニューで非表示にする」を参照してください。

ということなので、すべての着せ替え?メニュー?に自動表示するmenu,autoとは相性が悪いですね…

難点

  • 普通の着せ替え?定義と区別がつかないので、surfaces.txt?を一見しただけではパーツ呼び出し関係の構造が分かりにくくなりやすい
  • アニメーション?の種類が増えがちなので、アニメーション?IDの割り振りに少し苦労するかもしれない
  • 当然ながらSSP?以外のベースウェア?では正しく表示されない

まとめ

名前だけ聞くと難しそうですが、わかってみればそれほど複雑な話ではありません。

便利というよりも、特定のことをしたい時に「これしか方法がない!」ということがあるように思います。

シェル?周りで少し複雑なことをやりたい方は、頭の片隅に置いておくといいんじゃないでしょうか。


このページへのコメント

コメントはありません。 コメント/多重着せ替え定義について?

お名前: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

このページに関係する内容

索引/シェル,索引/着せ替え,索引/surfaces.txt,索引/アニメーション