OGRE的Bone与Kinect的Bone

1. Ogre::Bone的坐标系统,其中的各种scale, position和orientation的使用及含义。

在Ogre::Bone中有很多的position和orientation,与position相关的有普通的position, DerivedPosition和InitialPosition。与orientation相关的有普通的orientation, DerivedOrientation和InitialOrientation。其中普通的position和orientation, InitialPosition和InitialOrientation,都是相对父节点坐标系,普通的与当前的Pose一下,Initial*的与初始的bindingPose一样,如图1所示在世界坐标系下用此方法画出的骨骼情况(错误),未建立骨骼层次。而DerivedPosition和DerivedOrientation则是经常层层父节点坐标系变换而来的,是相对世界坐标系,如图2所示在世界坐标系下画出的相应的骨骼情况(正确),未建立骨骼层次。对于_getFullTransform还未弄明白(初步猜测为带旋转和平移变换的局部坐标系)。

OGRE的Bone与Kinect的Bone_第1张图片

图1 普通的Pose世界坐标系下,未建立骨骼层次

OGRE的Bone与Kinect的Bone_第2张图片

图2 DerivedPose世界坐标系下,未建立骨骼层次(正确)


2. Kinect::Bone的position与orientation

OGRE的Bone与Kinect的Bone_第3张图片

图3. Kinect设备坐标与人体坐标关系

KinectSDK获取到的position是相对于kinect相机设备的坐标,是世界坐标与ogre的坐标系一致,如图3所示,而且仅有这一种Position,与Ogre中的derivedposition一致(_setDerivedPosition函数),ogre中的其他position(setPosition函数)都是相对于父节点而言的。对于kinect的orientation,kinectSDK对其进行了坐标轴的旋转,如图3中的hip center的orientation,并规定骨骼的方向为+Y,人体面向为+Z,X轴随之旋转,如图4所示。Kinect中获取的orientation可以分为两种:absoluteOrientation和hierarchyOrientation,absolute当然就是世界坐标系下的相当于Ogre中_setDerivedOrientation, hierarchyOrientation当然就是相对父节点的坐标系而言的,相当于Ogre中setOrientation.

OGRE的Bone与Kinect的Bone_第4张图片

图4 Kinect获取的骨骼Orientation层次图

 

辉辉              

(Fighting Bull Studio)



你可能感兴趣的:(OGRE的Bone与Kinect的Bone)