見出し画像

バーチャルマーケットのブースを作る (4):モーション準備編

はい、美坂です。
今回からの記事では、VR環境とUnityを使って
アバターと色々な物体の動きをまとめてモーションキャプチャーして
Animation Clip形式のファイルに記録・利用するまでの手順を解説します。
アバターだけでなく物体も一緒ってのがポイントです。

この手順をやっていくことで
バーチャルマーケット4での「美作メカ美の台所」ブースにおける
メカ美さんと美坂のモーションみたいなやつを作れます。
こんなやつ。

ちなみにこの展示で使っているモーションは
正確には別な手法、自作ツールでモーション記録したやつなのですが
現状だと今回説明する手法のほうがずっとお手軽にできるので
そっちを説明していきます。

この記事のターゲット層は

バーチャルマーケットやVRChatなどで
 アバターにいい感じのモーションをつけてみたい人

動画やゲーム制作で汎用的に使える
 いい感じのモーションを作ってみたい人

あたりを想定して説明していきます。
Unityの基本操作はできる前提です。

例によって動画版も同時公開です。好きな方見て!

はじめに

今回はいよいよモーションのお話です。

ちょっと前まではモーションは
職人芸的な作業による手打ちによる制作とか
高価な機器によるモーションキャプチャーとか
用意するのはなかなかハードルの高い代物でした。

しかしVR機器の普及で個人でも割とお手軽に
モーションキャプチャーできる環境が揃いつつあります。
まだちょっとお値段は高めですけどね。

しかしVR機器が
モーションキャプチャー機材として有用って
ちょっと斜め上な方向に進んでしまった気もしますね……

さて、今回および次回まででやっていく事の流れです。

画像1

まずVR機器で検出した人の動きは
バーチャルモーションキャプチャーで読み取られて
VRMアバターに反映されます。

このアバターの動きはEVMC4Uに送信されます。

EVMC4UはUnity側でそのデータを受信し、
そのデータでVRMアバターを動かします。

今回の記事ではとりあえずここまでの解説ですが、
その後アバターと物体の両方のモーションを
Unity RecorderでAnimation Clip形式のファイルに記録して、

最終的にはUnityで使っていく、
ってとこまで説明していきます。

このAnimation Clip形式のモーションは汎用性が高くて
VRChat、バーチャルマーケットの展示だけでなく
動画とかゲーム制作とかにも幅広く使えます。

この流れを把握しておくと色々便利ですよ!

必要なもの

では早速やっていきましょう。
まず必要な機器、ソフトとかライブラリとか用意していきます。
必要なもの一覧はこちらになります。

PCVR機器
はい。まずこれが必要です。
今回はVR空間に自分が入って、
アバターのモーションだけでなく
物体に干渉するモーションを記録するって方向ですので
VR機器は避けて通れない感じです。

ちなみにアバターのモーションだけ撮るなら
VRなしでもやれるソリューションが出てきています。すごい。
例えばこれとか。iPhoneでモーション生成。

更にこれとか、動画からモーション生成。

バーチャルモーションキャプチャー
ややこしい処理を書かないでも
お手軽にモーショントラッキングできるすごいやつです。
注意点としては、今回の手法は無料版では動作しません。
下のEVMC4Uと連携するために有料の先行リリース版が必要です。

EVMC4U
バーチャルモーションキャプチャーの位置情報を
Unityから読み取れるようにしてくれるすごいやつです。

VRM形式アバター
最終的にモーションを再生する時に使うモデルと
同じボーン位置・構成のVRMアバターを用意して下さい。
モーション記録と再生で違うモデルを使ってしまうと
再生時のモーションにズレが生じてしまいます。

Unity
はい、まあこれがないと始まりませんね。
今回は、バージョン2019.4.1fでやってみます。

はい、全部用意できましたか?
あちこちから購入したりダウンロードしたりして集めて下さい。
全部揃ったら次に進みましょう。

バーチャルモーションキャプチャーの設定

まずバーチャルモーションキャプチャーを起動します。

画像2

そして設定のここ、「OSCモーション送信」を有効に。
この設定項目、無料版では存在しません。
先行リリース版を入手してくださいね。

次にVRMアバターを読み込んでキャリブレーションして下さい。
これでこちらは準備完了です。

Unityでの環境構築

まずUnityプロジェクトを作成してください。
2019.4.1fでやっていく前提で説明していきます。
最初にこちら、Project Settingsをちょっといじります。

画像3

EditorのAsset Pipeline、Modeのところを「Version 1」にして下さい。
これやらないとVRMが正しく読みこまれない問題が起きます。
※この辺の問題の詳細はEVMC4Uのドキュメントをご参照下さい。
ここで一度Unityを終了、再度起動して下さい。設定が反映されます。

画像4

EVMC4Uを取り込んでいきます。Import Packageで。

画像5

こちらの「Assets/ExternalReceiver」をHierarchyに置きます。

画像6

次、アバターいきます。使うVRMをProjectに配置します。
配置すると自動的にPrefabとかマテリアルとか生成されます。

画像7

アバターのPrefabもHierarchyに。

画像8

さきほど配置した「ExternalReceiver」を選択

画像9

Modelのとこに配置したアバターを指定します。
はい、これでもうUnity上でモーションを受け取れる状態になりました。
かんたん!

画像10

ちょっと再生してみるとこんな感じ。
バーチャルモーションキャプチャー側の動きが
Unity側にそのまま反映されていますね。

VR視点

次にVR空間内の視点を手に入れましょう。
とはいえこれはすぐ終わります。

画像22

Project SettingのPlayerのXR Settingのとこ
Virtual Reality Supportedをチェックして下さい。
チェックするとOculusとOpenVRの項目が出てきますが、
Oculusの方は消しちゃって下さい。

これでUnityがVR対応な状態になります。
具体的にはMain Cameraの位置が
VRヘッドセットの頭の位置に連動するようになります。

画像12

Main Cameraの座標をリセット、
位置と回転を0,0,0にします。

Clipping PlanesのNearをちょっと大きく、0.2ぐらい。
カメラ近くのものを非表示に。

画像24

画像25

これをやらないとアバターの頭の裏側が
視界を覆って前が見えなくなります。

画像13

そして「ExternalReceiver」のここ、
「Root Scale Offset Synchronize」をチェック。
これでVRMアバターの頭とカメラ位置が一致します。
これでアバターに憑依できるようになりました。やったぜ。

画像14

VRヘッドセットをつけて再生してみましょう。
下を見ると自分の手がアバターのものに!
女子小学生の気持ちになるですよ……

はい、アバターのカラダはお楽しみ頂けたでしょうか?
心が落ち着いたら次に進みましょう。

物体に干渉する

次、物体を手で持てるようにしていきます。

画像15

「ExternalReceiver」の下のところに
「Assets > EVMC4U > SampleScripts > HandCatch」の
「HandCatch」を足して下さい

画像22

「In Hold Filer」、手に何か持った時の動き補正です。
ちょっと小さくしたほうが動きやすいです。0.2ぐらい?
「Speed Multiplier」、物を投げた時の速度補正です。
3ぐらいに増やしましょう。
「Signaling」 は今回はチェック外してOKです。
今回の使い方だとエラーが出て気になるので。

これでOK。これだけで「Colliderがついている物体」を
掴めるようになります。

いじれる物を何か置いてみましょう。

画像17

適当にCube・Sphere・Planeとか設置。
位置とかサイズはお好みで
Colliderついてるものはぜんぶ掴めます。

画像18

あ、地面に見立てたPlaneにもついてますね……
このままだと地面を持ち上げることができてしまいます。

画像23

掴みたいオブジェクト、CubeとSphereのTagに
適当なもの、例えば「Catch」とか指定して

画像23

ExternalReceiver/HandCatchのCollision Tagのところに
オブジェクトに指定したTagを入れることで
特定Tagのオブジェクトのみ掴める、という処理もできます。
これで地面を掴み持ち上げる神のようなムーブは封じられました。

画像20

SphereにはRigidBodyをつけて物理演算させてみましょう。
こんな感じに。Use GravityをOn、Is KinematicはOff。

画像21

再生してみます。
つかめる!
RigidBodyつけたものは投げたりもできます。

画像22

物体をいい感じに並べるとこういう事も。
色々遊んだりできますね。

次回予告

はい、VR空間に入ってモノをいじれる、まできました。

次回はこの空間内の物体とアバターの動きを
Unity Recorder使って記録する手順を解説していきます。
ただ、ちょっと工夫とか必要だったりとか斜め上な問題があったりとか
結構色々なだるい罠があります。

詳細は次回!


サポートは主においしそうな or 変な食べ物に費やされます。 サポートしてくれるととても嬉しいですが、お金はまず自分自身を優先して使ってくださいね。