- 수정됨
作成したスキンパーツを別スケルトンへ使い回すベストプラクティスが知りたいです
いつもお世話になっています。
私はこのようなボーン構成のバンダナのスキンを作成しました。
メッシュにはbandanaボーンと、軸回転用のボーンがバインドされています。
軸回転用のボーンはコンストレイントのミックス-100で反対移動するcontro_head,contro_head_subの子ボーンにして運用しています。
このようなスキンパーツを他のキャラクタースケルトンでも使いたいのですが、
パーツ一式を別のスケルトンへコピーあるいは移動する良い方法はないでしょうか?
試しにドラッグアンドドロップで同プロジェクト内の別スケルトンへ移動して見たのですが、
上の様にメッシュのバインドと、トランスフォームコンストレイントが引き継げませんでした。
スキン設定、トランスフォームコンストレイント、メッシュバインドとウェイトを維持したまま別スケルトンへ複製できたら良いのですが。
お返事をお待たせしてしまいすみません!
試しにドラッグアンドドロップで同プロジェクト内の別スケルトンへ移動して見たのですが、
上の様にメッシュのバインドと、トランスフォームコンストレイントが引き継げませんでした。
スキン設定、トランスフォームコンストレイント、メッシュバインドとウェイトを維持したまま別スケルトンへ複製できたら良いのですが。
こちらの件ですが、結論的に、現状ではメッシュのバインドおよびウェイト設定とスキン設定とコンストレイントを同時に維持したまま別スケルトンへ移動させるのは不可能です。
しかしそれぞれに可能な範囲が異なりますので以下に補足します。
まずメッシュに関しましては、移動先のスケルトンに完全に同一名称のボーンが存在すればバインドおよびウェイト設定を維持したままでのスケルトン間の移動が可能です。また、メッシュだけではなくてバインド先のボーンも同時に移すことが可能ですので、移したいボーンとスロットを一通り選択してから別のスケルトンに移動させると楽に移植できるかと思います。
次にコンストレイントに関しましては、現在のところ、スケルトン間での移動にかかわらず、コンストレイントの設定内容を引き継いでのボーンやパス、コンストレイント自体の複製ができません。こちらについては多くの改善要望をいただいており、課題としてRoadmapに登録されています:
https://github.com/EsotericSoftware/spine-editor/issues/183
ただし、スケルトン間での操作については様々な要望が上がっておりますが、どれも実装が非常に難しく、具体的な実装予定の目処も立っていないことをご留意ください。
スキンに関しましては、複製元と移動先のスケルトンに完全に同一名称のスキンがある状態で同時にそれらをアクティブにした状態でなら、アクティブなスキンに設定されているスキンプレースホルダーだけは移植できます。しかし、スキンボーン(http://ja.esotericsoftware.com/spine-skins#%E3%82%B9%E3%82%AD%E3%83%B3%E3%83%9C%E3%83%BC%E3%83%B3)に関しましては移植できません。
また、複製元に複数のスキンがある場合は、非アクティブなスキンに含まれているイメージの移植はできないため、全てのスキン設定を同時に別のスケルトンに移すことはできません。
複数のスキンがある場合は、複製元のスケルトンの中で一度スキンプレースホルダーから出して(=アタッチメントをスロット直下に置いて)スロットを移動し、移植先のスケルトンの中でスキンを再設定した方が意図せずアタッチメントが失われてしまうことを防げます。
上記を踏まえまして、メッシュのバインドおよびウェイト設定とスキン設定とコンストレイントの全てを複製したい場合に最も確実なのは、スケルトン全体を複製して、複製先で不要な部分を削除したり画像を差し替えたりする方法です。
特にコンストレイントの設定を別スケルトンでそのまま使用したいということであればこの方法しかありません。
ただ1つ、移植を簡単にするために提案できることとしまして、立体表現を作るために使用するコンストレイントの数はもう少し減らせると思います。
おそらくバンダナの後ろの結んだ先の垂れている部分はメッシュを使わずにトランスフォームコンストレイントでボーンの追従量を変えて移動量の差を出しているかと思われますが、そういった部分をトランスフォームコンストレイントではなく、メッシュとウェイトの設定で動かすようにすれば、コンストレイントを絶対に使用する必要があるのはコントロール用のボーンだけで済むので、メッシュとボーンだけ別のスケルトンに移した後、移植先でコンストレイントを設定し直すことになってもそれほど時間はかからないかと思います。
説明のために以下のような簡単なプロジェクト例を作成しました。
片方はトランスフォームコンストレイントを使用し、片方はメッシュとウェイトを使用していますが、見た目の結果は同じです。ウェイトを使用している方も、メッシュ頂点数は最低数の4点だけなので処理負荷的にも大きな差はありません。実際のプロジェクトは以下からダウンロードできます。
UsingWeightInsteadOfTC.zip
上記回答が参考になれば幸いです。
こんにちは。ご丁寧な返信、解説をくださって本当にありがとうございます!
サンプルプロジェクトも頂けてとても参考になりました。
移動先のスケルトンに同名ボーンを予め用意しておくことで無事、メッシュのバインドとウェイトを維持したまま複製することができました。
擬似回転を実装するケースだと、メッシュのウェイト調整が一番ヘビーな作業だったのでこれを維持したまま複製ができるのは助かりますね。
コンストレイントは現状複製ができないとのことで、疑似回転はなるべくコンストレイントではなくメッシュウェイトで実装する、というのは確かに!と思いました。鼻や耳、ちょっとしたアクセサリはコンストレイントで実装していたので少し減らしてみます。
頂いた助言を比較検討した結果、既に制作が進んでいる別スケルトンに対しては、スキンを全て解除してから個別に移動、
新しく別スケルトンを制作する場合はスケルトン自体を複製して使わないアタッチメント等を削除して製作開始がベターなのかなと考えました。
詳しい仕様の解説ありがとうございます!
たくさんの疑問が解けました。
ご返信ありがとうございます!参考になったようで良かったです!
また何かご不明な点がありましたらお気軽に投稿してください。
どうぞ、よろしくお願いいたします。