はじめに
突然ですが、
VRコスプレデビューしましたー!
二丁拳銃で遊んで大失敗するグレイちゃん (VRコスプレ、確かに楽しい) #UE4 pic.twitter.com/Ei9A0d7mLg
— おかず (@pafuhana1213) 2017年1月29日
(いや、まあ、便乗してやってみたレベルですが…)
今回使用したのは
UE4用FullBodyIKプラグイン「IKinema RunTime Plugin」です。
http://www.ikinema.com/full-body-ik-for-vrwww.ikinema.com
この記事を書いた時期だと↓の動画で話題になっていました
www.youtube.com
IKinemaは様々なプロジェクトで使用されているアニメーション用プラグインですが、
UE4を用いるインディーズ向けに格安なライセンスが用意されています。
なんと99ドル!…いやいや格安ですって!
- バイナリ形式での配布
- 99ドル(買い切り)
- フォーラムでのサポートのみ
- Launcherで配布されているエンジンのみに対応
- PCサポートのみ
- 14日間無料体験可能
単純なIKならUE4標準で用意されていますが、
全身を取り扱うFullBodyIKの実装はかなり難易度が高いです。
ということで、早速このプラグインを試してみましょう!
Ikinemaへのアカウント登録とプラグインのダウンロード
まずはIKinemaのインディーズライセンスを選択します。
http://www.ikinema.com/full-body-ik-for-vr

次に、14日間の無料体験版を選択します。

アカウント登録ページが表示されるので、
各項目を埋めた後に下のSUBMITボタンを押します。
その後、入力したメールアドレスに登録メールが届くので、
その中にあるリンクをクリックして登録を完了して下さい。
その後、先程のアカウント登録ページを開き、
上の方にあるメールアドレス・パスワード入力欄を埋めて実行すると、
プラグインのダウンロードページに飛ぶのでプラグインをダウンロードします。
そして、そのファイルの中にある4.XX(XXは対応しているバージョン)の中が
IKinemaプラグインです。エンジン又はプロジェクトのPluginsフォルダに入れて下さい。

これでUE4上でIKinemaプラグインを使う準備が出来ました。
以降は、公式サイトのチュートリアルに従ってセットアップを進めます。
http://www.ikinema.com/index.php?mod=documentation&show=184&id=310www.ikinema.com
IKinema用リグの作成
まず、IKinema用の専用リグを作成します。

作成したIKinema Rigを開きます。
(注:IKinema Rigを開いた状態でレベルを実行すると落ちます! 4.14現在)
ここから、以下のボーンに対してTaskを紐付けます。
各Taskにモーションコントローラからの値を渡すことで、FullBodyIKを実現します。

の前に、IKinemaリグでは不要なボーンを片っ端から削除します。
(例:指、髪の毛、IK用ボーン、服類、おっぱいなどなど…)
参考までにグレイマンだとこのぐらいまで削除します。

一通り削除できたら、↑の項目ごとにTaskを紐付けます。
左手の場合は、まず左手用のボーンを選択し右クリックメニューからTaskを選択します。

手と頭の場合は位置・回転を細かく調整する必要があります。
手の場合は表示されたコントローラを調整します。気合と根性で。
(手の場合は握らせる感じにすれば上手くいくことが多いです)

各ボーンとの紐付けが出来たら、次は以下のボーンに対してPresetを設定します。
- 各Spine
- 両肩(shoulder)
- 両上腕 (upper arm)
- 両前腕(lower arm)
Spineの場合はこんな感じ。このPresetにより回転軸の制限などを行います。

他にも色々なパラメータがあるのですが…まだ把握し切れていないので
一旦IKinemaRig側の設定はこれで完了です。
キャラクタ用BPの作成
先程の動画の9分付近から
次に、実際に制御するキャラクタ用BPを作成します。
このBPではキャラクタの表示と各トラッカーからの値の取得を行います。
VROriginがキャラクタの頭にあうように設定するとちょうど良いです。
…写経面倒だと思うのでBPアップします。バージョンは4.14です。
https://dl.dropboxusercontent.com/u/30427841/BP_IKCharacter.uasset
このタイミングでアニメーションBPを作成して
2つのSkeltalMeshコンポーネントに設定しておきましょう。
アニメーションBPの設定
最後に、実際にキャラクターの動きを制御する部分を設定します。
まずはBPからHMDとモーションコントローラのTransformを取ってきます。

次に、AnimGraphにIKinema for VR用のノードを配置します。

そのノードを選択し、End EffectorパラメータのLimb Transformsを設定します。
ArrayElementsを4まで増やし、各Boneに値を設定。Hips Transformも設定します。

そして、Reflesh nodeを実行した後に、

こんな感じに組みます!最後の最後に雑い!
(ぼけてよく見えない方は、画像を別タブで開いて見て下さい)

In Poseに指定するアニメーションは特に指定はありません。
通常のT・Aポーズ、または待機モーションで問題無いかと思います。
長くなりましたが、これで準備完了です!
VR Previewを実行すると自分の動きにキャラクタが連動すると思います!
…え?挙動がおかしい?よし、ならばIKinemaRigの調整地獄行きだ!
(あまり把握できてないので情報欲しいです…)
…まだ開発途中なせいか、出るはずのピンが無かったりクラッシュしたりと
怪しい挙動をすることが多々あります。
不具合が起こった際は一からやり直した方が安全かもしれません…