今回はFinal IKという有名アセットを使って、Unity上でVRoidモデルを制御して遊んでみたという内容の記事です。
Final IKを使えばVRoidのキャラクターをかなり自然に動かせるので、「VTuber」とか「バ美肉」に興味のある方には何かしらのヒントになるのではないかと思います。
今回やったこと
はじめに今回やったことについて。一言でいうと、「Final IK」というアセットを使って、Unity上でVRoidモデルの視線移動と、それに伴う上半身の動きを制御しました。
…えーっと、文章だと何言ってるのかよく分からないので下のGIFをご覧ください(動いてない場合はクリックで再生)。
今回はゲームパッドのスティックで視線を動かせるようにしてあります。
まあ一般的には「フェイストラッキング」(※)という技術がよく使われると思うのですが…技術的&コスト的にややハードル高めですし、今回はまだ初歩的な実験段階ということもあり、簡単に実装できる方法を採用することにしました。
※フェイストラッキング…人間の表情を認識して、それをキャラクターに反映させる技術。
どうやって視線を制御するか?という問題
さて、それで「VRoidの視線を動かす」ためにどうやって制御するか?という問題があります。モデルの視線を動かすにはVRoidに仕込まれているボーンを動かす必要があるのですが、それってなんか難しそうで自前でスクリプトを組むのはハードル高いです。
そこで既に誰かが作ってくれたアセットを活用することにしました。
視線だけなら簡単だけど、不自然
というかまず、そもそもVRoidには最初から視線を制御するためのコンポーネント「VRM Look At Head」がアタッチされています(下図)。
ただしこれはあくまでも「目を動かす」だけのコンポーネントらしく、確かに視線だけならコントロールできますが、単純に目がキョロキョロと動くだけです。なので普通に使うにはこれだけだと不自然すぎます(普通、人間がどこかを見るときは頭や上半身も一緒に動きます)。
今回はもっと自然な動きをさせてあげたかったので、せっかくですがこのコンポーネントは使わないことにしました。
超絶便利IKアセット「Final IK」(※有料)を使う!
じゃあどうしたのかというと、ネットで調べていたら「Final IK」が使えるぜ!という話を見かけたのでそれを使うことにしました。
このアセットを使えばIK(=インバースキネマティクス)を簡単に扱えるようになります。IKを扱えるようになるとキャラクターのボーンを自然に動かせるようになるので、VTuber等をやりたい方には必須のアセットと言えるでしょう。
ただし驚くべきはその価格で、なんと定価1万円もします。こう書くと「そんなもん買えるかよ!!」と思う方も多いと思いますが、実は年に数回セールで半額以下になるので、タイミングを逃さなければ市販ゲームを1本買うのを我慢するだけで買えるでしょう(それでも高いけど)。使い道がいろいろあるみたいだし、とりあえず買っておいて損はないアセットだと思います。
…まあ、私の場合はセール中に勢いで買ったものの「何に使えばいいんだ??」状態で持て余していたのであまり偉そうなことは言えませんが。
Final IKでVRoidモデルの視線を制御する手順
では実現方法がわかったところで、VRoidモデルの視線を制御できるようになるまでの作業手順を紹介します。主な手順は次の3ステップです。
- 必要なアセットを読み込む
- VRoidにFinal IKのコンポーネントをアタッチして設定する
- 視線のターゲットを作成する
手順1:必要なアセットを読み込む
まずは必要なアセットをUnityにインポートします。
- Filnal IK:
アセットストアからダウンロード&インポート - VRoid:
以前の記事「【Unity】VRoidのキャラクターをUnityで動かす方法」を参考にしてモデル作成&インポート
という具合にインポート作業を進めましょう。
手順2:VRoidにFinal IKのコンポーネントをアタッチして設定する
次にVRoidのゲームオブジェクトにFinal IKのコンポーネントをアタッチして設定していきます。とりあえず最初からアタッチされている
- VRM Look At Head
- VRM Look At Bone Applyer
は不要なのでチェックを外し、代わりにFinal IKの
- Look At IK
- Look At Controller
をアタッチしましょう。そうしたら適当に設定をいじって調整を行います。今回は下の図のように設定してみました。
手順3:視線のターゲットを作成する
最後に視線のターゲット(見る対象)を作ります。適当なゲームオブジェクトを作ってシーンに配置してください。必要に応じてこのゲームオブジェクトを動かすスクリプトを作るのも良いでしょう。
できたらLook At Controllerのターゲットに今作ったターゲットオブジェクトを設定してください。ゲームを実行して、キャラクターの視線と上半身がターゲットを追従するようになれば成功です。
おわりに:思ってたよりも簡単に制御できて感動
以上、Final IKを使ってVRoidモデルの視線と上半身を制御する方法について書いてきました。
Final IKは高価なアセットですがそれに見合うだけの機能があり、簡単にボーンを制御できてとても便利だと思いました。しかしFinal IKの実力はまだまだこんなものではなく、他にも使い道があると思うので、何か使えそうなことはないか今後も試してみようと思います。