【Unity】FBX + Final IK + SteamVR + HTC VIVEで始めるVTuber

wp_tmb_finalik-steamvr-htc-vive

「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)の組み合わせで実現が可能になったので、一からその手順を紹介します.

※エラー込みの方法です。

導入方法

  1. VR機器の接続。シーンの保存。(いつでも)
  2. Unity 2017.4.28f1で新しいプロジェクトを作成します。
Create-New-project
  1. SteamVRをAsset Storeからインストールします。

「steam」と検索すれば上位に表示されます。

asset-store-steamvr asset-store-steamvr-install
asset-store-steamvr-install2 asset-store-steamvr-install3

Valve.VR.SteamVR_UnitySettingsWindow

Recommended project settings for SteamVR

SteamVRの推奨プロジェクト設定

とありますが、今回はIgnore Allにしました。(普通はAccept Allを推奨。)

Valve.VR.SteamVR_UnitySettingsWindow Ignore_All
  1. Final IKをインポートします。
final-ik-import
  1. 3Dモデル(fbx,pmx)をインポートします。
fbx-import

[Rig] → [Animation Type] [Humanoid]にします。

Rig-Humanoid

導入は以上です。

  1. Assetをシーンに配置します。

5.1 [CameraRig]を配置します。

[CameraRig]と検索すれば表示されます。

CameraRig

5.2 3Dモデルを配置します。

3dmodel-placement
  1. ここで一旦、「Play」します。

すると、次のエラーが出ます。

Play

All compiler error have to be fixed before you can enter playmode!

日本語

プレイモードに入る前に、すべてのコンパイラエラーを修正する必要があります!

ここで、全てのエラーを修正します。
警告は無視しします。

赤いビックリマーク!のエリアの部分を選択すると、問題になっているファイルが黄色く表示されます。
そのファイルを削除します。

program-file-delete

今回のエラー箇所(私の場合)

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
  1. 黄色の警告を残したところで、もう一度「Play」を実行します。

次のウィンドウが表示されます。

check

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].

そして、次のウィンドウが表示されます。

check2

It looks your project is missing an actions.json.
Would you like to use the example files?

日本語

あなたのプロジェクトにはactions.jsonが不足しているようです。
サンプルファイルを使用したいですか?

とりあえず[Yes]で進みます。

SteamVR Inputのウィンドウが表示されました。

SteamVR-Input-Window
SteamVR-Input-Compiling

[Save and generate]をクリックし、コンパイルが終了したらウィンドウを閉じます。

  1. 各コンポーネントをGame Objectに当追加します。

8.1 3DモデルにScript「VRIK」を追加します。

「VRIK」が表示されなかったら、上記のエラーを取り除いたり、VRIK.csがあるのか確認したりしてください。

Final IKのVRIKの場所はここにあります。

Assets\Plugins\RootMotion\FinalIK\IK Components\VRIK.cs"
Add-component-VRIK

8.2 [CameraRig] 右クリック[Create Empty]で, [RightHand], [LeftHand], [Head]を次の場所に作ってください.

Camera-Rig-RightHand-LeftHand-Head-Before Camera-Rig-RightHand-LeftHand-Head-After

8.3 「VRIK」→[Solver] Targetの部分に「LeftHand」, 「RightHand」, 「Head」を割り当てます。

  • Spine
    • HeadTarget [Head]
  • Left Arm
    • Target [LeftHand]
  • Right Arm
    • Target [RightHand]
VRIK-Solver-RightHand-LeftHand-Head
  1. 「Play」を実行します。VRゴーグルとコントローラーを装備します。

これでアバターが動きましたが、頭と手の位置や角度(トランスフォーム)がおかしいです。

「Play」を実行しながら、トランスフォームの値の調整を行うと楽です。

まずは頭を調整します。(個人差があります。)

Head Transform(私の場合)

Head-Transform
  • Position x:0, y:0, z: -0.459

次に右手を調整します。

RightHand-Transform
  • Rotataion x:0, y:-90, z:-135

同じように左手を調整します。

LeftHand-Transform
  • Rotataion x:135, y:0, z:0

以上で基本的な動きは完了です!お疲れ様でした。

最後に

みんな踊れー!

参考

UniVRM+SteamVR+Final IKで始めるVTuber – Qiita

動作環境

3Dモデルが動いた環境です。

  • Windows 10 Pro
  • VR機器
  • 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
Final IK