我理解Eye.getEyeView和Eye.getPerspective矩陣的角色,至少根據the documentation。第一個取得攝像頭的位置並將其轉換到當前眼睛的位置。這考慮到頭部跟蹤和每個學生的偏移量。第二個只是給出了一個透視投影矩陣,這不依賴於頭部跟蹤,而僅僅在每隻眼睛的視場上。瞭解eye.getEyeView()和eye.getPerspective矩陣
我不明白的是每隻眼睛的視野差異。我們的眼睛大致面向前方,他們應該是一樣的嗎?那麼矩陣實際上是非常不同的。讓我們一起來看看,這些都是在onDrawEye方法,使用SDK中TreasureHunt例子的變體記錄:
左EyeView矩陣:
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
右EyeView矩陣:
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.064的a_ {41}之外是相同的。單位是米我猜這是學生之間的距離?我可以看到爲什麼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
這些只有在A_ {31}不同。我認爲將單位應用於該值是沒有意義的(但如果我錯了,請糾正我)。這看起來會將輸出圖像左移或右移約0.1。我期望這兩個矩陣是相等的,差別要在eyeView矩陣中考慮。將兩者都改爲等於0會破壞3D效果。
任何人都可以啓發我什麼是怎麼回事?