Matrix 了解eye.getEyeView()和eye.getPerspective矩阵
我了解Eye.getEyeView和Eye.getPerspective矩阵的作用,至少根据。第一个获取相机的位置并将其转换为当前眼睛的位置。这需要考虑头部跟踪和每个瞳孔的偏移。第二个只是给出了一个透视投影矩阵,它不依赖于头部跟踪,只依赖于每只眼睛的视野 我不明白的是每只眼睛视野的不同。我们的眼睛几乎是朝前的,所以它们应该是一样的吗?其实矩阵是很不一样的。让我们看一下,这些文件是使用SDK:中的BooRunHebug示例的变体登录到OnDRAWEYE方法中的。 左眼视图矩阵:Matrix 了解eye.getEyeView()和eye.getPerspective矩阵,matrix,google-cardboard,google-vr,daydream,google-vr-sdk,Matrix,Google Cardboard,Google Vr,Daydream,Google Vr Sdk,我了解Eye.getEyeView和Eye.getPerspective矩阵的作用,至少根据。第一个获取相机的位置并将其转换为当前眼睛的位置。这需要考虑头部跟踪和每个瞳孔的偏移。第二个只是给出了一个透视投影矩阵,它不依赖于头部跟踪,只依赖于每只眼睛的视野 我不明白的是每只眼睛视野的不同。我们的眼睛几乎是朝前的,所以它们应该是一样的吗?其实矩阵是很不一样的。让我们看一下,这些文件是使用SDK:中的BooRunHebug示例的变体登录到OnDRAWEYE方法中的。 左眼视图矩阵: 0.999383
0.99938333 & 0.013064715 & 0.03259317 & 0.0 \\
-0.022139862 & 0.95490175 & 0.2960955 & 0.0 \\
-0.02725487 & -0.2966345 & 0.9546021 & 0.0 \\
0.03028951 & -0.0033823675 & 0.10220718 & 1.0
0.99938333 & 0.013064715 & 0.03259317 & 0.0 \\
-0.022139862 & 0.95490175 & 0.2960955 & 0.0 \\
-0.02725487 & -0.2966345 & 0.9546021 & 0.0 \\
-0.03361049 & -0.0033823675 & 0.10220718 & 1.0
右眼视图矩阵:
0.99938333 & 0.013064715 & 0.03259317 & 0.0 \\
-0.022139862 & 0.95490175 & 0.2960955 & 0.0 \\
-0.02725487 & -0.2966345 & 0.9546021 & 0.0 \\
0.03028951 & -0.0033823675 & 0.10220718 & 1.0
0.99938333 & 0.013064715 & 0.03259317 & 0.0 \\
-0.022139862 & 0.95490175 & 0.2960955 & 0.0 \\
-0.02725487 & -0.2966345 & 0.9546021 & 0.0 \\
-0.03361049 & -0.0033823675 & 0.10220718 & 1.0
除了a_{41}相差约0.064外,这些值是相同的。单位是米,我猜这就是学生之间的距离?我可以理解为什么3x3方向矩阵是相同的。但是我不明白为什么第四行的另外两个不同的值,a{42}和a{43}没有区别。眼睛的位置在一个轴上没有区别!这不是偶然的,它在每一帧中都是常见的
现在让我们检查透视矩阵:
左透视矩阵:
0.8990804 & 0.0 & 0.0 & 0.0 \\
0.0 & 0.762166 & 0.0 & 0.0 \\
0.106264874 & 0.08848558 & -1.00002 & -1.0 \\
0.0 & 0.0 & -0.0200002 & 0.0
0.89908034 & 0.0 & 0.0 & 0.0 \\
0.0 & 0.762166 & 0.0 & 0.0 \\
-0.10626444 & 0.08848558 & -1.00002 & -1.0 \\
0.0 & 0.0 & -0.0200002 & 0.0
右透视矩阵:
0.8990804 & 0.0 & 0.0 & 0.0 \\
0.0 & 0.762166 & 0.0 & 0.0 \\
0.106264874 & 0.08848558 & -1.00002 & -1.0 \\
0.0 & 0.0 & -0.0200002 & 0.0
0.89908034 & 0.0 & 0.0 & 0.0 \\
0.0 & 0.762166 & 0.0 & 0.0 \\
-0.10626444 & 0.08848558 & -1.00002 & -1.0 \\
0.0 & 0.0 & -0.0200002 & 0.0
这些仅在a{31}中有所不同。我认为将单位应用于该值没有意义,但如果我错了,请纠正我。这似乎会将输出图像向左或向右移动约0.1。我希望这两个矩阵相等,并且在eyeView矩阵中考虑到差异。将两者更改为等于0会破坏三维效果
有人能告诉我发生了什么吗?视图矩阵在x轴上偏离了这个量是有道理的——这是白日梦中支持的标准瞳孔间距。请记住,视图矩阵变换视点周围的世界,因此视图中心位于原始位置,并根据Y向上的Z轴指向上/下,因此x轴上的运动是有意义的 如果您查看寻宝示例,当与头部视图矩阵相乘时,它们会考虑头部位置/旋转 至于投影矩阵,您通常希望您的眼睛正确地朝向焦点。该偏移执行该操作-它移动焦点,从而略微倾斜投影。这是一个偏心投影,眼睛外侧约45度,内侧约50度取决于设备 -汤姆