今回は「KinectとUnityによるモーションキャプチャーアプリ開発~#1 概要編~」ということで、第1回目は目的、概要、資材について紹介していきます!
目的
KinectとUnityによるモーションキャプチャーアプリ開発って何をしたいんじゃー!というのを簡単に説明していきます。
(経緯については、【モーションキャプチャー】KinectとUnityによるモーションキャプチャーアプリ開発~#0 経緯編~(近日公開予定)の方で長々と説明していますので興味あれば、ぜひ。)
目的、それは、ドラムの奏法の解析です。
ドラムは他の楽器と比べ、圧倒的に身体的な部分が重要で、スポーツ要素が多いと言えます。
そこで、プロのスポーツの現場でも使われているモーションキャプチャーを使った可視化システムを作ろうと思ったのです!
モーションキャプチャーを使うと、その瞬間の体の各部位の位置情報が記録でき、3次元で視覚的に確認できます。
今回は、ドラムの奏法の解析が目的と言いましたが、今のところドラムに限定せず汎用的に使えるものを作成する予定です。
概要
まずは、Kinectとは?Unityとは?モーションキャプチャーとは?というところから説明します!
・Unityって何?
・モーションキャプチャーって何?
Kinectって何?
KinectはMicrosoftが発売している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つです!
・デスクトップPC
Azure Kinect
まずAzure Kinectの基本的な性能について、簡単にまとめてみました。
実はKinectにはライバルがいまして、IntelのRealSenseというものがあります(ちょっとほしいかも…)。それと比較して見てみましょう。
項目 | 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の利点・欠点をざっとまとめると以下の通りです。
・視野が広い→近距離でも使用可能
・深度カメラのフレームレートが低い(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#だからです。KinectのSDKはC/C++で利用することができますが、GithubでC#用のラッパーが公開されているため、それを利用します。
UnityはVisual Studioと対応しているため、エディター、デバッガーとしてVisual Studioを利用することができます。
まとめ
以上、概要編でした。思ったより長くなってしまいましたが、いつものことです!(開き直り)
まとめると、このようになります。
・モーションキャプチャーはドラムの奏法の解析に使うよ
・KinectとゲーミングPCを用意するよ
今後、第何回まで続くかわかりませんが、経過状況を公開していきたいと思います!
最後まで読んでいただきありがとうございました!良き人生を!
コメント