VR-AR-MR-XR ブログ

Azure Kinectのアセット、Azure Kinect Examples for Unityがすごい!!!【 ColliderDemo DepthColliderDemo2D DepthColliderDemo3D編 】

8月 30, 2020

今回は前回の引き続き、DepthColliderDemo2DとDepthColliderDemo3Dについて説明させて頂きます。

 

前回の記事のColliderDemo ColorColliderDemo編では手だけに判定があるものでしたが、今回のデモシーンDepthColliderDemo2D・DepthColliderDemo3Dは両方とも体全体に当たり判定を出るものとなっています。

 

前回の記事はこちら

『Azure Kinectのアセット、Azure Kinect Examples for Unityがすごい!!!【 AvatarDemo1・2編 】

2020年3月27日、ついに日本でもAzure Kinect Developer Kit (DK)が発売されました。 Microsoft Azure Kinect DK   以前からも販売は ...

続きを見る

 

Azure Kinect Examples for Unityのリンクはこちらです。

https://assetstore.unity.com/packages/tools/integration/azure-kinect-examples-for-unity-149700?locale=ja-JP

DepthColliderDemo2D

このサンプルシーンでは非Play時に表示されているものはありません。

シーンをPlayすると体のシルエットが表示された後にボールが降ってきます。

そのボールは体と衝突し、腕の上など平らな場所ならとどまります。

このデモシーンを構成するゲームオブジェクトとしては DepthImage Ballspawner DepthColliderといったものが配置されています。

これらの各ゲームオブジェクトが持つ役割として

DepthImageはDepthColliderの『Depth sprite View』から受け取ったシルエットを表示します。

Ballspawnerには『BallSpawner』というスクリプトがアタッチされています。

このスクリプトは名前の通りボールを一定時間ごとに生成するこのシーン特有のスクリプトです。

ボールはX-Y軸方向にしか動かず、体から離れて一定以上落ちると消えます。

また、ボールはプレイヤーが居ないときには生成されません。

DepthColliderには『Depth sprite View』というスクリプトがアタッチされています。

このスクリプトはシルエットのデータをDepthImageに送る機能と、

体の判定を生成し、それをプレイヤーの動きに合わせて動かす2つの機能を持っています。

このDepth Dprite Viewはこのシーン特有のスクリプトという位置づけですが汎用性が高く、

Collider(当たり判定)についての値を調整するなどすれば他のシーンにもかなり応用が利きそうです。

 

また、このシーンはプレイヤーのシルエットと判定を合わせていますが、

前回の記事で書いたようにBackgroundImageをColorColliderDemoから移植することで

カメラからの映像を背景に映してそれに体の当たり判定を合わせることが可能です。

 

このシーンの活用方法としては体全体を判定としたゲームやアプリとしては

具体的にはゴールキーパーをするゲームや落ちてくるオブジェクトをキャッチするといった内容、

例えば過去のKinect for Windows SDKに含まれていたDemo of Shape Game Sampleのようなものを作る参考になりそうです。

 

DepthColliderDemo3D

このサンプルシーンもDepthColliderDemo2Dと同様に非Play時に見えるオブジェクトは配置されていません。

シーンをPlayすると体のシルエットが表示された後に卵が降ってきます。

DepthColliderDemo2D違いは前後(Z軸)の概念があることです。

そのため腕の上に卵を乗せようとしても手前や奥から転げ落ちてしまいます。

 

このデモシーン特有のゲームオブジェクトとしてはEggspawnerやDepthColliderといったものが配置されています。

このDepthColliderは名前はDepthColliderDemo2Dと同じですが、

アタッチされているスクリプトが違い、『Depth Image Viewer』になっています。

『Depth sprite Viewer』はシルエットをDepthImageに送り表示させていましたが、

この『Depth Image Viewer』はカメラを指定してそのカメラにシルエットを投影する仕様になっています。

EggspawnerはBallSpawnerの卵版といったところです。

『Eggspawner』というスクリプトがアタッチされていて、卵を一定時間ごとに生成されています。

『Ballspawner』と生成されるオブジェクトの形状が違うのは当然としてそれ以外の違いとしては、

生成される卵にはX-Y軸しか動かないといった移動制限がありません。

 

このシーンもDepthColliderDemo2Dと同じように体全体を判定するゲームやアプリなどの開発に役に立つと考えられます。

斜めの視点や手を前に伸ばしたり体をそらすことで反応する仕組みを作るならばこのデモシーンを活かした開発ができます。

 

2Dと3Dの使い分け

もし、体に合わせてCollider(当たり判定)が動く機能をゲームやアプリに組み込みたいとき、

前後の概念が必要ではない場合はDepthColliderDemo2Dの方式で開発することをお勧めします。

理由としてはカメラ一台で位置関係を判別しているため、Kinectが左右上下(X-Y軸)と比べて前後(Z軸)への移動を認識しにくいこと、

それに加え、1つの画面をみてシーンの中の3Dオブジェクトの判定と自分の位置関係を判断する必要があるためプレイヤーが前後関係の把握がしにくいといったことが挙げられます。

そのことから機能を削ってまでとは言いませんがDepthColliderDemo3DのようにZ軸を使うことはなるべく避けたいところです。

まとめ

今回はDepthColliderDemo2DとDepthColliderDemo3Dの違いついて説明させていただきました。

DepthColliderDemo2Dのような平面のシルエットの判定はAzure Kinectを使った多くのゲーム開発で基本になるものです。

過去に私はAzure Kinectが発売する前に旧Kinectを使ったゲームを展示している店頭ディスプレイを見たことがあります。

そのゲームは体を動かして画面上の風船を割るといった単純なゲームでしたが、実際にそのディスプレイに足を止める人は多かったです。

Kinectを使ったゲームはそういったコントローラを握らせる必要なくいつの間にか遊ばせてしまうことができる手軽さが魅力だと考えています。

一度は廃れてしまったKinectですが、このAzure Kinectの復活と共に様々な用途に使われて欲しいものですね。

 

Azure Kinect Developer Kit (DK)の購入はAmazonやマイクロソフト ストア オンラインからできます。


Microsoft Azure Kinect DK をAmazonで購入する

 

AR, VR. XR の活用やMicrosoft Holo Lensを活用した建築業向けソリューション

GyroEyeに関するお問合せはこちら

※株式会社インフォマティクスのGyroEye公式サイトへ

 

-VR-AR-MR-XR, ブログ
-, , , , ,

© 2020 IoTプロトタイピング・VR・AR・Unity メディアラボ