MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens用のオリジナルモデルを作成する その41(VRMSpringBone を使って揺れ物の設定を行う)

本日はホロ恋子モデルの作成枠です。
今回は VRM ファイルに VRMSpringBone を使って揺れ物の設定を行います。
3d.nicovideo.jp
f:id:bluebirdofoz:20181109084947j:plain

SpringBone を使って揺れ物を設定する記事の続きになります。
bluebirdofoz.hatenablog.com

VRM Spring Bone (Script) の設定

VRM Spring Bone (Script) は UniVRM に含まれるスクリプトです。
UniVRM を使って VRM ファイルを取り込んだプロジェクトを開きます。
f:id:bluebirdofoz:20181109085005j:plain

Unity パッケージ版に SpringBone を設定したときと同様に、ポニーテイルを揺らしてみます。
VRM Spring Bone (Script) は VRM ファイルの正規化時に自動で追加されています。
キャラクタオブジェクトの直下に追加されている[secondary]というノードです。
f:id:bluebirdofoz:20181109085015j:plain

VRMSpringBone コンポーネントの設定を行います。
VRMSpringBone の各要素はそれぞれ以下の意味合いを持ちます。

Comment    :揺れ物に関する説明を記載する。(オプション)

Draw Gizmo :シーンビューに設定した揺れ物を確認するためのアイコンを表示する
Gizmo Color:表示アイコンの色

StiffnessForce :揺れの固さ(値を小さくするほど元の形に戻りにくくなる)
GravityPower   :重力の強さ(値を小さくするほど重力の影響を受けない)
GravityDir     :XYZ軸ごとの重力補正値(オブジェクトのXYZ軸方向に値分の重力補正がかかる)
DragForce      :力の減衰(値を小さくするほど抵抗が減る)
Center         :揺れ物の中心オブジェクトを指定する(Noneの場合、個々のオブジェクトが中心になる)

Root Bones     :揺らしたい(揺れが始まる)オブジェクトの親オブジェクト一覧

HitRadius      :揺れ物の当たり判定の半径
Collider Groups:揺れ物との衝突判定を行うコライダーオブジェクト

SpringBone と同名の変数は設定値を流用できます。
ただし StiffnessForce はかかっている係数が異なるようなので、値を大きめに修正する必要があります。

以下の通り設定しました。
f:id:bluebirdofoz:20181109085025j:plain

最後に衝突判定を行うコライダーオブジェクトを設定します。
ポニーテイルの突き抜けを避けるため、頭部にコライダーオブジェクトを設定します。

head オブジェクトに[VRM Spring Bone Collider Group (Script)]コンポーネントを追加します。
f:id:bluebirdofoz:20181109085035j:plain

VRMSpringBoneColliderGroup は複数のコライダーを追加したり、位置のオフセットを指定できます。
各要素はそれぞれ以下の意味合いを持ちます。

Coliders:衝突判定を行うコライダー設定
 Size:コライダーの数
  Offset:アタッチしたオブジェクトからのオフセット位置
  Radius:コライダーの半径
Gizmo Color:表示アイコンの色

以下の通り、設定しました。
f:id:bluebirdofoz:20181109085044j:plain

VRMSpringBone の Collider Groups に作成したコライダーオブジェクトを指定します。
これで設定完了です。
f:id:bluebirdofoz:20181109085146j:plain

前回記事と同様の手順で動作確認と微調整を行います。
bluebirdofoz.hatenablog.com

f:id:bluebirdofoz:20181109085204g:plain
アニメーションの確認が完了したら、確認用に設定したアニメーションコントローラ等を削除して VRM ファイルを保存します。