Skip to content

Commit f2f52b8

Browse files
author
Wouter Verweirder
committed
added skeleton smoothing option
1 parent bee0eb9 commit f2f52b8

File tree

5 files changed

+79
-4
lines changed

5 files changed

+79
-4
lines changed

src/com/as3nui/nativeExtensions/air/kinect/Kinect.as

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,7 @@ package com.as3nui.nativeExtensions.air.kinect {
357357
initPointCloudSettings();
358358
initUserSettings();
359359
initUserMaskSettings();
360+
initHandSettings();
360361
}
361362

362363
/** @private */
@@ -367,6 +368,7 @@ package com.as3nui.nativeExtensions.air.kinect {
367368
disposePointCloudSettings();
368369
disposeUserSettings();
369370
disposeUserMaskSettings();
371+
disposeHandSettings();
370372
}
371373

372374
//----------------------------------
@@ -493,7 +495,7 @@ package com.as3nui.nativeExtensions.air.kinect {
493495
contextBridge.setUserEnabled(_nr, _settings.userEnabled);
494496
contextBridge.setUserMode(_nr, _settings.userMirrored);
495497
contextBridge.setSkeletonEnabled(_nr, _settings.skeletonEnabled);
496-
contextBridge.setSkeletonMode(_nr, _settings.skeletonMirrored, _settings.seatedSkeletonEnabled, _settings.chooseSkeletonsEnabled);
498+
contextBridge.setSkeletonMode(_nr, _settings.skeletonMirrored, _settings.seatedSkeletonEnabled, _settings.chooseSkeletonsEnabled, _settings.skeletonSmoothing);
497499
}
498500
/** @private */
499501
private function disposeUserSettings():void {
@@ -525,6 +527,22 @@ package com.as3nui.nativeExtensions.air.kinect {
525527
private function disposeUserMaskSettings():void {
526528
userMaskByteArrays = null;
527529
}
530+
531+
//----------------------------------
532+
// User/Skeleton Handlers
533+
//----------------------------------
534+
/** @private */
535+
protected function initHandSettings():void {
536+
applyHandSettings()
537+
}
538+
/** @private */
539+
protected function applyHandSettings():void {
540+
contextBridge.setHandTrackingEnabled(_nr, _settings.handTrackingEnabled);
541+
contextBridge.setHandTrackingMode(_nr, _settings.handTrackingMirrored);
542+
}
543+
/** @private */
544+
private function disposeHandSettings():void {
545+
}
528546

529547
// -------------------------------------------
530548
// Real Time Adjustable _settings features
@@ -560,6 +578,14 @@ package com.as3nui.nativeExtensions.air.kinect {
560578
applyUserSettings();
561579
}
562580

581+
/**
582+
* Change the skeleton smoothing factor while the device is running
583+
*/
584+
public function setSkeletonSmoothing(value:Number):void {
585+
_settings.skeletonSmoothing = value;
586+
applyUserSettings();
587+
}
588+
563589
/**
564590
* Change the near mode while the device is running
565591
*/

src/com/as3nui/nativeExtensions/air/kinect/KinectSettings.as

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ package com.as3nui.nativeExtensions.air.kinect {
1919

2020
private var _nearModeEnabled:Boolean = false;
2121

22+
private var _handTrackingEnabled:Boolean = false;
23+
private var _handTrackingMirrored:Boolean = true;
24+
2225
private var _infraredEnabled:Boolean = false;
2326
private var _infraredResolution:Point = CameraResolution.RESOLUTION_320_240;
2427
private var _infraredMirrored:Boolean = true;
@@ -33,6 +36,7 @@ package com.as3nui.nativeExtensions.air.kinect {
3336
private var _skeletonMirrored:Boolean = true;
3437
private var _seatedSkeletonEnabled:Boolean = false;
3538
private var _chooseSkeletonsEnabled:Boolean = false;
39+
private var _skeletonSmoothing:Number = 0.5;
3640

3741
private var _pointCloudEnabled:Boolean = false;
3842
private var _pointCloudResolution:Point = CameraResolution.RESOLUTION_320_240;
@@ -66,6 +70,10 @@ package com.as3nui.nativeExtensions.air.kinect {
6670
_skeletonMirrored = otherKinectSettings.skeletonMirrored;
6771
_seatedSkeletonEnabled = otherKinectSettings.seatedSkeletonEnabled;
6872
_chooseSkeletonsEnabled = otherKinectSettings.chooseSkeletonsEnabled;
73+
_skeletonSmoothing = otherKinectSettings.skeletonSmoothing;
74+
75+
_handTrackingEnabled = otherKinectSettings.handTrackingEnabled;
76+
_handTrackingMirrored = otherKinectSettings.handTrackingMirrored;
6977

7078
_pointCloudEnabled = otherKinectSettings.pointCloudEnabled;
7179
_pointCloudResolution.copyFrom(otherKinectSettings.pointCloudResolution);
@@ -142,6 +150,22 @@ package com.as3nui.nativeExtensions.air.kinect {
142150
_depthMirrored = value;
143151
}
144152

153+
public function get handTrackingEnabled():Boolean {
154+
return _handTrackingEnabled;
155+
}
156+
157+
public function set handTrackingEnabled(value:Boolean):void {
158+
_handTrackingEnabled = value;
159+
}
160+
161+
public function get handTrackingMirrored():Boolean {
162+
return _handTrackingMirrored;
163+
}
164+
165+
public function set handTrackingMirrored(value:Boolean):void {
166+
_handTrackingMirrored = value;
167+
}
168+
145169
public function get infraredEnabled():Boolean {
146170
return _infraredEnabled;
147171
}
@@ -237,6 +261,14 @@ package com.as3nui.nativeExtensions.air.kinect {
237261
public function set chooseSkeletonsEnabled(value:Boolean):void {
238262
_chooseSkeletonsEnabled = value;
239263
}
264+
265+
public function get skeletonSmoothing():Number {
266+
return _skeletonSmoothing;
267+
}
268+
269+
public function set skeletonSmoothing(value:Number):void {
270+
_skeletonSmoothing = value;
271+
}
240272

241273
public function get pointCloudEnabled():Boolean {
242274
return _pointCloudEnabled;

src/com/as3nui/nativeExtensions/air/kinect/bridge/ExtensionContextBridge.as

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ package com.as3nui.nativeExtensions.air.kinect.bridge
7474
/** @private */
7575
protected static const EXTENSION_REQUEST_SET_NEAR_MODE_ENABLED:String = "setNearModeEnabled";
7676
/** @private */
77+
protected static const EXTENSION_REQUEST_SET_HAND_TRACKING_MODE:String = "setHandTrackingMode";
78+
/** @private */
79+
protected static const EXTENSION_REQUEST_SET_HAND_TRACKING_ENABLED:String = "setHandTrackingEnabled";
80+
/** @private */
7781
protected static const EXTENSION_REQUEST_SET_RGB_MODE:String = "setRGBMode";
7882
/** @private */
7983
protected static const EXTENSION_REQUEST_SET_RGB_ENABLED:String = "setRGBEnabled";
@@ -182,6 +186,16 @@ package com.as3nui.nativeExtensions.air.kinect.bridge
182186
context.call(EXTENSION_REQUEST_SET_NEAR_MODE_ENABLED, nr, enableNearMode);
183187
}
184188

189+
public function setHandTrackingEnabled(nr:uint, enabled:Boolean):void
190+
{
191+
context.call(EXTENSION_REQUEST_SET_HAND_TRACKING_ENABLED, nr, enabled);
192+
}
193+
194+
public function setHandTrackingMode(nr:uint, mirrored:Boolean):void
195+
{
196+
context.call(EXTENSION_REQUEST_SET_HAND_TRACKING_MODE, nr, mirrored);
197+
}
198+
185199
public function setPointcloudEnabled(nr:uint, enabled:Boolean):void
186200
{
187201
context.call(EXTENSION_REQUEST_SET_POINTCLOUD_ENABLED, nr, enabled);
@@ -212,9 +226,9 @@ package com.as3nui.nativeExtensions.air.kinect.bridge
212226
context.call(EXTENSION_REQUEST_SET_SKELETON_ENABLED, nr, enabled);
213227
}
214228

215-
public function setSkeletonMode(nr:uint, mirrored:Boolean, seatedSkeletonEnabled:Boolean, chooseSkeletons:Boolean):void
229+
public function setSkeletonMode(nr:uint, mirrored:Boolean, seatedSkeletonEnabled:Boolean, chooseSkeletons:Boolean, smoothing:Number):void
216230
{
217-
context.call(EXTENSION_REQUEST_SET_SKELETON_MODE, nr, mirrored, seatedSkeletonEnabled, chooseSkeletons);
231+
context.call(EXTENSION_REQUEST_SET_SKELETON_MODE, nr, mirrored, seatedSkeletonEnabled, chooseSkeletons, smoothing);
218232
}
219233

220234
public function chooseSkeletons(nr:uint, trackingIds:Vector.<uint>):void

src/com/as3nui/nativeExtensions/air/kinect/bridge/IContextBridge.as

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ package com.as3nui.nativeExtensions.air.kinect.bridge
2525
function setDepthMode(nr:uint, width:uint, height:uint, mirrored:Boolean):void;
2626
function setDepthShowUserColors(nr:uint, showUserColors:Boolean):void;
2727
function setNearModeEnabled(nr:uint, enableNearMode:Boolean):void;
28+
function setHandTrackingEnabled(nr:uint, enabled:Boolean):void;
29+
function setHandTrackingMode(nr:uint, mirrored:Boolean):void;
2830
function setPointcloudEnabled(nr:uint, enabled:Boolean):void;
2931
function setPointcloudMode(nr:uint, width:uint, height:uint, mirrored:Boolean, density:uint, includeRgb:Boolean):void;
3032
function setPointCloudRegions(nr:uint, pointCloudRegions:Vector.<PointCloudRegion>):void;
3133
function setUserEnabled(nr:uint, enabled:Boolean):void;
3234
function setUserMode(nr:uint, mirrored:Boolean):void;
3335
function setSkeletonEnabled(nr:uint, enabled:Boolean):void;
34-
function setSkeletonMode(nr:uint, mirrored:Boolean, seatedSkeletonEnabled:Boolean, chooseSkeletons:Boolean):void;
36+
function setSkeletonMode(nr:uint, mirrored:Boolean, seatedSkeletonEnabled:Boolean, chooseSkeletons:Boolean, smoothing:Number):void;
3537
function chooseSkeletons(nr:uint, trackingIds:Vector.<uint>):void;
3638
function setUserMaskEnabled(nr:uint, enabled:Boolean):void;
3739
function setUserMaskMode(nr:uint, width:uint, height:uint, mirrored:Boolean):void;

src/com/as3nui/nativeExtensions/air/kinect/data/DeviceCapabilities.as

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ package com.as3nui.nativeExtensions.air.kinect.data {
3434
private var _hasNearModeSupport:Boolean = false;
3535
private var _hasSeatedSkeletonSupport:Boolean = false;
3636
private var _hasChooseSkeletonsSupport:Boolean = false;
37+
private var _hasHandTrackingSupport:Boolean = false;
3738

3839
private var _maxSensors:uint = 0;
3940

0 commit comments

Comments
 (0)