VRChatでスタンド(使い)になれるギミック

Constraintを使用したWorld固定とアバター制御の切り替えによる,所謂スタンド表現の基本となるギミック構築方法を以下に記録します。

Connstraintを使用したWorld固定については,Beryllin様の記事「VRCでConstraintを使ったワールド固定&ピックアップ(Unity2018対応)」を使用しています。


1. アバターの準備

アバターを切り替えるために3種類のアバターを用意します。

   1.Humanoidとして必要なBone以外のBoneやMeshを削除したアバター(以後Boneアバター)

   2.常時見えるスタンド使い(本体)のアバター(以後アバター1)

   3.スタンドとして使用するアバタ―(以後アバター2)


2.アバターの階層

アバター直下に対して以下の通りObjectを配置します。

Avater

┗Boneアバター

┗アバター1 World_C

    ┗ Pickup_C

    ┗アバター1 Hips

┗アバター2 World_C

    ┗Pickup_C

  ┗アバター2 Hips

┗World_Point


3.Constraintの設定

アバター1とアバター2のConstraintを設定していきます。

HispBoneよりも後のHumanoidBone全てにRotate ConstraintをAdd Componentし,対応するBoneアバターのBoneを設定します。

HispBoneはRotate ConstraintとPosition ConstraintをAdd Componentし,対応するBoneアバターのBoneを設定します。

この段階で設定したConstraintは全てIs Activeにチェク,Weight 1です。

注意としてTスタンス又はAスタンスを任意で揃えてください。


4.World_CとPickup_Cの設定

アバター1とアバター2のWorrd_CにRotate Constraint,Weight 1,Sources -0.5。Position Constraint,Weight 0.5,Sources -1をAdd Component及び設定。

両方共にIs Activeにチェク,SourcesにWorld_Pointを設定してください。

アバター1とアバター2のPickup_CにParent Constraint,Weight 1,Sources 1をAdd Component及び設定。

Is Activeにチェク,SourcesにBoneアバターのArmatureを設定してください。


5. Animationの設定

Animationを設定する前にアバターを複製し全てを保存してください。

ConstraintのIs Activeはチェックを外すなどしても記録されないため,Add Propertyで設定しますが操作手数が多くなるため以下の方法で設定します。

    1.必要なConstraintをすべて選択しDisableを記録

    2.AddPropertyで適当な階層の必要なRotate・Position・ParentのActiveを追加

    3.ActiveのキーフレームをCtrl+Cでコピー

    4.Disableしたキーフレームの名称をF2,Ctrl+Cでコピー

    5.Activeのキーフレームの名称をF2,Ctrl+Vでペースト

    6.タイムラインを選択しCtrl+Vでペースト(名称を変更したActiveがペーストされる)

    7.Disableしたキーフレームの名称をF2,Ctrl+Cでコピー

    8.以降手順を繰り返し全てのActiveを設定する

    9.不要となったConstraintのDisableを削除


アバター1の固定Animation

Pickup_C                Position Constraint Activeのチェックを外す

Hips                       Rotate Constraint          Activeのチェックを外す

     Position Constraint Activeのチェックを外す

Hipsより下のBone    Rotate Constraint          Activeのチェックを外す


アバター2の固定Animation

Pickup_C                Position Constraint Activeのチェックを外す

Hips                       Rotate Constraint          Activeのチェックを外す

     Position Constraint Activeのチェックを外す

Hipsより下のBone    Rotate Constraint          Activeのチェックを外す


アバター1・2の固定Animation

上記アバター1及びアバター2の固定Animationを同時に行う


制作したAnimationをAnimationOverrideに設定します。


6.VRChatでの動作

アバター1の固定Animationでアバター1がその場その姿勢で固定されます。解除すると自分の位置に戻ります。

アバター2の固定Animationでアバター1がその場その姿勢で固定されます。解除すると自分の位置に戻ります。

アバター1・2の固定Animationでアバター1・2がその場その姿勢で固定されます。解除すると自分の位置に戻ります。


7.既知の問題点

Meshが実際のアバターとして動いているBoneに関連付けされていないため前が見えないことがある。

コメント