たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

Oculus Rift + VRIK で 初音ミクになりきってみる

いろんな人がVRでなりきりを試していたので、自分もやってみたいと思い、Oculus Rift + VRIKで実現する方法をまとめました。
すでにたくさんの事例があるので、今回は自分用のメモとして残すことを目的としているのですが、少しでも同じことをしたい人の参考になればと思います。まだUnity歴は1週間ぐらいなので、色々変でもご容赦ください。

環境

  • Oculu Rift CV1 + Oculus Touch
  • Unity 5.6.3f1
  • Oculus Utilities for Unity 1.1.5
  • Tda初音ミクV4X
  • MMD4Mecanim
  • FINAL-IK
  • VrGrabber(ものをつかめるようにしたいので、Grabberを入れておきます。使わない人は入れなくて問題ありません。)

準備

上記を一式そろえます。

Oculu Rift CV1 + Oculus Touch
買う。
Oculus Rift | Oculus

Unity 5.6.3f1
ダウンロードアンドインストール
Unity - Download

Oculus Utilities for Unity 1.1.5
ダウンロードアンドImport Package
Oculus Utilities for Unity 5 | Developer Center | Oculus

Tda初音ミク(かわいい)
ダウンロードアンドAssetsに配置
Tda式初音ミクV4X - BowlRoll

MMD4Mecanim
ダウンロードアンドImport Package
Stereoarts Homepage

VrGrabber
ダウンロードアンドImport Package
VR 向けの自作 Grabber を作ってみた - 凹みTips

セットアップ

Tda初音ミクさんをUnityで使用できる状態にする

MMDのモデルはそもままでは使用できないので、使用できる状態にします。
Asset配下に配置したモデルのディレクトリ内にある、<モデル名>.MMD4Mecanim を選択しInspectorの利用規約を確認したうえで、同意します。次の画面でProcessを押すことで「<モデル名>.fbx」ができます。ここで、そのモデルを選択し、Imspectorにある Rig からAnimationTypeをHumanoidに変更します。

f:id:c_taquna:20170916214902j:plain


そうすると、Sceneに投入してあげると配置ができるようになります。一応地面としてGameObject -> 3DObject -> Plane を配置しておきました。
以下のような状態になります。

f:id:c_taquna:20170918012601j:plain

初音ミクをVRのカメラに追従するようにする

基本は以下を参考にすれば誰でもできると思います。ただ、以下の記事との違いは今回はOculusとTda初音ミクを使用しているところにあるので、同じようにOculusを使用している人の参考になればと思います。

Unity+Vive+MMD+VRIKで、キズナアイちゃんになりきりVR - Qiita

作業概要

作業概要は以下です。

  1. OVRPlayerController を配置
  2. OVRCameraRig配下に HeadTarget、LArmHandTarget、RArmHandTarget を設定
  3. VRIKスクリプトMMDモデルにアタッチ後、各TargetとReferences を設定
  4. VRIKスクリプトの、Solverの各値を調整

OVRPlayerController を配置

OVR -> Prefabs -> OVRPlayerController を Hierarchy に配置します。

OVRCameraRig配下に HeadTarget、LArmHandTarget、RArmHandTarget を作成

コンポーネント配下に空の Object を作成し、Qiitaの記事を参考に各ObjectのRotationの値を変更します。今回のモデルを使用した感じ、自分の場合は以下のように設定することで腕の状態がしっくり来ました。

OVRCameraRig -> CenterEyeTarget -> HeadTarget (CreateEmptyで作成)
OVRCameraRig -> Vrg Left Grabber -> LArmHandTarget (CreateEmptyで作成)
OVRCameraRig -> Vrg Right Grabber -> RArmHandTarget (CreateEmptyで作成)

f:id:c_taquna:20170916213148j:plain
f:id:c_taquna:20170918013600j:plain
f:id:c_taquna:20170918013603j:plain
※HeadTargetは参考にしたQiitaの記事の値をそのまま使用しました。

ここで、カメラのニアクリップの変更します。変更しないと顔にカメラが埋もれてしまいます。

f:id:c_taquna:20170918013232j:plain

VRIKのScriptを初音ミクにアタッチして、VRIKのSolverにあるTargetの項目に先程作成したObjectを指定します。

f:id:c_taquna:20170916214234j:plain

次は、References -> Pelvis の項目に 初音ミクのRoot 指定します。これがないとモデルがしゃがまないそうです。
f:id:c_taquna:20170918014034j:plain

ここまでくれば、プレイモードにして初音ミクになりきることができます。あと、VRKのSolverにあるPlantFeetのチェックを外さないと、初音ミクの足が地面から離れないのでHMDを上のほうに上げると幽体離脱状態になります。

f:id:c_taquna:20170918014816j:plain

まだまだ調整した方がいいことがおおいのですが、一旦この記事ではここまでにします。次回は指の動かし方とかで調整したことをまとめたいと思います。