NtKinectDLL and NtUnity: Tutorial

Kinect V2 で音の方向を取得して Unity で利用する


2017.08.25: created by
Japanese English
目次へ

前提として理解しておくべき知識


Kinect V2 で音の方向を取得して Unity で利用する

  1. UnityでNtKinectDLLを使う (基本設定)」で作成した Unityのプロジェクトを使います。UnityDLL01.zip をダウンロードして展開して下さい。 さらに、展開したフォルダの名前を UnityDLL04/ と変更して下さい。
  2. 新しいシーンを作成して、Assets/Scenes/ に Sample04.unity という名前で保存します。
  3. File -> New Scene
    
    File -> Save Scene as ... -> Sample04.unity
    
  4. プロジェクトにAssets/Materials/というFolerを作成し、その中にMatrialを4個作成します。
  5. Material の 名前 と Albedo を変更します。

    NameAlbedo
    RGBA
    Red25500255
    Green02550255
    Blue00255255
    Ground2141640255






  6. Hierarchy に Cyinder を3本作成して下さい。 それぞれの名前を変更し、Transform と Material を設定して下さい。
  7. 上のメニュー -> GameObject -> 3D Object -> Cylinder
    NamePositionRotationScaleMaterial
    XYZXYZXYZ
    X-axis 000 0090 0.1100.1 Red
    Y-axis 000 000 0.1100.1 Green
    Z-axis 000 9000 0.1100.1 Blue



  8. Hierarchy に Plane を配置して下さい。 名前を Ground に変更し、Transform とMaterialを設定します。
  9. 上のメニュー -> GameObject -> 3D Object -> Plane
    NamePositionRotationScaleMaterial
    XYZXYZXYZ
    Ground 000 000 555 Ground



  10. Hierarchy に Sphere を配置して下さい。 名前を Marker に変更し、Transform を設定して下さい。Materialはデフォルトのままの白色としておきましょう。
  11. 上のメニュー -> GameObject -> 3D Object -> Sphere
    NamePositionRotationScaleMaterial
    XYZXYZXYZ
    Marker 00.10 000 10.11 White (Default-Material)



  12. ProjectのAssets/Scripts/の下に C# のスクリプトを生成します。
  13. 上部のメニューから「Assets」-> 「Create」 -> 「C# Script」 -> ファイル名は Sample04

    Sample04.cs
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System;
    
    public class Sample04 : MonoBehaviour {
      public GameObject target;
      public float radius = 2.0f;
      NtUnity.Kinect nt;
      void Start () {
        nt = new NtUnity.Kinect();
      }
      void Update () {
        nt.setAudio(false);
        if (nt.beamAngleConfidence < 0.5) return;
        double theta = nt.beamAngle;
        double x = radius * Math.Sin(theta);
        float y = target.transform.position.y; 
        double z = radius * (-Math.Cos(theta));
        target.transform.position = new Vector3((float)x,y,(float)z);
      }
    }
    
  14. Hierarchy に Empty Object を配置して、名前を GameController に変更します。 Sample04.cs をコンポーネントとして付加して、その Target 項目に Hierarchy 中の Marker を設定します。
  15. 上のメニューから -> GameObject -> Create Empty
    









  16. Hierarchy で Main Camera を選択して Transform の Position を (x,y,z)=(0,1,-3), Rotation (x,y,z) = (20, 0, 0) に変更します。
  17. 実行すると、原点とMarker を結ぶ線上に音源があるようにMarkerが移動します。
  18. Runtime Video UnityDLL02.mp4



  19. Unity のサンプルプロジェクトはこちら UnityDLL04.zip
  20. ちなみに、このWebページの先頭の動画は、Sample04.cs の Update() 関数の先頭に次の4行を追加したものです。 プライバシーを考慮して骨格認識および顔認識をさせて顔を非表示にしています。
  21.      nt.setRGB();
         nt.setSkeleton();
         nt.setFace();
         nt.imshowBlack();
    


http://nw.tsuda.ac.jp/