增强虚拟现实与Rift开发环境设置
1. 增强虚拟现实中的数据转换
在增强虚拟现实的过程中,将Leap的旋转信息用Rift坐标表示的矩阵构建是一个关键操作。以下是构建该矩阵的代码:
glm::vec3 x = leapToRift(mat.transformDirection(Leap::Vector(1, 0, 0))); glm::vec3 y = leapToRift(mat.transformDirection(Leap::Vector(0, 1, 0))); glm::vec3 z = leapToRift(mat.transformDirection(Leap::Vector(0, 0, 1))); // Resulting 3x3 matrix: glm::mat3x3(x, y, z))不过,这里有一个有趣的问题。Leap似乎对左手帧采用左手坐标系,而对右手帧采用右手坐标系。为了补偿这一点,在构建描述每个手指骨骼方向的Rift空间矩阵时,我们需要对Leap源坐标系的X轴取反。因此,将上述代码的第一行修改为:
glm::vec3 x = leapToRift(mat.transformDirection( Leap::Vector(isLeft ? -1 : 1, 0, 0)));这样可以确保所有的Rift空间矩阵具有相同的手性。
此外,还有两个辅助方法:
glm::vec3