ステルスアクション制作中⑰―衣装システムについて
衣装システムのコア部分ができたの解説しようと思います。
まだコア機能で動画だけだとスタートした時点で切り替わっているので、よくわからんと思うのでまずそこから解説します。
スタート直後、衣装を動的に生成してその衣装がキャラモデルの動きに合うようにフィットさせています。
通常、キャラと衣装は別のオブジェクトなので、そのまま生成してもキャラの動きに衣装はついてきてくれません。あらかじめキャラに格納する形で再生時に切り替えればええやん!と思う方もいるかもしれませんが、それだと無駄にVRAM食うのでスマートじゃないですね。
衣装システムはざっくり2つの方法があると認識しています。
1. キャラのボーンの子にすることでキャラのボーンの動きに対応させる
2. 衣装のウェイトをキャラのボーンに転写する
1はシンプルですが、また別の衣装に切り替えるときにいちいち子にしたボーンを参照して捨てる処理をしたりするのが面倒だし、捨てる処理をする分若干ラグが発生します。
一方2は衣装のウェイトにキャラのボーンを割り当てるだけなので、面倒がなくていいです。とはいえ、キャラのボーン名と衣装のボーン名を一致させる必要があるので、そこは面倒なんですがね
んで、そのやり方なんですが、仕組みは簡単で衣装のボーンと同じ名前を持つキャラのボーンを探し、衣装が使用していたボーンをキャラのボーンにするだけです。つまり、規格が同じなので衣装自身ではなくてキャラのボーンを参照するようにしただけですね。
地味に沼だったのが、衣装とキャラの各ボーンの回転軸があっていないとぐちゃぐちゃになるんですね。システム使用後は衣装はキャラのボーンを参照するため、もし回転軸が異なっていたら衣装はキャラのボーンに追従してぐちゃぐちゃになってしまいます。
私の場合、異なる作者の衣装・モデルを使用したため、このようなことが起こりました。
解決方法は以下の通りでDCCツールで衣装のボーンをキャラのボーンに置き換えただけです。ある意味↑と同じことをやっているような、、、
まあゲーム上で動的にやるには上記の方法でしかできないと思います
https://cgbox.jp/2023/06/11/blender-weight-transfer/
以下コードです