Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 了解eye.getEyeView()和eye.getPerspective矩阵_Matrix_Google Cardboard_Google Vr_Daydream_Google Vr Sdk - Fatal编程技术网

Matrix 了解eye.getEyeView()和eye.getPerspective矩阵

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

我了解Eye.getEyeView和Eye.getPerspective矩阵的作用,至少根据。第一个获取相机的位置并将其转换为当前眼睛的位置。这需要考虑头部跟踪和每个瞳孔的偏移。第二个只是给出了一个透视投影矩阵,它不依赖于头部跟踪,只依赖于每只眼睛的视野

我不明白的是每只眼睛视野的不同。我们的眼睛几乎是朝前的,所以它们应该是一样的吗?其实矩阵是很不一样的。让我们看一下,这些文件是使用SDK:

中的BooRunHebug示例的变体登录到OnDRAWEYE方法中的。 左眼视图矩阵:

 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度取决于设备

-汤姆