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还未弄明白(初步猜测为带旋转和平移变换的局部座标系)。
图1 普通的Pose世界座标系下,未建立骨骼层次
图2 DerivedPose世界座标系下,未建立骨骼层次(正确)
2. Kinect::Bone的position与orientation
图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.
图4 Kinect获取的骨骼Orientation层次图
辉辉
(Fighting Bull Studio)