今回は引き続き、AvatarDemo3とAvatarDemo4について説明させて頂きます。
前回の記事はこちら
-
-
『Azure Kinectのアセット、Azure Kinect Examples for Unityがすごい!!!【 AvatarDemo1・2編 】
2020年3月27日、ついに日本でもAzure Kinect Developer Kit (DK)が発売されました。 Microsoft Azure Kinect DK 以前からも販売は ...
続きを見る
これらのシーンの中のスクリプトはAvatarDemo1の『AvatarController』を元にしたスクリプトが多いです。
場合によって使い分けることができると開発の幅が広がると思います。
もし、前回の記事を読んでない方は先にそちらを読んでいただければこの記事の内容が分かりやすいと思います。
KinectAvatarsDemo3
このサンプルシーンではキューブが1つとそのキューブに腰かけているアバターが1人配置されています。
このシーンでは椅子に座った状態のアバターをボディトラッキングで動かすことができます。
KinectAvatarsDemo1との違いはアバターに使われているスクリプトがKinectAvatarsDemo1では『AvatarController』なのに対して、
このシーンでは『AvatarControllerClassic』が使われています。
『AvatarController』との大きな違いはスクリプトのInspectorから各ボーンを設定する必要があるというところです。
このサンプルシーンでは上半身のボーンだけ設定されているため、足は動きません。
このサンプルシーンのように椅子に座らせたい、もしくは上半身だけ使いたいといった場合は、こちらのスクリプトの方が使いやすいと思います。
また、人間以外の独特な形状のアバターを動かしたいときもこちらの方が便利そうです。
もう一つの違いとしてこのシーンではOffset Nodeが使われています。
Offset Nodeを使うことでアバターの基準の位置を別のオブジェクトに合わせることができます。
このシーンの場合は腰かけているキューブがOffset Node用のオブジェクトになっています。
そのため、このキューブを動かすことでアバターも合わせて移動するといった仕組みになっています。
Playした後にアバターを移動させたいときにはぜひとも使いたい機能です。
KinectAvatarsDemo4
このサンプルシーンは他のシーンと違って人のアバターが配置されてないことが特徴です。
シーン上には誰もいませんがPlayすることでアバターが読み込まれ、KinectAvatarsDemo1と同じようにカメラのの前の人の動きに合わせて動きます。
その違いはKinectAvatarsDemo1ではあらかじめ配置したアバターに『AvatarController』がアタッチされていることに対して、
KinectAvatarsDemo4ではAvaterMatcherというゲームオブジェクトがかわりにあり、それに『UserAvatarMatcher』というスクリプトがアタッチされていることです。
この『UserAvatarMatcher』はInspectorから使いたいモデルを設定することで使うことができます。
そのため、一度スクリプトをアタッチしてしまえば簡単に使いたいモデルを変更することができます。
動作すると『AvatarController』と同じようにボディトラッキングができます。(3Dモデルはニコニ立体ちゃんを使用)
『AvatarController』と比べて
- 複数人同時のボディトラッキングができる
- カメラの前に人がいるときだけアバターが表示される
といった動作の違いがあります。
カメラの前にいないときにアバターが消えることによりボディトラッキングをアバターに反映させるときによくある、
人間が認識されていないときに変なポーズでアバターが固まるといった問題を解消できます。
それだけだと一見便利そうに見えるのですが、Playして初めてアバターがシーン上に表示されるため、シーンの作成段階ではアバターにスクリプトをアタッチすることができないといったデメリットがあります。
リップシンクや瞬きなどの機能を追加したい場合、後からそれらの機能を付け足すスクリプトを作るといった工夫が必要になってきます。
それにはAddComponent() メソッドを使うことをお勧めします。
例えば以下のようなスクリプトです。
- using UnityEngine;
- using System.Collections;
- public class AddComponentExample : MonoBehaviour
- {
- void Start()
- {
- SphereCollider sc = gameObject.AddComponent<SphereCollider>() as SphereCollider;
- }
- }
このスクリプトの場合、『gameObject』という名前のゲームオブジェクトに『SphereCollider』スクリプトをアタッチすることができます。
AddComponent() メソッドを使うことでPlay前には存在していなかったオブジェクトにキーボード操作などで機能を追加することができるので非常に便利です。
参考サイト : https://docs.unity3d.com/ja/current/ScriptReference/GameObject.AddComponent.html
まとめ
2記事にわたってAzure Kinect Examples for UnityのAvatarDemoのサンプルシーンについて書かせていただきましたが、いかがでしたでしょうか。
まだまだAzure Kinect Examples for Unityには面白いスクリプトが沢山あるので、
いずれ、残りのシーンやスクリプトについての記事も書いていきたいと思います。
Azure Kinect Developer Kit (DK)の購入はマイクロソフト ストア オンラインからできます。
Microsoft Azure Kinect DK をAmazonで購入する