【モーションキャプチャー】KinectとUnityによるモーションキャプチャーアプリ開発~#1 概要編~

プログラム

今回は「KinectとUnityによるモーションキャプチャーアプリ開発~#1 概要編~」ということで、第1回目は目的、概要、資材について紹介していきます!

 

目的

 

KinectとUnityによるモーションキャプチャーアプリ開発って何をしたいんじゃー!というのを簡単に説明していきます。

 

(経緯については、【モーションキャプチャー】KinectとUnityによるモーションキャプチャーアプリ開発~#0 経緯編~(近日公開予定)の方で長々と説明していますので興味あれば、ぜひ。)

 

目的、それは、ドラムの奏法の解析です。

 

 

ドラムは他の楽器と比べ、圧倒的に身体的な部分が重要で、スポーツ要素が多いと言えます。

 

そこで、プロのスポーツの現場でも使われているモーションキャプチャーを使った可視化システムを作ろうと思ったのです!

 

モーションキャプチャーを使うと、その瞬間の体の各部位の位置情報が記録でき、3次元で視覚的に確認できます

 

 

今回は、ドラムの奏法の解析が目的と言いましたが、今のところドラムに限定せず汎用的に使えるものを作成する予定です。

 

概要

 

まずは、Kinectとは?Unityとは?モーションキャプチャーとは?というところから説明します!

 

・Kinectって何?
・Unityって何?
・モーションキャプチャーって何?

 

Kinectって何?

 

KinectMicrosoftが発売しているPCとUSB接続をしてカラー映像赤外線撮影計測ができるカメラです。

 

 

今まで3世代出ていて、現在販売されている最新の機種は「Azure Kinect」というものになります。

 

最初にKinectが発売されたときはMicrosoftのゲーム機「Xbox 360」用だったのですが、どこぞの技術者がハックするようになってから開発者向けに発売されるようになり、今や最新の機種「Azure Kinect」は逆に開発者向けのみの発売となっています。

 

仕組みはゲーム向けも、開発者向けも、第1世代から同じです。カラー映像による左右上下の情報赤外線による奥行の情報から人間の各部位(関節など)の3次元の位置を推定します。

 

その位置情報をPC側で利用することによって人間の動きに合わせたアニメーションを表示させたりできます。

 

これが次に説明するモーションキャプチャーというシステムのことです。

 

モーションキャプチャーって何?

 

答えを先に言ってしまいましたが、モーションキャプチャーとはカメラによって計測した人間の動作を利用するシステムのことです。

 

(この画像は大学の卒業研究で作ったものです。GIFアニメーションのため開くと動きます。)

 

Kinectの場合は、カラー映像赤外線の情報で行いますが、カラー映像のみの普通のカメラで人間の体の各部位の位置がわかるマークをつけて計測するものもあります(テレビなどでよく見る全身黒タイツに白っぽい球体を全身に張り付けているやつです)。

 

モーションキャプチャーはゲームで利用されるほか、スポーツでの動作解析にも使われます。

 

今回は動作解析が目的です。

 

しかし、そのためにはカメラだけでなく、可視化するためのソフトが必要になります。

 

Unityって何?

 

UnityはCGとアニメーションが作れるゲーム開発ツールです。ゲームエンジンとも言われます。

 

 

このUnityを使って可視化をしようという目論見です。

 

Unityはスマートフォン、PC、アーケード、とどの媒体のゲームにもよく使われ、ゲームではなくてもCGを使ったアプリにも使うことができます。

 

よく使われるということは情報が多く、関連するツールが豊富であったり、そもそもこのUnityというソフト自体の質がある程度担保されているということになります。

 

本当に簡単にゲームが作れて、Youtubeの解説動画を見れば誰でも作れるので、よかったらお試しください!(某ガジェット系有名Youtuberもゲームを作っていました!)

 

資材

 

開発に必要な資材をデバイス開発環境に分けて説明します。

 

デバイス

 

シンプルにカメラPCの2つです!

 

・Azure Kinect
・デスクトップPC

 

Azure Kinect

 

まずAzure Kinectの基本的な性能について、簡単にまとめてみました。

 

実はKinectにはライバルがいまして、IntelRealSenseというものがあります(ちょっとほしいかも…)。それと比較して見てみましょう。

 

項目 Azure Kinect RealSense(Intel RealSense
Depth Camera D415)
価格 ¥42,750 (税抜き) $149.00 (およそ¥16,300)
映像カメラ 解像度 (H × V) 1280 × 720 (HD)
~ 3840 × 2160 (4K)
1920 × 1080 (FHD)
フレームレート 0 ~ 30fps 30fps
視野 (H × V × D) 90° × 59° / 90° × 74.3° 64° × 41° × 77° (±3°)
深度カメラ 解像度 (H × V) 320 × 288~1024 × 1024 最大 1280 × 720
フレームレート 0 ~ 30 fps 最大 90 fps
視野 (H × V × D) 120° × 120° 64° × 41° × 72° (±3°)
検出範囲 0.25m ~ 5.46 m 0.5m ~ 3m
接続 PC USB-C 3.1 Gen 1 USB-C 3.1 Gen 1
電源 USB-C
SDK Azure Kinect Sensor SDK
Azure Kinect Body Tracking SDK
RealSense SDK

 

RealSenseにはいくつか機種があって、機種間でスペックに多少の差がありますが代表的そうなものを選びました(本当はてきとー)。

 

Kinect利点欠点をざっとまとめると以下の通りです。

 

・SDKにボディートラッキング(人体検出)用のAPIが含まれている→開発が楽チン!
・視野が広い→近距離でも使用可能
・価格が高い(¥42,750)→とにかく高い!
・深度カメラのフレームレートが低い(30fps)→速い動きに対応できない
・PC接続用と電源用のUSBが2つに分かれている→邪魔!

 

RealSenceの利点・欠点はKinectと反対なだけなので、割愛します。

 

Kinect最大の利点は「SDKにボディートラッキング(人体検出)用のAPIが含まれている」というところですね。個人的には一度初期のKinectで作ったことがあるので、使い勝手がわかるというのもあります。

 

ボディートラッキング(人体検出)とは、人間の各部位の位置や角度を検出する機能のことです。

 

デスクトップPC

 

Azure Kinect SDKにはシステム要件というものがあり、それに匹敵するスペックのマシンを用意する必要があります。

 

システム要件は以下の通りになります。なお、OSはWindowsで、ボディートラッキングを使用する場合の要件とします。

 

OS Windows 10 64bit
CPU 種類 第 7 世代 インテル Core i5
周波数 2.4GHz
コア 4コア
メインメモリ 容量 4GB
グラフィック ビデオチップ NVIDIA GEFORCE GTX 1070
アーキテクチャ Pascal
コアクロック 1506MHz
ブーストクロック 1683MHz
ビデオメモリ 8GB GDDR5
TDP 150W
USB USB3

 

この要件だとゲーミングPCしかないですね(笑)ということでゲーミングPCを用意しました。

 

メーカー HP
モデル名 TG01-1155jp (HP Pavilion Gaming Desktop TG01-1000jp シリーズ)
価格 ¥126,800
OS Windows 10 Pro 64bit
CPU 種類 第10世代 インテル Core i7 10700F(Comet Lake)
周波数 2.9GHz
コア 8 コア
メインメモリ 種類 DDR4 PC4-23400
容量 16GB
ストレージ M.2 SSD 512GB
HHD 2TB
グラフィック ビデオチップ GeForce RTX 2060 SUPER
アーキテクチャ Turing
コアクロック 1470MHz
ブーストクロック 1650MHz
ビデオメモリ 8 GB GDDR6
TDP 175W
USB 前面 USB 3.0 Type-A×4、USB 3.0 Type-C×1
背面 USB 2.0 Type-A×4

 

グラフィック性能が肝で、表にはいろいろな数値は書いていますが、ベンチマークの比較サイトを見た結果、「NVIDIA GEFORCE GTX 1070」を上回るものとして「GeForce RTX 2060 SUPER」が入っているモデルを選択しました。

 

無駄に性能が高くなく、コスパの良いものを選択できたと思います。(コスパ大事!)

 

2つ合わせて送料など込々で¥177,125となり、前澤さんのお金贈り企画のテーマ「ITエンジニアの卵」でいただいた20万円以内に収めることができました!本当にありがとうございました!

 

(前澤さんのお金贈り企画との関連ついては、【モーションキャプチャー】KinectとUnityによるモーションキャプチャーアプリ開発~#0 経緯編~(近日公開予定)で記載しております。)

 

開発環境

 

開発環境も表にしてまとめました(あまり真新しい情報はないですが)。

 

OS Windows 10
プログラミング言語 C#
CG/アニメーション Unity
統合開発環境 Visual Studio 2019
SDK Azure Kinect Sensor SDK / Azure Kinect Body Tracking SDK

 

言語がC#である理由は、Unityの開発言語がC#だからです。KinectSDKC/C++で利用することができますが、GithubでC#用のラッパーが公開されているため、それを利用します。

 

UnityVisual Studioと対応しているため、エディターデバッガーとしてVisual Studioを利用することができます。

 

まとめ

 

以上、概要編でした。思ったより長くなってしまいましたが、いつものことです!(開き直り)

 

まとめると、このようになります。

 

UnityKinectモーションキャプチャーのアプリを作るよ
モーションキャプチャードラムの奏法の解析に使うよ
KinectゲーミングPCを用意するよ

 

今後、第何回まで続くかわかりませんが、経過状況を公開していきたいと思います!

 

最後まで読んでいただきありがとうございました!良き人生を!

コメント

タイトルとURLをコピーしました