前置き
こんにちはTOKIです
突然ですが皆さんUnityでアバタ動かしたいですよね?
私は動かしたいです
ということで今回はFinal IKを使ってアバタを動かしてみましょう!
御託はここまで
早速やってみよう!
方法論!
とは言ってもこれ系の記事はいっぱいあるので以下の記事を参考に少し簡潔にまとめたものをここから書いていきます
参考
環境
- Unity 2019.4.10f.1
- VIVE Pro EyeのHMD
- Valve Indexのコントローラ(VIVE Proのコントローラでも動作確認はしました)
インポートするやつ(多少バージョン違っても大丈夫なはず)
- SteamVR Ver.2.6.1
- Final IK Ver.2.0
- UniVRM v0.59.0
手順
前準備
まず上記のインポートするやつをインポートする
するとSteamVRから以下の警告が出るのでAccept Allをクリック
![]() |
SteamVRからの警告 |
するとなんかいい選択をしたねみたいな文が表示されるけど
まだ警告が残る場合があるのでその場合は
Assets¥SteamVR\Editor\SteamVR_UnitySettingsWindow.cs
のスクリプト内で
recommended_ShowUnitySplashScreen = false;
のfalseをtrueに変更する
こうすれば警告の下がCloseになって以降表示されなくなる
次にUnityのヘッダーにある
Window->SteamVR Input->(Yes)->Save and generate->(Save)
をクリックし
使いたいVRMアバタをAssetsフォルダ以下に入れる
Hierarchy(Scene)にVRMアバタと
Assets\SteamVR\Prefabsの中にあるCameraRigをそれぞれ入れ
HierarchyでCameraRig内のcameraを選択しInspectorにSteamVR_CameraをAdd Componentする
ここでCameraRigをUnpack Prefabし
SteamVR_CameraのExpandをクリック
(するとCamera(head), Camera(eye), Camera(ears)が勝手にできる)
Camera(head)の子階層にTargetHead的な名前でEmptyを作る
同様にController(left)とController(right)の子にそれぞれTargetLeftとTargetRightを作る
以下のリンク先の
CameraControllerFirstPersonByTOKI.csをダウンロードまたは作成し
TargetHeadにAdd Compornentする
VRMアバタのInspectorのVRMFirstPerson内のFirstPersonOffsetの値を
さっき付けたTargetHeadのCameraControllerFirstPersonコンポーネントの
FirstPersonOffsetのXYZにそれぞれ代入する
(この時事前にVRMFirstPerson内のFirstPersonOffsetがアバタの目の間に来るようにするとよい)
この時点でのHierarchyは以下の感じ(AvatarがVRMアバタ)
![]() |
Hierarchyの例 |
Final IKを使う
HierarchyのVRMアバタのInspectorにVR IKをAdd Component
VRMアバタのVR IKのSolverの
- SpineのHeadTargetにTargetHead
- LeftArmのTargetにTargetLeft
- RightArmのTargetにTargetRight
を入れる
VRMアバタの身長を体験者の身長で割った値
(もしくはVRMアバタの目までの高さを体験者の目までの高さで割った値)
をCameraRigのScaleのXYZに代入する
(これによって瞳孔間距離が変化してしまうため,そのままにしたい場合はHierarchyのCamera(head)のScaleに逆数を代入する)
TargetLeftのInspectorのTransformの
Positionに-0.03,0.025,-0.12をRotationに-40(Index コントローラなら40),0,90を代入し
TargetRightのInspectorのTransformの
Positionに0.03,0.025,-0.12をRotationに-40(Index コントローラなら40),0,-90を代入する
↓あとはお好みで足の間隔とかを設定する(アバタによって違ったりする)
HierarchyのVRMアバタのInspectorのVR IK内において
- Left Leg内Swivel Offsetを15
- Right Leg内Swivel Offsetを-15
Locomotion内
- Foot Distanceを0.15
- Step Thresholdを0.2
- Max Velocityを0.3
- Velocity Factorを0.3
- Root Speedを30
邪魔な頭を1人称視点で表示しないようにする
Unityのヘッダーにある
Edit->ProjectSetting->Tags and Layers->Layersの
- User Layer 9にFIRSTPERSON_ONLY_LAYER
- User Layer 10にTHIRDPERSON_ONLY_LAYER
を代入する
Camera(eye)のInspectorのCamera内Culling Maskのタブを開いて
THIRDPERSON_ONLY_LAYERのチェックを外す
UniVRM+SteamVR+Final IKで始めるVTuberの中盤くらいにある
FirstPersonSetup.csをいただき
VRMアバタにAdd Compornentする
実行してみよう!
ここまできたら実行してみてください
HMDをかぶればアバタを一人称視点で動かせたかと思います
この時HMDの画面にSteamVRの警告のようなものが出てきても
すべて閉じればUnityのSceneに戻れます
またコントローラの3Dオブジェクトが表示された場合
HierarchyのController (left)とController (right)のそれぞれの子階層にある
ModelをDeleteもしくはModelのInspectorのチェックを外せば非表示になります
以上でアバタをUnity上で動かす最低限のことはできたと思います!
ですがこれではまだ問題点があるので次回それを解決しましょう!!
次回枠
なにかあればコメントください
ではではノシ
0 件のコメント:
コメントを投稿