[英]Three.js - Find the current LookAt of a camera?
威爾特的答案非常有見地,但並不完全正確。 該代碼返回指向相機指向相同方向的向量。 那是一個很好的開始!
但是,除非攝影機位於原點(0,0,0)(或正好位於將原點連接到旋轉矢量點的線段上,而不經過該點,以使該點位於攝影機的后面),否則攝影機不會不會在這一點上。 顯然-只是常識-相機的位置也會影響正在觀察的點。 考慮一下。 相機方法lookAt()
在3D空間中查看一個點,而不管相機在哪里。 因此,要弄清楚相機在看什么,您需要通過調用以下命令來調整相機的位置:
vec.add( camera.position );
還值得一提的是,攝像頭不是在注視單個點,而是向下看無數個點的線,每個點與攝像頭的距離不同。 上面來自Wilt的代碼返回了一個長度恰好為一個單位的向量,因為將四元數應用於歸一化的z軸向量(0,0,-1)會返回另一個歸一化的向量(方向不同)。 要計算距相機任意距離x
視點,請使用:
(new THREE.Vector3( 0, 0, -x )).applyQuaternion( camera.quaternion ).add( camera.position );
這會沿着z軸在距原點x
的距離處獲取一個點,將其旋轉到相機的方向,然后通過添加相機的位置來創建“世界點”。 我們需要一個“世界點”(而不是“相對於相機點”),因為camera.lookAt()
還將“世界點”作為參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.