簡體   English   中英

在 A-Frame 中:如何獲得 VR 攝像頭

[英]In A-Frame: How do I get the VR camera

在這個例子中:
https://glitch.com/~query-aframe-cameras我已經注冊了一個組件,它向用戶正在看的方向發射一個射彈(稍微提升了高度)

SpacebarScreen Tap啟動 - 一定要看着地平線上方!

它在移動 VR(立體相機)模式下失敗:
彈丸繼續發射,但從單聲道的默認方向,而不是立體相機

我正在使用:
var cam = document.querySelector('a-scene').camera.el.object3D; var camVec = new THREE.Vector3(); var camDir = cam.getWorldDirection(camVec); 獲取相機信息並將彈丸吐回

查詢:我如何獲得立體相機信息

問題將是由於 THREE.js 中的這個錯誤。

https://github.com/mrdoob/three.js/issues/18448

按照記錄的解決方法,此處的代碼可在我的 Quest 2 上使用正確的方向跟蹤。

https://cuddly-endurable-soap.glitch.me

(這里還有一些其他變化:為了在我的 VR 耳機上測試這個,我還必須升級到 A-Frame 1.1.0,並使代碼在計時器上發射球,因為我沒有任何鍵使用時按!不過,這些都不足以解決問題)。

此代碼將根據您的需要設置 CamDir。

var camQ = new THREE.Quaternion();
cam.updateMatrixWorld();
camQ.setFromRotationMatrix(cam.matrixWorld);
var camDir = new THREE.Vector3(0, 0, 1);
camDir.applyQuaternion(camQ);

下面的代碼也有效(並且效率更高),但不太容易理解。

var camDir = new THREE.Vector3();
var e = cam.matrixWorld.elements;
camDir.set(e[ 8 ], e[ 9 ], e[ 10 ]).normalize();

我從這里拿起它: https : //lace-fern-ghost.glitch.me/

我從這里找到了一個鏈接: https : //github.com/aframevr/aframe/issues/4412

(但我找不到任何參考資料來解釋為什么這些組件 matrixWorld.elements 是在這里使用以獲得方向的正確組件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM