[英]How to rotate object with camera three.js
嗨,我正在嘗試讓一個卑鄙的人跟隨相機,這樣我就可以達到步槍取景器的效果。 我正在使用 OrbitControl。 當我檢查 camera.rotation.y 時,它只顯示范圍是從 -PI/2 到 PI/2,而我可以將相機旋轉 360 度。 我無法理解它,請幫忙!
到目前為止我到達那里(這只是我代碼的一部分):
pivot = new THREE.Object3D();
pivot.add(viewfinder);//adding viewfinder as a child of pivot
scene.add( pivot );
后來
pivot.rotation.y = camera.rotation.y;
這允許旋轉我的取景器,但由於某種原因,它正好被 Pi/2 移動,所以我從當前相機 position 中扣除它,我有這個:
pivot.rotation.y = (camera.rotation.y - (Math.PI/2)) ;
這讓我可以用相機旋轉取景器,但只能在 180 度的范圍內旋轉。 如何將其旋轉 360 度? 請幫我。 他你。
我猜您想讓網格始終面向您的相機,對嗎? 您可以使用相機矩陣來設置網格旋轉, mesh.rotation.setRotationFromMatrix(camera.matrix)
,但如果您的網格有父實體,請小心。 或者你可以使用lookAt()
函數, mesh.lookAt(camera.position)
,要么工作正常。
THREE.JS,我用“PointerLockControls”測試了這個——如果你想要 OBJECT 相同的 Y 旋轉相機:**你需要在 animation 之前在 renderer.render(scene, camera);**
const getCameraRotate = new THREE.Vector3();
camera.getWorldDirection( getCameraRotate);
getCameraRotate.y = 0;
getCameraRotate.add( object.position );
object.lookAt( getCameraRotate );
如果你想要 OBJECT SAME XYZ ROTATION OF CAMERA:
object.rotation.copy(camera.rotation)
如果你想要 object 相同的 position 到相機:
object.position.copy (new THREE.Vector3 (camera.position.x, camera.position.y 5, camera.position.z));
如果你的 object 得到和相機一樣的 position,你肯定看不到它,因為你會在里面,嘗試改變一些值,例如
new THREE.Vector3 (camera.position.x-5, camera.position .y -5, camera.position.z)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.