簡體   English   中英

如何用攝像頭旋轉object three.js

[英]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.

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