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

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

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

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Kinect

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

Q&A

解決済

1回答

2694閲覧

unityにて、Kinect関連の変数初期化ができない。

taka_pikopiko

総合スコア7

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Kinect

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

0グッド

0クリップ

投稿2017/01/13 10:53

###前提・実現したいこと
unityでkinect v2を使用し、顔のメッシュを取得して表示するプログラムを作っています。
変数の初期化を行う際に以下のエラーが発生しました。

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

エラーメッセージ Assets/Script/DynamicCreateMesh_test.cs(23,46): error CS0122: `Microsoft.Kinect.Face.HighDefinitionFaceFrameSource.HighDefinitionFaceFrameSource(System.IntPtr)' is inaccessible due to its protection level Assets/Script/DynamicCreateMesh_test.cs(26,33): error CS1729: The type `Microsoft.Kinect.Face.FaceModel' does not contain a constructor that takes `0' arguments Assets/Script/DynamicCreateMesh_test.cs(27,37): error CS1729: The type `Microsoft.Kinect.Face.FaceAlignment' does not contain a constructor that takes `0' arguments

###該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using Windows.Kinect; 5using Microsoft.Kinect.Face; 6 7[RequireComponent(typeof(MeshRenderer))] 8[RequireComponent(typeof(MeshFilter))] 9public class DynamicCreateMesh_test: MonoBehaviour 10{ 11 //create mesh dynamically 12 private KinectSensor kinect; 13 14 private FaceAlignment currentFaceAlignment = null; 15 private FaceModel currentFaceModel = null; 16 private HighDefinitionFaceFrameSource highDefinitionFaceFrameSource = null; 17 private HighDefinitionFaceFrameReader highDefinitionFaceFrameReader = null; 18 19 private void InitializeHDFace() 20 { 21 this.kinect = KinectSensor.GetDefault(); 22 23 this.highDefinitionFaceFrameSource = new HighDefinitionFaceFrameSource(this.kinect); 24 this.highDefinitionFaceFrameReader = this.highDefinitionFaceFrameSource.OpenReader(); 25 26 this.currentFaceModel = new FaceModel(); 27 this.currentFaceAlignment = new FaceAlignment(); 28 29 this.InitializeMesh(); 30 31 this.kinect.Open(); 32 } 33 34 private void InitializeMesh() 35 { 36 var vertices = this.currentFaceModel.CalculateVerticesForAlignment(this.currentFaceAlignment); 37 Debug.Log(vertices); 38 } 39 40 private void Start() 41 { 42 InitializeHDFace(); 43 } 44} 45

###補足情報(言語/FW/ツール等のバージョンなど)
unity5.5
kinect sdk 2.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

■エラーメッセージ1行目
this.highDefinitionFaceFrameSource = new HighDefinitionFaceFrameSource(this.kinect);
恐らくここが原因です。
HighDefinitionFaceFrameSourceは恐らくprivateなクラスになっており、new出来ないものと思います。
(それか「using Microsoft.Kinect.Face.HighDefinitionFaceFrameSource;」が必要かもしれません)

■エラーメッセージ2行目、3行目
this.currentFaceModel = new FaceModel();
this.currentFaceAlignment = new FaceAlignment();
newしていますが、実際は()の中に引数を入れる必要があるようです。
ドキュメントや他で使用している場所を見て、正しい引数を入れてみてください。

投稿2017/01/13 11:33

sakura_hana

総合スコア11425

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

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

taka_pikopiko

2017/01/16 01:10

いろいろ調べてみたところ、どうやらこれらの変数の初期化にはnewではなく、createを使用する必要があるようです。 this.highDefinitionFaceFrameSource = HighDefinitionFaceFrameSource.Create(this.kinect); this.currentFaceModel = FaceModel.Create(); this.currentFaceAlignment = FaceAlignment.Create(); このように変数初期化をしたところ、うまく動きました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問