1 |
3
|
KTH
|
using UnityEngine;
|
2 |
|
|
using System.Collections;
|
3 |
|
|
using System.Collections.Generic;
|
4 |
|
|
|
5 |
|
|
public interface DepthSensorInterface
|
6 |
|
|
{
|
7 |
|
|
// returns the depth sensor platform
|
8 |
|
|
KinectInterop.DepthSensorPlatform GetSensorPlatform();
|
9 |
|
|
|
10 |
|
|
// initializes libraries and resources needed by this sensor interface
|
11 |
|
|
// returns true if the resources are successfully initialized, false otherwise
|
12 |
|
|
bool InitSensorInterface(bool bCopyLibs, ref bool bNeedRestart);
|
13 |
|
|
|
14 |
|
|
// releases the resources and libraries used by this interface
|
15 |
|
|
void FreeSensorInterface(bool bDeleteLibs);
|
16 |
|
|
|
17 |
|
|
// checks if there is available sensor on this interface
|
18 |
|
|
// returns true if there are available sensors on this interface, false otherwise
|
19 |
|
|
bool IsSensorAvailable();
|
20 |
|
|
|
21 |
|
|
// returns the number of available sensors, controlled by this interface
|
22 |
|
|
int GetSensorsCount();
|
23 |
|
|
|
24 |
|
|
// opens the default sensor and inits needed resources. returns new sensor-data object
|
25 |
|
|
KinectInterop.SensorData OpenDefaultSensor(KinectInterop.FrameSource dwFlags, float sensorAngle, bool bUseMultiSource);
|
26 |
|
|
|
27 |
|
|
// closes the sensor and frees used resources
|
28 |
|
|
void CloseSensor(KinectInterop.SensorData sensorData);
|
29 |
|
|
|
30 |
|
|
// this method is invoked periodically to update sensor data, if needed
|
31 |
|
|
// returns true if update is successful, false otherwise
|
32 |
|
|
bool UpdateSensorData(KinectInterop.SensorData sensorData);
|
33 |
|
|
|
34 |
|
|
// gets next multi source frame, if one is available
|
35 |
|
|
// returns true if there is a new multi-source frame, false otherwise
|
36 |
|
|
bool GetMultiSourceFrame(KinectInterop.SensorData sensorData);
|
37 |
|
|
|
38 |
|
|
// frees the resources taken by the last multi-source frame
|
39 |
|
|
void FreeMultiSourceFrame(KinectInterop.SensorData sensorData);
|
40 |
|
|
|
41 |
|
|
// polls for new body/skeleton frame. must fill in all needed body and joints' elements (tracking state and position)
|
42 |
|
|
// returns true if new body frame is available, false otherwise
|
43 |
|
|
bool PollBodyFrame(KinectInterop.SensorData sensorData, ref KinectInterop.BodyFrameData bodyFrame, ref Matrix4x4 kinectToWorld, bool bIgnoreJointZ);
|
44 |
|
|
|
45 |
|
|
// polls for new color frame data
|
46 |
|
|
// returns true if new color frame is available, false otherwise
|
47 |
|
|
bool PollColorFrame(KinectInterop.SensorData sensorData);
|
48 |
|
|
|
49 |
|
|
// polls for new depth and body index frame data
|
50 |
|
|
// returns true if new depth or body index frame is available, false otherwise
|
51 |
|
|
bool PollDepthFrame(KinectInterop.SensorData sensorData);
|
52 |
|
|
|
53 |
|
|
// polls for new infrared frame data
|
54 |
|
|
// returns true if new infrared frame is available, false otherwise
|
55 |
|
|
bool PollInfraredFrame(KinectInterop.SensorData sensorData);
|
56 |
|
|
|
57 |
|
|
// performs sensor-specific fixes of joint positions and orientations
|
58 |
|
|
void FixJointOrientations(KinectInterop.SensorData sensorData, ref KinectInterop.BodyData bodyData);
|
59 |
|
|
|
60 |
|
|
// checks if the given body is turned around or not
|
61 |
|
|
bool IsBodyTurned(ref KinectInterop.BodyData bodyData);
|
62 |
|
|
|
63 |
|
|
// returns depth frame coordinates for the given 3d space point
|
64 |
|
|
Vector2 MapSpacePointToDepthCoords(KinectInterop.SensorData sensorData, Vector3 spacePos);
|
65 |
|
|
|
66 |
|
|
// returns 3d Kinect-space coordinates for the given depth frame point
|
67 |
|
|
Vector3 MapDepthPointToSpaceCoords(KinectInterop.SensorData sensorData, Vector2 depthPos, ushort depthVal);
|
68 |
|
|
|
69 |
|
|
// estimates all space coordinates for the current depth frame
|
70 |
|
|
// returns true on success, false otherwise
|
71 |
|
|
bool MapDepthFrameToSpaceCoords (KinectInterop.SensorData sensorData, ref Vector3[] vSpaceCoords);
|
72 |
|
|
|
73 |
|
|
// returns color-space coordinates for the given depth point
|
74 |
|
|
Vector2 MapDepthPointToColorCoords(KinectInterop.SensorData sensorData, Vector2 depthPos, ushort depthVal);
|
75 |
|
|
|
76 |
|
|
// estimates all color-space coordinates for the current depth frame
|
77 |
|
|
// returns true on success, false otherwise
|
78 |
|
|
bool MapDepthFrameToColorCoords(KinectInterop.SensorData sensorData, ref Vector2[] vColorCoords);
|
79 |
|
|
|
80 |
|
|
// estimates all depth-space coordinates for the current color frame
|
81 |
|
|
// returns true on success, false otherwise
|
82 |
|
|
bool MapColorFrameToDepthCoords (KinectInterop.SensorData sensorData, ref Vector2[] vDepthCoords);
|
83 |
|
|
|
84 |
|
|
// returns the index of the given joint in joint's array
|
85 |
|
|
int GetJointIndex(KinectInterop.JointType joint);
|
86 |
|
|
|
87 |
|
|
// // returns the joint at given index
|
88 |
|
|
// KinectInterop.JointType GetJointAtIndex(int index);
|
89 |
|
|
|
90 |
|
|
// returns the parent joint of the given joint
|
91 |
|
|
KinectInterop.JointType GetParentJoint(KinectInterop.JointType joint);
|
92 |
|
|
|
93 |
|
|
// returns the next joint in the hierarchy, as to the given joint
|
94 |
|
|
KinectInterop.JointType GetNextJoint(KinectInterop.JointType joint);
|
95 |
|
|
|
96 |
|
|
// returns true if the face tracking is supported by this interface, false otherwise
|
97 |
|
|
bool IsFaceTrackingAvailable(ref bool bNeedRestart);
|
98 |
|
|
|
99 |
|
|
// initializes libraries and resources needed by the face tracking subsystem
|
100 |
|
|
bool InitFaceTracking(bool bUseFaceModel, bool bDrawFaceRect);
|
101 |
|
|
|
102 |
|
|
// releases the resources and libraries used by the face tracking subsystem
|
103 |
|
|
void FinishFaceTracking();
|
104 |
|
|
|
105 |
|
|
// this method gets invoked periodically to update the face tracking state
|
106 |
|
|
// returns true if update is successful, false otherwise
|
107 |
|
|
bool UpdateFaceTracking();
|
108 |
|
|
|
109 |
|
|
// returns true if face tracking is initialized, false otherwise
|
110 |
|
|
bool IsFaceTrackingActive();
|
111 |
|
|
|
112 |
|
|
// returns true if face rectangle(s) must be drawn in color map, false otherwise
|
113 |
|
|
bool IsDrawFaceRect();
|
114 |
|
|
|
115 |
|
|
// returns true if the face of the specified user is being tracked at the moment, false otherwise
|
116 |
|
|
bool IsFaceTracked(long userId);
|
117 |
|
|
|
118 |
|
|
// gets the face rectangle in color coordinates. returns true on success, false otherwise
|
119 |
|
|
bool GetFaceRect(long userId, ref Rect faceRect);
|
120 |
|
|
|
121 |
|
|
// visualizes face tracker debug information
|
122 |
|
|
void VisualizeFaceTrackerOnColorTex(Texture2D texColor);
|
123 |
|
|
|
124 |
|
|
// gets the head position of the specified user. returns true on success, false otherwise
|
125 |
|
|
bool GetHeadPosition(long userId, ref Vector3 headPos);
|
126 |
|
|
|
127 |
|
|
// gets the head rotation of the specified user. returns true on success, false otherwise
|
128 |
|
|
bool GetHeadRotation(long userId, ref Quaternion headRot);
|
129 |
|
|
|
130 |
|
|
// gets the AU values for the specified user. returns true on success, false otherwise
|
131 |
|
|
bool GetAnimUnits(long userId, ref Dictionary<KinectInterop.FaceShapeAnimations, float> afAU);
|
132 |
|
|
|
133 |
|
|
// gets the SU values for the specified user. returns true on success, false otherwise
|
134 |
|
|
bool GetShapeUnits(long userId, ref Dictionary<KinectInterop.FaceShapeDeformations, float> afSU);
|
135 |
|
|
|
136 |
|
|
// returns the length of model's vertices array for the specified user
|
137 |
|
|
int GetFaceModelVerticesCount(long userId);
|
138 |
|
|
|
139 |
|
|
// gets the model vertices for the specified user. returns true on success, false otherwise
|
140 |
|
|
bool GetFaceModelVertices(long userId, ref Vector3[] avVertices);
|
141 |
|
|
|
142 |
|
|
// returns the length of model's triangles array
|
143 |
|
|
int GetFaceModelTrianglesCount();
|
144 |
|
|
|
145 |
|
|
// gets the model triangle indices. returns true on success, false otherwise
|
146 |
|
|
bool GetFaceModelTriangles(bool bMirrored, ref int[] avTriangles);
|
147 |
|
|
|
148 |
|
|
// returns true if the face tracking is supported by this interface, false otherwise
|
149 |
|
|
bool IsSpeechRecognitionAvailable(ref bool bNeedRestart);
|
150 |
|
|
|
151 |
|
|
// initializes libraries and resources needed by the speech recognition subsystem
|
152 |
|
|
int InitSpeechRecognition(string sRecoCriteria, bool bUseKinect, bool bAdaptationOff);
|
153 |
|
|
|
154 |
|
|
// releases the resources and libraries used by the speech recognition subsystem
|
155 |
|
|
void FinishSpeechRecognition();
|
156 |
|
|
|
157 |
|
|
// this method gets invoked periodically to update the speech recognition state
|
158 |
|
|
// returns true if update is successful, false otherwise
|
159 |
|
|
int UpdateSpeechRecognition();
|
160 |
|
|
|
161 |
|
|
// loads new grammar file with the specified language code
|
162 |
|
|
int LoadSpeechGrammar(string sFileName, short iLangCode, bool bDynamic);
|
163 |
|
|
|
164 |
|
|
// adds a phrase to the from-rule in dynamic grammar. if the to-rule is empty, this means end of the phrase recognition
|
165 |
|
|
int AddGrammarPhrase(string sFromRule, string sToRule, string sPhrase, bool bClearRulePhrases, bool bCommitGrammar);
|
166 |
|
|
|
167 |
|
|
// sets the required confidence of the recognized phrases (must be between 0.0f and 1.0f)
|
168 |
|
|
void SetSpeechConfidence(float fConfidence);
|
169 |
|
|
|
170 |
|
|
// returns true if speech start has been detected, false otherwise
|
171 |
|
|
bool IsSpeechStarted();
|
172 |
|
|
|
173 |
|
|
// returns true if speech end has been detected, false otherwise
|
174 |
|
|
bool IsSpeechEnded();
|
175 |
|
|
|
176 |
|
|
// returns true if a grammar phrase has been recognized, false otherwise
|
177 |
|
|
bool IsPhraseRecognized();
|
178 |
|
|
|
179 |
|
|
// returns the confidence of the currently recognized phrase, in range [0, 1]
|
180 |
|
|
float GetPhraseConfidence();
|
181 |
|
|
|
182 |
|
|
// returns the tag of the recognized grammar phrase, empty string if no phrase is recognized at the moment
|
183 |
|
|
string GetRecognizedPhraseTag();
|
184 |
|
|
|
185 |
|
|
// clears the currently recognized grammar phrase (prepares SR system for next phrase recognition)
|
186 |
|
|
void ClearRecognizedPhrase();
|
187 |
|
|
|
188 |
|
|
// returns true if the background removal is supported by this interface, false otherwise
|
189 |
|
|
bool IsBackgroundRemovalAvailable(ref bool bNeedRestart);
|
190 |
|
|
|
191 |
|
|
// initializes libraries and resources needed by the background removal subsystem
|
192 |
|
|
bool InitBackgroundRemoval(KinectInterop.SensorData sensorData, bool isHiResPrefered);
|
193 |
|
|
|
194 |
|
|
// releases the resources and libraries used by the background removal subsystem
|
195 |
|
|
void FinishBackgroundRemoval(KinectInterop.SensorData sensorData);
|
196 |
|
|
|
197 |
|
|
// this method gets invoked periodically to update the background removal
|
198 |
|
|
// returns true if update is successful, false otherwise
|
199 |
|
|
bool UpdateBackgroundRemoval(KinectInterop.SensorData sensorData, bool isHiResPrefered, Color32 defaultColor, bool bAlphaTexOnly);
|
200 |
|
|
|
201 |
|
|
// returns true if background removal is initialized, false otherwise
|
202 |
|
|
bool IsBackgroundRemovalActive();
|
203 |
|
|
|
204 |
|
|
// returns true if BR-manager supports high resolution background removal
|
205 |
|
|
bool IsBRHiResSupported();
|
206 |
|
|
|
207 |
|
|
// returns the rectange of the foreground frame
|
208 |
|
|
Rect GetForegroundFrameRect(KinectInterop.SensorData sensorData, bool isHiResPrefered);
|
209 |
|
|
|
210 |
|
|
// returns the length of the foreground frame in bytes
|
211 |
|
|
int GetForegroundFrameLength(KinectInterop.SensorData sensorData, bool isHiResPrefered);
|
212 |
|
|
|
213 |
|
|
// polls for new foreground frame data
|
214 |
|
|
// returns true if foreground frame is available, false otherwise
|
215 |
|
|
bool PollForegroundFrame(KinectInterop.SensorData sensorData, bool isHiResPrefered, Color32 defaultColor, bool bLimitedUsers, ICollection<int> alTrackedIndexes, ref byte[] foregroundImage);
|
216 |
|
|
|
217 |
|
|
} |