質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Kinect

Kinect(キネクト)はマイクロソフトから発売されたジェスチャー・音声認識によって 操作ができるデバイスです。

Q&A

解決済

2回答

1225閲覧

Unityのエラーにについて

nobitakun

総合スコア1

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Kinect

Kinect(キネクト)はマイクロソフトから発売されたジェスチャー・音声認識によって 操作ができるデバイスです。

0グッド

0クリップ

投稿2021/06/21 05:11

前提・実現したいこと

Kinect v2でUnityを連携させるため、研究を行っています。
以下のエラーメッセージが発生しました。
エラーを改善したいです。

発生している問題・エラーメッセージ

Assets/KinectView/Script/BodySourceManager.cs(57,13):error CS0103: The name '_CoordinateMapper' does not exist in the current context Assets/KinectView/Script/BodySourceManager.cs(59,33):error CS0103: The name '_BodyManager' does not exist in the current context Assets/KinectView/Script/BodySourceManager.cs(59,13):error CS0103: The name '_CoordinateMapper' does not exist in the current context

該当のソースコード

using UnityEngine; using System.Collections; using Windows.Kinect; public class BodySourceManager : MonoBehaviour { private KinectSensor _Sensor; private BodyFrameReader _Reader; private Body[] _Data = null; public Body[] GetData() { return _Data; } public KinectSensor Sensor { get { return _Sensor; } } void Start () { _Sensor = KinectSensor.GetDefault(); if (_Sensor != null) { _Reader = _Sensor.BodyFrameSource.OpenReader(); if (!_Sensor.IsOpen) { _Sensor.Open(); } } } void Update () { if (_Reader != null) { var frame = _Reader.AcquireLatestFrame(); if (frame != null) { if (_Data == null) { _Data = new Body[_Sensor.BodyFrameSource.BodyCount]; } frame.GetAndRefreshBodyData(_Data); frame.Dispose(); frame = null; } } if (_CoordinateMapper == null) { _CoordinateMapper = _BodyManager.Sensor.CoordinateMapper; } } void OnApplicationQuit() { if (_Reader != null) { _Reader.Dispose(); _Reader = null; } if (_Sensor != null) { if (_Sensor.IsOpen) { _Sensor.Close(); } _Sensor = null; } } }

試したこと

ネットでエラー情報を検索

補足情報(FW/ツールのバージョンなど)

Unity5.0.0を使用
参考資料
https://www.buildinsider.net/small/bookkinectv2/0635

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

参考先の

続いてUpdate()でCoordinateMapperの設定を行います。なお、BodyManagerのSensor(KinectSensorクラス)がpublicになっていないため、BodySourceManagerにプロパティを追加します。

C#

1 2void Update () 3{ 4... 5if ( _CoordinateMapper ==null ) { 6_CoordinateMapper = _BodyManager.Sensor.CoordinateMapper;

ですが、これはBodySourceManager にこれを書けという意味ではなく
ColorBodySourceView にこれを書いて
BodySourceManager にプロパティを追加しなさいということだと思います。


こういうことです。

ColorBodySourceViewスクリプトを開きコードを編集します。変数として、変換用のカメラ(ConvertCamera)、Kinectの座標変換オブジェクト(CoordinateMapper)そしてKinectのカラー画像の幅と高さの値を追加します。

C#

1public class ColorBodySourceView : MonoBehaviour 2{ 3 public Material BoneMaterial; 4 public GameObject BodySourceManager; 5 6 private Dictionary<ulong, GameObject> _Bodies = new Dictionary<ulong, GameObject>(); 7 private BodySourceManager _BodyManager; 8 9 public Camera ConvertCamera; 10 11 private Kinect.CoordinateMapper _CoordinateMapper; 12 13 private int _KinectWidth = 1920; 14 private int _KinectHeight = 1080; 15 ... 16}

 続いて(ColorBodySourceView内の)Update()でCoordinateMapperの設定を行います。

C#

1void Update () 2{ 3 ... 4 if ( _CoordinateMapper ==null ) { 5 _CoordinateMapper = _BodyManager.Sensor.CoordinateMapper; 6 }

なお、BodyManagerのSensor(KinectSensorクラス)がpublicになっていないため、BodySourceManagerにプロパティを追加します。
BodySourceManagerを開き、次のプロパティを追加します。

C#

1public KinectSensor Sensor 2{ 3 get 4 { 5 return _Sensor; 6 } 7}

投稿2021/06/21 05:49

編集2021/06/21 06:13
ozwk

総合スコア13553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobitakun

2021/06/21 06:06

回答ありがとうございます …は,既存のUpdateの中身の後ろに追加と判断し、Updateの中身は以下のようになっております。 === void Update () { if (_Reader != null) { var frame = _Reader.AcquireLatestFrame(); if (frame != null) { if (_Data == null) { _Data = new Body[_Sensor.BodyFrameSource.BodyCount]; } frame.GetAndRefreshBodyData(_Data); frame.Dispose(); frame = null; } } if (_CoordinateMapper == null) { _CoordinateMapper = _BodyManager.Sensor.CoordinateMapper; } } === 不勉強でプロパティの追加というのがよくわからないのですが、上記のやり方とは違うやり方なのでしょうか?
ozwk

2021/06/21 06:15

ColorBodySourceViewスクリプトを開きコードを編集してね、変数を追加してね(コード) 続いてUpdate()でCoordinateMapperの設定を行ってね。(コード) BodySourceManagerにプロパティを追加してね。 BodySourceManagerを開き、次のプロパティを追加してね(コード) という指示になっています。(回答編集しました)
guest

0

どれもそのキーワードが存在しないといってます。
それらはどこにあるんでしょうか

投稿2021/06/21 05:14

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobitakun

2021/06/21 05:38

https://www.buildinsider.net/small/bookkinectv2/0635 を参考に勧めており BodySourceManagerの中で === if (_CoordinateMapper == null) { _CoordinateMapper = _BodyManager.Sensor.CoordinateMapper; } === で使われております。 BodySourceManagerの中ではif文の条件の前に宣言がされていないのが怪しそうな感じですが、 参考サイトの中ではColorBodySourceViewの中で === private Kinect.CoordinateMapper _CoordinateMapper; === と書くよう指示されているので、そちらでは宣言はしております
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問