背景
我在我的移动设备上运行VTK KiwiViewer源,我用它来制作虚拟现实场景,使用点云,用户的手机充当VR护目镜。
我从attitude获得CMDeviceMotion,它为x、y和z轴提供了欧拉角 (分别是俯仰、滚动和偏航)。
我试图在没有利用Cardboard SDK的情况下获得Google的体验。原因是因为Kiwi已经导入了我测试所需的所有型号。
场景
猕猴桃使用基于XYZ坐标系统的相机位置和焦点。以下是您必须使用的三个对象来定位VR视图:
现在,我总是把相机的位置放在0,0,0上。我使用sin/cos与欧拉安格斯* 10放置焦点 10单位远离相机。设置摄像机位置和焦点位置会自动将摄像机设置为一个可用的正确值。
设置焦点
x = -(sin(roll) * cos(pitch)) * 10;
y = cos(roll) * sin(pitch) * 10;
z = sin(yaw);
setCameraFocalPoint(x, y, z);问题
我目前的设置正常,但它有一些令人讨厌的怪癖。我如何调整我的转换,以获得更坚实的虚拟现实体验?
发布于 2016-06-07 10:02:46
您需要弄清楚,欧拉角是用来做什么的(X * Y * Z很常见,但是您的SDK可能会使用另一种)。然后,查找按旋转矩阵。您的视图方向将是这个矩阵的最后一列(如果您使用右手坐标系,则是它的逆)。向上的方向是第二列。
如果SDK允许直接设置视图矩阵,则可以使用转置旋转矩阵(并添加第四行和第四列零和m44=1)。
https://stackoverflow.com/questions/37667241
复制相似问题