ネオキャリアグループ開発者ブログ

ネオキャリアグループの技術者による開発ブログ

UnityとNeuronでお手軽モーションキャプチャをやってみた!

f:id:vr_sasa:20161108154803j:plain

こんにちは!ネオキャリアで働くVRエンジニアのsasaです。

 

昨年度までは自社の求人サイト『FINE!保育士』の開発責任者を務めさせていただき、今年度からは、VR専門エンジニアとして、研究開発の分野に携わるようになりました。

f:id:vr_sasa:20161107180052p:plain

sasa
コーヒーとphpが大好き。

2013年に入社し、ネオキャリアの新卒エンジニア第1号として頑張っています。

 ネオキャリアにはVRブースがあるんです

実は、ネオキャリア新宿オフィス内には社員なら誰でもVR体験ができるよう、VRブースを設けています。

f:id:vr_sasa:20161108124726j:plain

ブース立ち上げ直後で雑多ですが、そのうちPepperくんとお片付けする予定です。

今回の本題です。

ところで皆さん、一度は思ったことはないでしょうか。

「俺もパソコンの画面の中に入り込んで、ディスプレイの先でしか会えないあのキャラクターとキャッキャしたい。」

これだけ技術が発達した世の中なのだから、その恩恵にあずかればお手軽にできる気がします。

 

まず、夢の実現に必要なものを用意していきましょう。

モーションキャプチャユニットをさわってみよう!

f:id:vr_sasa:20161105221758j:plain

これはPerception Neuronというモーションキャプチャユニットです。

モーションキャプチャというと、大規模なスタジオとセットで映画撮影などに使われるとても高価なものだという印象が強いですが、この製品は個人でも手に入る程度に価格が抑えられています。

f:id:vr_sasa:20161105221905j:plain

全体のパーツ数は多く、撮影の用途に応じていろいろな組み合わせができるようになっています。すべてのセンサーを搭載すると、指先までばっちりです。

f:id:vr_sasa:20161107163338p:plain

 

Neuronは体中にこの最大32個の磁気センサーを取り付けることで、それぞれの関節の移動や回転をデータに変換できるようになっています。 f:id:vr_sasa:20161105222120j:plain

背面からみるとこんな感じで、

 f:id:vr_sasa:20161105222303j:plain

前面から見るとこんな感じです。ボディ以外に、両手両足のセンサーがつくようになっています。

f:id:vr_sasa:20161105222429j:plain

 

 また、オプションパーツによって指の動きまでトラッキングすることができます。

このくぼみになっているところ1つ1つにセンサーがついていて、各部位の位置情報を記録できるようになっています。

f:id:vr_sasa:20161105222638j:plain

自分にモーションキャプチャユニットを取り付けると、こんな感じになります。

f:id:vr_sasa:20161105223129j:plain

なんだかめっちゃかっこいい・・・!

スパイ映画っぽい感じになってきました。あふれでる最先端ガジェット感・・・。

 キャプチャしてみよう

これをPCに接続し、専用のキャプチャソフトウェアを起動してみましょう。

f:id:vr_sasa:20161105223320p:plain

これでPCとモーションキャプチャユニットを接続できます。

実際に接続してみると、

f:id:vr_sasa:20161105231243g:plain

おお!本当に画面の中のキャラクターに自分の動きが反映される!

思ったよりも精度高く撮影できることに驚きです。

本当にお手軽モーションキャプチャ環境が整ってしまいました。

 

でもせっかくなら、もっと素敵なキャラを動かしたい・・・

でも(版権的に)アレとかコレとか出しにくい・・・

 

そこで、ゲームから映画まで、何でも作れる3D開発ツールUnityの日本法人で提供している公式キャラクター、ユニティちゃんのお力を借りましょう。

Unityでお手軽モーションキャプチャをやってみた

f:id:vr_sasa:20161105231518p:plain

ユニティちゃんはUnity開発者のためのオリジナルキャラクターで、ユニティちゃんライセンスに則って無料で利用することができます。

unity-chan.com

 

ではこれから、ユニティちゃんにリアルタイムで自分の動きを反映させてみましょう。

 Unityのシーンを作りましょう

一通り動かすために、Unity上に必要なモノを用意します。

まず、自由に使える背景オブジェクトをインポートしましょう。

背景が真っ白なのも面白味がないので雰囲気作りです。

f:id:vr_sasa:20161106012945p:plain

マップ上の適当な箇所にユニティちゃんを配置します。

まだモーションが設定されていない初期配置のユニティちゃんはT字ポーズをとります。体育の授業を思い出しました。

f:id:vr_sasa:20161106013738p:plain

その横に、Neuron APIのモデルを設置します。

漫画家の家にあるような木人形みたいな形してますね。彼もT字ポーズです。

f:id:vr_sasa:20161106014001p:plain

 このNeuron APIのモデルに、モーションキャプチャソフトウェアと連動するためのスクリプト、Neuron Animator Instanceを紐づけて・・・f:id:vr_sasa:20161106225556p:plain

キャプチャソフトウェアに戻って、モーションの配信設定を行います。

この配信されたモーションデータをUnityが受け取って、Neuron APIのモデルのモーションとして反映する仕組みです。

f:id:vr_sasa:20161106230611p:plain

最後に、Unityちゃん側にNeuron APIモデルのモーションを受信するスクリプトを紐づけます。これでユニティちゃんとNeuron APIのモデルのモーションがシンクロされ、両モデルは全く同じ動きをとるようになります。

f:id:vr_sasa:20161106225821p:plain システム上はこのような流れになっています。f:id:vr_sasa:20161107160953p:plain

Unity側のNeuron APIのモデルが余分な気もしますが、このモデルを経由させることでモーションデータの変換を容易にしています。

急場しのぎ的な対処でもあるので、もっとちゃんとしたプロダクトのときは上手い方法を考えないといけないですね。

 

 完成

これでモーションキャプチャをUnityで楽しむための準備が整いました!

プログラムを実行してみましょう。


Axis NeuronとUnityを接続してみたよ!その1

おおおっ・・・!

ちゃんと接続できました!自分と同じ動きをリアルタイムに画面上のユニティちゃんがとってくれます。Unityとモーションデータの接続ができることで、どんな(人型の)キャラクタにもこの動きが適用できるようになりました。

 せっかくなので遊んでみた

このモーションキャプチャ、いろいろと面白いモーションで遊んでみましょう!

男性の自分がユニティちゃんをやるのは誰の得にもならないため、弊社エンジニアのみきちに協力していただきます!

 

(みきちはこんな記事も書いています。)

neo-developers.hatenablog.com

 

ちょっとつけてもらいました。

f:id:vr_sasa:20161108123602j:plain

ニンジャみたい....

みきちさんは空手の経験もあるとのことで、今回はモーションキャプチャーを付けた状態で空手の動きをやっていただきました。

ユニティちゃんが空手をやってみた


【Unity】モーションキャプチャで空手をやってみた【Neuron】

 

結構早い動きをたくさんやってもらったのですが、十分キャプチャできていました。

構えのポーズも人間の自然な動きが再現できています!

f:id:vr_sasa:20161108123951p:plain

経験者は実際にここまで足が上がります!すごい!!!

モーションキャプチャーでは足は下側しか検知できないと勝手に思っていた部分があったのですが、頭の上より足の位置が高い動きをここまで再現できると思いませんでした。

 

たまに発生する位置ずれの調整さえできれば、長時間のモーションも撮影できそうです。本当にお手軽にできるので、今後も社内外いろいろなところで活用したいですね!

おわりに

さて、いかがでしたでしょうか。

エンジニアブログの記事としては技術色が多少薄いかなとも思いつつも、これからエンジニアを目指す人たちにとって、「技術ってなんか面白そう!」という目で見ていただけると幸いです。

ネオキャリアは積極的にエンジニア採用を行っています。

ぜひ弊社のサイトや募集内容をチェックしてくださいね!

www.wantedly.com

 

 ライセンス

ユニティちゃんライセンス

このコンテンツは、『ユニティちゃんライセンス』で提供されています