vrchat アバター2体の動きを親子関係で追従させるには

VRChatのアバターで、ほかのアバターに同じ動きを追従させて動かすには、Rotation Constraintを使用する。頭の上に動くアバターを乗せる際やサブアーム追加も同様の手順になると思われる。

●大概要

やり方の解説動画はコレ。


手順

1.Rotation Constraint設定


●使用するツール
[VRC][アバター] Rotation Constraintを簡単に追加するためのUnityエディタ拡張

●ツール使用条件
ツールには、親のアバターと子のアバターをD&D指定し、同じGameObjectにRotation Constraintを設定するとのこと。その際、親子でGameObject名称は同一である必要がある。
つまり、Rotation Constraintを設定する時点では、同じアバターが2体必要である。
別のアバターに同じ動きをさせるためには、一度Rotation Constraintを設定したアバターに対しmesh削除などを行い、着せ替えの要領で別のアバターを合体させるという手順になる。

※アバター合体への注意
もし追加アバターの非表示制御や動き固定などのanimationを組みたい場合、大量のRotation Constraintコンポーネントに対するanimation設定を行うことになる。コンポーネントのついているGameObjectは大量のため、別アバター合体するまえにanimation設定をしてからのほうが楽。

2.Animation作成

動画にある追加:
1.分身1位置固定・戻りにFixed Joint追加、RigidBodyのUseGravity:off、IsKinematic:ON
2.子のHipsにPosition Constraint追加・親のHips割り当て

動画ではこの設定を行ったうえで、Radial Inventory経由でEXMenuに設定している。EXMenuがわかればAnimationやparameter追加などで手動で組み込んでもよい。

●追加のComponent

・ワールド固定

・分身1位置固定:FixedJoint

・分身のHips:Position Constraint

・戻り:Rigidbody


●Animation
「分身1ポーズ固定」:RotationConstraintぜんぶをdisableにする

「分身1ポーズ固定解除」:RotationConstraintぜんぶをenableにする

「分身1位置固定」:分身1位置固定のRidigBody.IsKinematicをTrue、Hips.Position ConstraintをDisable

「分身1位置固定解除」:分身1位置固定のRidigBody.IsKinematicをFalse、Hips.Position ConstraintをEnable

「分身終了」:子のアバタートップをdisable

「分身開始」:子のアバタートップをenable

3.EXMenu設定

●FXLayer


●Expression
・parameter

・menu

そんなふーな感じで。

この記事が気に入ったらサポートをしてみませんか?