【MotionBuilderチュートリアル】第15回 モーションのストリーミング
こんにちは、株式会社GUNCY’Sの岡崎です。
前回でUnityへのモーションのインポートもできるようになったと思います。14回まででは収録されたモーションを編集し、保存という流れでした。
今回はMeshSyncというパッケージを利用してMotionBuilderからUnityへのストリーミングを実践します。ちなみに、リアルタイムで動くということは、モーションキャプチャーで収録中の情報もリアルタイムで反映させることも可能です。モデルをリアルタイムで動かすことに興味ある方は今回の内容をぜひご覧ください。
今回はモーションキャプチャーでのモーション取得からUnityへのストリーミングまでを実践します。当初は予定していませんでしたが、一部変更してモーションキャプチャー機材を使用した実践内容を説明します。
モーションキャプチャ用の機材が必要となる操作ですが、実際にお持ちでない方でも収録済みのモーションを再生してストリーミングをすることもできます。モーションキャプチャーについては、こんな事もできるというデモンストレーションとしてご覧いただければと思います。
モーションキャプチャー機材としてこの記事ではmocopiを使用します。
mocopiでモーションキャプチャー
mocopiはSONYから発売されている、スマホと連動して使えるモーションキャプチャデバイスです。モーションキャプチャー機材の中では個人でも手が届きやすい価格となっています。
スマホのアプリを通してモーションデータをBVH形式として収録したり、PCに送信することもできます。
キャリブレーションについてはmocopiアプリにしたがって操作をすれば簡単にできますので、こちらでは割愛させていただきます。
mocopiプラグインの導入
こちらのページでMotionBuilder用のプラグインをダウンロードします。
ダウンロードしたデータを解凍して対応するバージョンのプラグインをMotionBuilderのプラグインフォルダに配置します。
配置後、MotionBuilderを再起動するとプラグインがAssets Browserに表示されます。
再起動時にシーンがリセットされてしまうので必要であれば保存しておいてください。
MotionBuilderでストリーミングするシーンを用意
次にMotionBuilderの方でセットアップをしましょう。
- UnityへストリーミングしたいFBXファイルをMotionBuilderで開きます。
今回はモーションを編集中である想定としてKaya_Constraint.fbxを使用します。
このファイルはキャラクタライズとコンストレイントまでが設定されているファイルです。
キャラクタライズとコンストレイントについての説明は過去の回をご覧ください。
- さきほど追加したmocopi puluginを3Dビューにドラッグ&ドロップします
追加するとNavigatorの表示が画像のようになるので、Model bindingのプルダウンからCreate…をクリック
Tポーズのボーンがシーンに追加されます。
このボーンはmocopiから送信されたモーションによって動くようになります。
また、合わせてmocopiプラグインによってこのボーンのCharacterも追加されます。
追加された時点ですでにキャラクタライズもしてあるので、KayaのCharacterのリターゲット元をこのmocopi characterに変更しましょう。
mocopiからPCへの接続設定
では次にmocopiアプリからMotionBuilderを起動しているPCへモーションを送信するための設定をします。
- MotionBuilderを起動しているPCのIPアドレスを確認
コマンドプロンプトでipconfigと入力して出てくるIPアドレスを確認します
。
IPv4アドレスの欄に表示されるローカルIPアドレスを確認します。
この時mocopiを使用しているスマホとMotionBuilderを使用しているPCが同じネットワークであることを確認してください。Wi-Fiでも有線でも、同じルーターに接続していればOKです。
- mocopiアプリからPC接続設定
キャリブレーション後の画面で右上のアイコンをタップ、設定を選択します。
-
PC接続設定を選択
-
IPアドレス欄にさきほど調べたIPアドレスを入力
送信フォーマットはmocopi(UDP)、送信ポート設定はMotionBuilderに入れたプラグインと合わせます。
入力できたらOKボタンをタップして設定完了です。
モーションをMotionBuilderへ送信
設定が完了したらmocopiアプリからモーションをMotionBuilderへ送信します。
- キャリブレーションを完了した状態で以下の画像のように画面を切り替えます。
- モーション送信モードに切り替え
- 録画・送信切り替えでは送信モード(下のボタンが緑色であることを確認)
- 緑色のボタンをタップ
カウントダウン後にモーションの送信が開始されます。
- MotionBuilder側でmocopiプラグインをオンラインに切り替える
mocopiプラグインでOnlineの赤いランプをクリックしてオンラインに切り替えます
モーションの送信に成功するとTポーズからmocopiのモーションに切り替わります。
Kayaモデルにリターゲットされているのでmocopiのモーションに合わせてKayaの3Dモデルが動かせることが確認できます。
これでmocopiからMotionBuilderへモーションの送信部分の用意は完了です。
続いてはこのモーションをUnityへストリーミングするためにMeshSyncを使用します。
MeshSyncとは?
MeshSyncはUnity Technologiesから提供されている、DCCツール(MotionBuilderやMaya,Blenderなど)のモデルの編集をUnityでリアルタイムに反映させるためのパッケージです。Unityエディタ内での見え方を確認しながらモデルの編集を可能にします。こちらはMotionBuilder以外にも対応しているDCCツールがあるので確認してみてください。
**
こちらは標準の機能というわけではないため、導入するために手順を踏む必要があります。
Unityで情報を受信する側とDCCツールから情報を送信する側とがあるため、それぞれの準備をしていきましょう。
MeshSyncの導入 Unity側
まず最初にUnityにMeshSyncを導入していきます。
MeshSyncのインポート
まずはMeshSyncをインポートします。
-
Unityでパッケージマネージャーを開く
-
画面左上の+ボタンからAdd package from git URLを選択
※お使いのPCにGitがインストールされていない場合はインストールしておいてください。
-
com.unity.meshsync@0.16.2-preview
を入力してMeshSyncパッケージをインポートします。こちらはUnity側でMotionBuilderなどDCCツールからの情報を受け取るためのパッケージです。今回使用するバージョンは0.16.2とします。
-
インポートできたらMeshSyncがリストに表示されます。
MeshSync DCCプラグインのインポート
-
MeshSyncのインポート同様にpackage Managerを選択して
-
com.unity.meshsync.dcc-plugins
を入力してDCCプラグインのパッケージをインポート。こちらはMotionBuilderなどのDCCツール側にインストールするためのプラグインが含まれています。
-
パッケージインポート後、ファイルエクスプローラーで、Packages/MeshSync DCC Plugins/Editor/Plugins~にアクセス
-
そこにある対応するバージョンのプラグインMeshSyncClientMotionBuilder.dllを解凍
-
MotionBuilderのプラグインフォルダにMeshSyncClientMotionBuilder.dllをコピー
これでMotionBuilderを再起動するとのAsset BrowserからDevicesからMeshSyncを追加可能になります。
再起動時にシーンがリセットされてしまうので必要であれば保存しておいてください。
Unity側でMeshSync Serverを配置
- 画面上部のGameObjectからMeshSyncという項目が追加されているので、MeshSync Server選択します
配置されると、InspecterにMeshSyncServerというオブジェクトの情報が表示されます。
ここでServer Portを確認しておいてください。
-
Assets BrowserのDevicesから、Unity MeshSyncを3Dビューにドラッグ&ドロップします
-
ServerのAddressでIPアドレスとポートを確認して入力
Sceneのチェックボックスは全てチェックを入れます。
Unity側でモデルが表示される事を確認できます。
アニメーションを用意せずにモデルのボーンをMotionBuilderで回転させてもUnity側にストリーミングできます。MeshSyncを使用することで、Unityのシーンを確認しながらMotionBuilderのアニメーションを操作できます。
マテリアルはストリーミングされないので、Unity側で用意したマテリアルを適用します。
Kayaのモデルではマテリアルが用意してあるのでそれを適用します。
さきほどのmocopi characterのモーションをMotionBuilderで受け取って動作と合わせると以下のようになります。
MotionBuilderを通したモーションのストリーミングの流れは大きく分けて、
- モーションキャプチャデータを送信
- MotionBuilderで受信
- リターゲットオプションなどの調整
- Unityなどへ送信
といった流れとなっています。
mocopiは直接Unityにデータを送信することもできますが、MotionBuilderを通すことで、モーション収録することはもちろん、リターゲットオプションやコンストレイントを活用することもできます。お持ちの方であれば、ぜひ試してみてください。
あとがき
今回でMotionBuilderチュートリアルは最終回となります。少々おまたせしてしまいましたが、この回まで続けられたのも周囲のサポートや、ご覧いただいている方の期待にお応えしたいという思いがあってこそです。ここまでご覧いただき本当にありがとうございました!
ところで、MotionBuilderチュートリアルは今回で最終回ですが、今後もモーションキャプチャに関連した記事を作成していきたいと思っております。不定期となるとは思いますが、今後もどうぞよろしくお願いいたします!
モーションキャプチャーでお悩みの方は
株式会社GUNCY’Sではモーションキャプチャーの総合支援サービス"Mocap SOS"を開始しました。
モーションキャプチャーについてのご相談はぜひ弊社へお問い合わせください。
メールでのお問い合わせ:mocap_contact*guncys.com
(※記号「*」を「@」に置き換えてください。)
免責事項
- 当記事のコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性、最新性を保証するものではありません。
- 理由の如何に関わらず、本記事に掲載されている情報の変更・削除、および本記事の更新の中断・中止によって生じるいかなる損害についても、当社は責任を負わないものとします。
- リンク先へのアクセス、リンク先からのダウンロード、その他の方法を通じて取得したコンテンツは、自身の裁量とリスクをもって使用されるものとします。
- 当記事から移動された先のサイトは、当社が管理、運営するものではございません。移動先サイトで提供される情報の真偽、サービス等につきましても責任を負いませんのでご了承ください。なお、予告なしに内容が変更または廃止される場合がございます。
Discussion