ウエイトを付けたメッシュの画像のみを差し替える方法を教えてください。
シールのように表情を切り替えさせたいのですが、表情の画像数が多いので、ウエイトをいちいち塗りなおすのが大変なのでウエイトコピーのようなものがあったら教えて頂きたいです。
表情の切り替えアニメーションを行うので、画像データに透明部分があります。
現状リンクメッシュを使うと画像がサイズが変わってしまいます。
あと、画像データの透明部分に一旦色を付けて、ウエイトをつけてから同じ大きさの透明部分を透明にしても画像サイズが変わってしまいました。
ウエイトを付けた画像の画像のみを切り替える
junichi_fujita 質問をフォーラムに投稿し直していただき誠にありがとうございます。
残念ながら、メッシュ頂点は元の画像サイズを基準とした相対座標で記録されているため、例えリンクメッシュでなかったとしてもサイズが異なる画像に差し替えるとうまく座標が合わなくなってしまいます。なので、リンクメッシュを使用しない場合の解決策としては
1.すべての表情差分画像を同じサイズに揃える
2.基準となるメッシュアタッチメントを表情の数だけ複製する
3.複製後のアタッチメントのイメージパスを、別の画像に置き換える
という風にしていただくのが良いかと思います。2.で複製したメッシュアタッチメントは複製元と同じメッシュ頂点およびウェイト設定を保持します。
また、表情差分画像を同じサイズに揃える方法についての補足になりますが、画像を書き出すのにPhotoshopをご利用されている場合は、レイヤーマスクを使ってトリミング境界を定めることができます。これは、Trim whitespace
(空白をトリミング)を有効にしていたとしても優先されます。
レイヤーマスクを使ってトリミング境界を定義する機能はPhotoshopToSpine v7.26で追加された機能ですので、もしv7.26より古いバージョンのスクリプトを使用されている場合は新しいバージョンのスクリプトをダウンロードしてご利用ください: https://github.com/EsotericSoftware/spine-scripts
なお、Spineエディター上でアニメーションを作成する際に透明な領域がたくさんある画像を使用していたとしても、テクスチャのパッキングの際に空白X/Y削除
のオプションにチェックを入れていただくことで、余計な空白(透明領域)を削除してパックすることができますので、ゲームなどに実装する際に無駄にテクスチャが大きくなってパフォーマンスに悪影響を与えてしまうということはありません。
この回答がご参考になれば幸いです。
ありがとうございます。
上記の123の方法もやってみたのですが、サイズが変わってしまってたのですが、
PhotoshopToSpineが古かったので、ダメだったのかもしれません。
入れ替えて再度試してみます。
junichi_fujita もし何度試してもうまくいかないようでしたら問題を再現できるSpineプロジェクトをメール経由で送っていただければ内容を確認いたします: contact@esotericsoftware.com
お送りいただくファイルは関係のない部分を削除したりダミー画像に差し替えたりしたもので結構です。プロジェクトを確認後、またこちらのスレッドの方で返信させていただきます。
ありがとうございます。
色々試してみたのですが、小さな画像(44×22程度)での差し替えがSpineの精度では難しいと感じました。
試しにSpine上で2倍にして同様の差し替えを行ったところぱっと見は上手く行きました。
ただ細かくみると微妙に合ってはいないようでした。Image画像を大きくしても同様の効果のようです。
今後この方法でやってみようかと思います。