今日はUnityでKinectを使ってモーションキャプチャーするお話をします。
Kinect
前回もお話ししましたが、ほのかのモーションキャプチャーはKinectを使って行っています。
KinectはXboxでジェスチャーや音声認識で操作するためのデバイスで、Windows用のUSB/電源供給用のアダプタとWindowsSDKを介してPCでも運用できます。
現在は製造が中止されていて入手は困難になっていますが、Amazonやヤフオクなどで入手することは可能です。
KinectにはV1とV2があります。V1はXbox 360用、V2はXbox One用で、解析カメラの解像度や奥行判定の精度が若干異なっています。


よく「どちらでも似たようなもの」という記事を見かけますが、両方使ってみた私の感想は「V1よりV2のほうが絶対良い」です。
これは単純にキャプチャー精度の問題で、解析用カメラの解像度や解析方式の違いにより、V1よりV2のほうが2倍くらい性能が上です。購入費用の点では若干V2のほうが高くなりますが、コストパフォーマンスで見ればV2のほうがお得だと思います。なので、ここからはKinect V2で運用することを前提にお話しします。
まず、KinectをWindowsPCで動作させるにはWindows SDKが必要です。
こちらのページで入手し、インストールしておいてください。
Cinema4DからFBXファイルをエクスポート
UnityでC4Dモデルを動かすにはまず、Cinema4Dからfbxデータでモデルをエクスポートする必要があります。
まず、「ファイル」→「エクスポート」→「FBX」
FBXの設定ではバージョンを6.1に設定してOKを押し、.fbxのファイルを任意の場所に出力します。
Unityをインストール
まずUnityをインストールします。
まず、こちらのページにアクセスします。
右上の「Unutyを入手」をクリック
コース選択メニューから「Personal」の「無料ダウンロード」をクリック
ダウンロードした「 UnityDownloadAssistant-xxx.exe」ファイルを実行。
DownloadAssistantが起動するので「Next」をクリック。
「I acssept…」にチェックを入れ、「Next」をクリック。
必要な項目にチェックを入れます。よくわからなければデフォルトのままで大丈夫だと思います。
インストールするフォルダを選択して「Next」
インストールが始まります。初めてインストールする場合、Visual Studio のインストールなどもあるので結構時間がかかります。
「Finish」を押してインストール完了です。
Unity上でKinectを動作させる
Unityを起動し、新規プロジェクトを立ち上げます。
プロジェクト名と保存ディレクトリを指定し、「Create project」を押します。
Unityの初期画面です。このままだと使いにくいのでレイアウトを変えます。
画面右上の「Layout」からプルダウンを引き出し「Tall」を選択。
「Assets」にCinema4Dから出力したFBXファイルをドラッグ&ドロップ。
「Assets」に現れたモデルをクリックすると、「Inspector」ウインドウのImport Settingが出てくるので
「Animation Type」のプルダウンから「Humanoid」を選択。
「Configure」を押す。
するとこんな画面になります。
Sceneビューに「Character is not in T pose」のメッセージが出ていたら、
Inspectorの下の方にある「Pose」プルダウンから「Enforce T-Pose」を選択。
AvatarのMapping設定でボーンの設定が正しいことを確認し、右下の「Done」を押す。
モデルをHierarchyに配置すればUnityで動かすことができるようになります。
あとはKinectとの連携ですが、「Kinect v2 Examples with MS-SDK and Nuitrack SDK」というパッケージが良いと思います。
無料版の「Kinect with MS-SDK」もありますが、こちらは基本機能のみで、モーションデータの記録などもできないので、テスト用にダウンロードし、ある程度使い方を理解すれば有料版を購入すればよいかと思います。
詳しいやり方は下記URLなどを参照ください。
この方法だと、難しいスクリプトなど、一度も書かずにほのかを動かすことができました。
ただし、この方法は費用をできるだけかけずにモーションキャプチャーを実現する方法です。
ある程度費用をかけられる人ならば、HTC viveや、Oculus RiftなどのHMDを使ったモーションキャプチャーを行った方がより精度の高いキャプチャーが可能になると思います。
次は音声に合わせて口パクさせる方法や髪や胸を揺らせる方法などを描いていきます。