UE4モーキャププラグイン チュートリアル

暮井 慧(プロ生ちゃん)モデルを例に、拙作 KiruroboMocapPlugin をリアルタイムモーションキャプチャに使う手順を解説します。

目次

1. はじめに

この記事は、Perception Neuron または MVN によるモーションキャプチャを受信するKiruroboMocapPlugin のチュートリアルとして書いたものです。
元々内輪で使うために作ったプラグインであり、仕様がころっと変わる可能性も高いですが、もし使ってみる方がいればご意見いただけるとありがたいです。

Perception Neuron に関しては Cyx さんTP_ThirdPersonNeuron がいずれ公式になりそうで将来性がある気がします。
こちらはMVNを使いたかったのと、学生がすぐに使えるように導入が簡単になることを狙っています。

この記事における検証環境

 

2. プロ生ちゃんをインポート

前の記事をご覧ください。

既にUE4のプロジェクトは作成済みとします。

3. プラグインの導入

KiruroboMocapPlugin の Releases ページ にファイル一式があります

(KiruroboMocapPlugin-UE4.9.2-Win64.zip などがプラグインです。Source code (zip) というものはサンプルプロジェクト全体です。)

お使いの UE4 バージョンにあったファイルがあれば、ビルド済です。
そうでなければどれを選んでも同じです。手元の環境でビルドする必要があります。

20151120_MocapPlugin_01
圧縮ファイルを展開した中に Plugins というフォルダがあります。

20151120_MocapPlugin_02
それをプロジェクトのフォルダに丸ごとコピーしてください。

その後、プロジェクトを開きます。
バージョンが異なるなどでビルドが求められた場合は、ビルドをしてください。
ビルドのためにはプロジェクトにC++のファイルを含める必要がありそうです。
参考 UnrealEngine4で2Dゲームを作ろう! その12 プラグインをソースからビルドする

20151120_MocapPlugin_03
起動したら、「編集」→「Plugins」で表示されるプラグイン一覧の最下部にて確認できるはずです。

4. プラグインの利用

以上でプラグインが有効になったものとします。

そこから利用する手順は、モデルに合わせた設定を除けば、最短2ステップです。

4.1. GameInstance の置き換え

プロジェクトのゲームインスタンスを MocapGameInstance にします。
手順は下記のようになります。

「編集」→「プロジェクト設定」を選択。

20151120_MocapPlugin_04
出てきたプロジェクトの設定画面の左側で「マップ&モード」を選ぶ。

20151120_MocapPlugin_05
ここのゲームインスタンスを「MocapGameInstance」を選択します。
選択したらプロジェクトの設定は閉じて結構です。

この MocapGameInstance では、起動時に自動的にモーキャプソフトへの接続が開始されます。

4.2. アニメーションブループリントの作成

MocapPluginAnimInstance を親とするアニメーションブループリントを作成します。
プロ生ちゃんモデルから生成する手順を説明します。

プロ生ちゃんのスケルタルメッシュを右クリックし、「作成する」→「Anim ブループリント」を選択します。

20151120_MocapPlugin_06
プロ生ちゃんのスケルトンに基づくアニメーションブループリントが作られます。

20151120_MocapPlugin_07
名前は Pronama-chan_BP などとつけておきます。

そのアニメーションブループリントをダブルクリックして開きます。

20151120_MocapPlugin_08
「ファイル」→「ブループリントの親を変更」を選びます。

20151120_MocapPlugin_09
ここで MocapPluginAnimInstance を選択して下さい。

以上で、MocapPluginAnimInstance を親としたアニメーションブループリントにすることで、接続されたモーキャプの姿勢を反映するようになります。

すでにプロ生ちゃんのスケルタルメッシュなどがレベルに追加されている場合(ビューポートに表示されている場合)はいったんレベルから削除して、ここで作ったアニメーションブループリントを改めてビューポートにドラッグしてください。

5. ボーンの対応付け

ブルーマンやグレーマンと同じボーン名ならもう動かせるのですが、プロ生ちゃんなど元々UE4専用でないモデルは、申し訳ないですがこの後が面倒です。

先ほど開いたアニメーションブループリントで上の方の「スケルトン」と書いてある部分をクリックします。
するとスケルトン編集モードに切り替わります。

5.1. プロ生ちゃんの場合

20151120_MocapPlugin_10
ここで左にモデルのボーン名がありますので、それを参照しつつ右にある Bone Map を編集します。

ですが、ボーンが70個分あり、全部書くのも大変なのでこちらに用意しました。
プロ生ちゃん BoneMap (テキストファイル)

20151120_MocapPlugin_22
テキストファイルの中をすべてコピーしたあと、「Bone Map」という文字の上で右クリックして貼り付けます。

5.2. 自分で編集する場合

まず Bone Map と書かれたところを右クリックして「すべて展開」すると見やすいです。

  • Bone … モデルのボーン名(大文字小文字はどちらでもOK)
  • Mocap Bone … 本プラグインでのボーン名

という2つの項目がありますので、ルートから順に記述をお願いします。

※注意点
特に背骨部分などでモデルのボーンがプラグインのボーンより少ない場合、省略せず同じボーン名で割り当てる必要があります。用意した例では、プロ生ちゃんの upper_body に対し Spine01、Spine01L3 の2つが割り当てられています。
なぜかというと、それぞれのボーンは親に対する相対姿勢を持たせているためです。省略するとそのボーンの姿勢が抜けるため、それ以降の子ボーンの姿勢が変わってしまいます。
モデルのボーンの方が多い場合なら、省略をしてかまいません。そのボーンは動かないことになります。
あるいは手首より先は動かさない場合など、先(子)の姿勢はもう使わない、ということならばばっさり省略して問題ありません。

6. モーションキャプチャソフトの送信設定

さて、一応UE4で受信する準備はできたので送信側の設定をします。

6.1. Perception Neuron のソフト「Axis Neuron」

Perception Neuron のソフトである Axis Neuron はこちらから無料版がダウンロードできます。
サンプルデータもあるので、実機がなくても試せます。

※注意 今のところ Axis Neuron バージョン 3.5.24 では UDP で送信する際に同じPCでは受信できない不具合があるようです。
UE4を動かすPCと、Axis Neuron を動かすPCを別々に用意すれば動作します。

設定画面を出します。

20151120_MocapPlugin_18
Broadcasting の設定で、UDPを選択する。
その下で送信先(UE4を動かすPCの)IPアドレスを入れておく。
BVHにチェックを入れ、ポートは7001としておく。

20151120_MocapPlugin_19

Output Format の設定では、Block type は Binary として Rotation はYXZ にしておく。
Displacement と Reference はチェックがあっても現バージョンのプラグインでは無視されます。

6.2. MVN のソフト「MVN Studio」

この説明では MVN Studio 2.6 ですが、その後のバージョンでもおそらく基本は同様です。

20151120_MocapPlugin_20
Net Streamer Settings を開きます。

20151120_MocapPlugin_21

Network Streamer を Enable にします。
Protocol and data set は Quaternion-based orientation とします。
Destination addresses で、送信先PCのIPアドレスに続けて:7001 とします。

7. 動作確認

ではUE4でプレイして、モーションを再生してみます。

20151120_MocapPlugin_11

ここまでで動くはずですが、プロ生ちゃんの基本姿勢が両手を斜めに降ろしたAスタンスなのに対して、NeuronやMVNは腕を横に伸ばしたTスタンスが基準であるため、腕の姿勢がおかしいです。

8. 基本姿勢(基本動作)の設定

もうちょっとスマートな方法がありそうですが、私のとった手順を説明します。

20151120_MocapPlugin_12
スケルトンをダブルクリックで開いてください。

あるいはアニメーションブループリントを開いていた場合は上の「Preview」を解除した状態にしてください。
(アニメーションブループリントを開いた際はプレビュー状態になっています。それだと編集できません。)

20151120_MocapPlugin_13
開いたウィンドウで、両肩や両上腕を回転させ、Tスタンスにします。

20151120_MocapPlugin_14
「Record」ボタンを押し、アニメーションとして記録させます。

20151120_MocapPlugin_15
保存先を聞かれるので Pronama-chan_TPose といった名前にしました。
名前を入れると録画が開始されます。
短時間で良いのですぐ停止します。

その後にアニメーションブループリントのアニムグラフを表示させます。

20151120_MocapPlugin_16
アセットブラウザを見ると先ほど保存したアニメーションがあるので、アニムグラフにドロップして、最終アニメーションポーズに繋げます。

これでプレイすると、Tスタンスを基準とした動きとなり、おおよそモーションが正常に表示されるはずです。
(厳密にはやっぱりモーションとモデルが合わないと差は生じてしまいます。)

20151120_MocapPlugin_17

なお単にTスタンスをとっているだけのアニメーションでなく、まばたきを含むようなアニメーションであればなお良いかと思います。

Follow me!