アイテムを手から頭につけるみたいなアニメーションの作り方について

Godotバージョン

4.3

OSとそのバージョン

Windows10

使用言語

GDScript

内容

今取り組んでいるわけではないのですが、将来的にGodotで3Dキャラクターアニメーションを作成する際メガネを顔にかけたり手に持って外したりなどのアイテムを他の部位に追従させるにはどうしたら良いでしょうか?

BoneAttachment3Dを使えば良い……というのはわかったのですが、例えばお面で言うと手から急に頭にぴったりくっつく感じになってしまい不自然になってしまいました。
アニメーションで微調整すれば良いのでしょうが、滑らかに移動させる簡単な方法などありましたら教えていただけると幸いです。

「いいね!」 1

Godotでって感じではないレスになるかもしれませんが、僕のイメージでは…

  1. Nullオブジェクト(Emptyとも言われるかも)をモデル・アニメ側に仕込む
  2. Nullオブジェクトにアイテムであるメッシュをアタッチする
  3. Nullオブジェクトをアニメーションで動かすことで自由に配置調整が可能
    ※場合によっては対象のNullオブジェクトを切り替えるような仕組みは必要になるかも

汎用的に使われるテクニックかなと思うのですが、いかがでしょう?

【追記】
BoneAttachment3Dで切り替えができるのであれば、遷移用のNullオブジェクトを用意して、メッシュをアタッチする親ノードを変えてあげるイメージです。

「いいね!」 1

どちらかにピッタリくっついている状態ではなく、まさに持ち替えている最中のときは、
3DオブジェクトノードをBoneAttachment3Dの子にするのではなく、
その情報(transform)だけを参照して、移動割合値をTweenを使用して間を補完するとスムーズにすることができそうですね。

また、このようなやり方ならばBoneAttachment3Dの直接の子にせずに、RemoteTransform3Dを使うのも良さそうです。
位置同期のオンオフの切り替えが楽にできるかもしれません。

「いいね!」 2

みなさんありがとうございます!

海外のTutorialも見てみたのですが、Saitosさんの言った感じにアタッチメント先を複数用意して、親を切り替える、という手法が良いようです。

ただ、スクリプトでなめらかに位置を制御する方法が私には難しく、もとよりそういうメソッドや関数があったら利用したい、というスレッドだったので一旦はBoneAttachment3Dのアタッチ先切り替えと位置や回転の微調整をアニメーションで実施するという方法で解決させようと思います。

また良い方法が見つかったら追記します。

みなさまありがとうございました。

「いいね!」 1