Kinnect與KinectSettings:
使用Kinect來取得裝置的實體:
_kinect = Kinect.getDevice();然後用這個實體監聽相關事件,來取得影像或數值資料,然後去做該做的事:
_kinect.addEventListener(DeviceEvent.STARTED, onDeviceStarted); _kinect.addEventListener(DeviceEvent.STOPPED, onDeviceStopped); _kinect.addEventListener(UserEvent.USERS_WITH_SKELETON_ADDED, onUserWithSkeletonAdded); _kinect.addEventListener(UserEvent.USERS_WITH_SKELETON_REMOVED, onUserWithSkeletonRemoved); _kinect.addEventListener(CameraImageEvent.RGB_IMAGE_UPDATE, onRGBImageUpdate);KinectSettings則是用來做一些設定,例如要不要接收RBG影像,要不要鏡射,影像解析度等等:
var settings:KinectSettings = new KinectSettings(); settings.skeletonEnabled = true; settings.rgbEnabled = true;然後執行以下這行來開啟裝置:
_kinect.start(settings);最後當應用程式要關閉的時候,除了移除監聽程式,要記得執行這行來關閉裝置:
_kinect.dispose();
Kinnect有兩個子類別:MSKinect與OpenNIKinect,分別是針對MS Kinect SDK與OPENNI新增獨有的功能。一般狀況使用Kinnect就可以了。後面有幾個類別也是類似的狀況。
User:
Kinect可以辨識出2個帶有骨架資訊的User,以及另外4個只有質心座標的User。可以使用Kinect監聽UserEvent.USERS_ADDED或UserEvent.USERS_WITH_SKELETON_ADDED來取得目前偵測到的User參照。
SkeletonJoint:
骨架關節的資訊,帶有關節名字跟座標。可以從帶有骨架資訊User的skeletonJoints取得全部的關節,或使用getJointByName()方法取得指定名字的關節。有效的關節名稱則是定義在SkeletonJoint的一堆constant,例如HEAD或LEFT_HAND。
Position:
座標類別,在Kinect的座標有好幾個,在彩色影像上的2D座標,在深度影像上的2D座標,在真實世界的3D座標。分別在文件上可以看到。以Relative結尾的2D座標是以0~1來表示,而3D座標worldRelative則只是 world直接除以1000(也就是單位從mm變成m)。User的point是質心座標,SkeletonJoint的point則是各關節的座標。
SkeletonBone與Orientation:
用來描述骨架3D旋轉資訊的兩個類別。一個SkeletonBone有自己的name,可用值定義在SkeletonBone的constant,還有起始與結束的SkeletonJoint的名稱,分別是startJointName與endJointName,如果它接在另一個SkeletonBone上,則會有parentBoneName。orientation則是一個Orientation類別實體,它的absoluteOrientationMatrix是一個Matrix3D,裡面就有3D旋轉的資訊。
主要就這幾個,當然還有幾個Event,以及裡面提供的資訊。基本上API設計很直覺,翻完文件,看一下官方提供的範例,應該就知道怎麼用了。
上一篇:Some extensions for AIRKinect(0)準備事項
下一篇:Some extensions for AIRKinect(2)KinctSprite
沒有留言:
張貼留言