「UnityでVRを実行して3Dモデルを動かそう(そして、姿をOBS Studioで映そう)」
と思ったので、参考になりそうな記事を探したところ、この1記事が私にとって知りたかった情報でした。画像付きの解説で非常に分かりやすいです。
https://qiita.com/sh_akira/items/81fca69d6f34a42d261c#comments
しかし、@sh_akiraさんの方法の通りでは、なかなか上手くいきませんでした。
そこで、様々な方法を試したところ、実現することができました。
特に難しいところはSteamVR と Final IKの導入です。
私の悩み
Final IK + SteamVRでエラーが出て、実行できない
今回は
この通りに進めれば SteamVRとFinal IK, VR機器(HTC VIVE)の組み合わせで実現が可能になったので、一からその手順を紹介します.
※エラー込みの方法です。
導入方法
- VR機器の接続。シーンの保存。(いつでも)
- Unity 2017.4.28f1で新しいプロジェクトを作成します。
- SteamVRをAsset Storeからインストールします。
「steam」と検索すれば上位に表示されます。
Valve.VR.SteamVR_UnitySettingsWindow
Recommended project settings for SteamVR
SteamVRの推奨プロジェクト設定
とありますが、今回はIgnore Allにしました。(普通はAccept Allを推奨。)
- Final IKをインポートします。
- 3Dモデル(fbx,pmx)をインポートします。
[Rig] → [Animation Type] [Humanoid]にします。
導入は以上です。
- Assetをシーンに配置します。
5.1 [CameraRig]を配置します。
[CameraRig]と検索すれば表示されます。
5.2 3Dモデルを配置します。
- ここで一旦、「Play」します。
すると、次のエラーが出ます。
All compiler error have to be fixed before you can enter playmode!
日本語
プレイモードに入る前に、すべてのコンパイラエラーを修正する必要があります!
ここで、全てのエラーを修正します。
警告は無視しします。
赤いビックリマーク!のエリアの部分を選択すると、問題になっているファイルが黄色く表示されます。
そのファイルを削除します。
今回のエラー箇所(私の場合)
Asset/Plugins/RootMotion/FinalIK/IK Jobs/AimKJ/AimIKJ.cs
Asset/Plugins/RootMotion/FinalIK/IK Jobs/CCDIKJ/CCDIKJ.cs
Asset/Plugins/RootMotion/FinalIK/IK Jobs/CCDIKJ/CCDIKJobs.cs
Asset/Plugins/RootMotion/FinalIK/IK Jobs/AimKJInspector.cs
Asset/Plugins/RootMotion/FinalIK/IK Jobs/CCDKJInspector.cs
- 黄色の警告を残したところで、もう一度「Play」を実行します。
次のウィンドウが表示されます。
It looks like you haven’t generated actions for SteamVR Input yet.
Would you like to open the SteamVR Input window?
日本語
まだSteamVR Input用のアクションが生成されていないようです。
SteamVR Inputのウィンドウを開いてみませんか?
SteamVR Inputをインストールします。[Yes].
そして、次のウィンドウが表示されます。
It looks your project is missing an actions.json.
Would you like to use the example files?
日本語
あなたのプロジェクトにはactions.jsonが不足しているようです。
サンプルファイルを使用したいですか?
とりあえず[Yes]で進みます。
SteamVR Inputのウィンドウが表示されました。
[Save and generate]をクリックし、コンパイルが終了したらウィンドウを閉じます。
- 各コンポーネントをGame Objectに当追加します。
8.1 3DモデルにScript「VRIK」を追加します。
「VRIK」が表示されなかったら、上記のエラーを取り除いたり、VRIK.csがあるのか確認したりしてください。
Final IKのVRIKの場所はここにあります。
Assets\Plugins\RootMotion\FinalIK\IK Components\VRIK.cs"
8.2 [CameraRig] 右クリック[Create Empty]で, [RightHand], [LeftHand], [Head]を次の場所に作ってください.
8.3 「VRIK」→[Solver] Targetの部分に「LeftHand」, 「RightHand」, 「Head」を割り当てます。
- Spine
- HeadTarget [Head]
- Left Arm
- Target [LeftHand]
- Right Arm
- Target [RightHand]
- 「Play」を実行します。VRゴーグルとコントローラーを装備します。
これでアバターが動きましたが、頭と手の位置や角度(トランスフォーム)がおかしいです。
「Play」を実行しながら、トランスフォームの値の調整を行うと楽です。
まずは頭を調整します。(個人差があります。)
Head Transform(私の場合)
- Position x:0, y:0, z: -0.459
次に右手を調整します。
- Rotataion x:0, y:-90, z:-135
同じように左手を調整します。
- Rotataion x:135, y:0, z:0
以上で基本的な動きは完了です!お疲れ様でした。
最後に
みんな踊れー!
参考
UniVRM+SteamVR+Final IKで始めるVTuber – Qiita
動作環境
3Dモデルが動いた環境です。
- Windows 10 Pro
- VR機器
- HTC VIVE, VIVEPORTインストール済み
- Meta Quest 2
- 3Dモデルfbx, pmx等 (王国騎士ロボット.FBX)
- pmxの場合, MMD4Mechanimが必要
-
SteamVR 1.13.10
- Steamから「SteamVR」をインストールする。
-
SteamVR Unity Plugin v2.5 (sdk 1.8.19)
- Unity → Asset Storeから「SteamVR」をインストールする
- Steam
- Unity 2017.4.28
- Final IK