ブログ

簡易的なモーションキャプチャーシステムを作ってみた(デザイン学科 廣瀬伸行)

研究室からこんにちは(デザイン学科)
皆様、夏休みもスクーリングやレポート課題の作成など勉学に励まれているものと思います。私も夏休みの宿題として、プログラム言語のC言語の勉強をしようと簡易的なモーションキャプチャーシステムを作ってみました。ということで、この記事は、私の夏休みの自由研究の概要報告ということでご容赦いただけましたら幸いです。

私がプログラム言語の勉強をするときは何か具体的な題材を設定します。自分のモチベーションのために、自分の仕事や授業などで使えるなどの付加価値がつけられるような題材を考えます。
今回は、VR用のHMD(ヘッドマウントディスプレイ)とモーションコントローラーの機器を持っていることと、後期の授業でも使えるというということ、そして、2017年8月の「VRはじめました」の記事から1年たっていることから、ゲームエンジンをC言語で拡張して簡易的なモーションキャプチャーを作ることにしました。
モーションキャプチャーとは、身体の動作をデータ化する技術で、その動作をキャラクターなどへ反映させることができます。映画やゲーム、VTuberの登場人物の動作の作成などで利用されます。今回は、利用する機器の都合とCの勉強ということで正確なデータ化ではなく似たような動きをする程度を目指しました。実は、同じ機器を使用してモーションキャプチャーをすることができるアプリケーションはありますし、インターネットで検索すると、同じことを試みておられた先人もおります。そこは勉強と割り切って、先人のサイトを組み合わせて参考にさせていただきながら挑戦しました。

今回作ったものの概要としては、HMDをかぶり、コントローラーを両手に持ち、ゲームエンジンを起動すると、室内に対角線上に設置したセンサーで、それぞれのHMDと左右のコントローラーの3次元情報が得られます。ここまでは、ゲームエンジン(Unreal Engine: https://www.unrealengine.com/)が処理してくれます。大変助かります。
今回作ったのは、VR上に表示されるキャラクターに動作を反映することと、その動作データをCSVファイルに書き出す拡張プログラムを作って適用したところです。
頭と両手の位置以外は、IK(インバースキネマティクス)という技術で補完することや、書き出したデータの両手首の用の回転値が、途中で反転してしまう問題に、手首に仮想物体を連蔵させ、その3次元の位置座標から回転値を再計算するなど、一筋縄ではいかない部分もありましたが、結論から言うとそれなりにできました。すでに通学の授業でも、学生に試してもらっています。これから学生が作る課題作品が楽しみです。

今回C言語の勉強としては、「データをちょっと加工してファイルに書き出すだけ」でしたが、C言語に触れ、とりあえず使えるものができたという経験が得られてよかったです。現在は、上半身の動作のみですが、下半身用のセンサーが届いたら、全身用にアップグレード予定です。

愛知産業大学通信教育部
デザイン学科講師 廣瀬伸行