使用 OrbitControls
在 Three.js 中旋转场景,我希望 planeMesh
对象始终面向相机。我正在尝试以下操作,但它只是疯狂地旋转(并且似乎是处理器密集型),但当我用鼠标绕场景(移动相机)时,它看起来像是试图保持正面。我试图让它在相机移动时缓慢地重新调整方向。我在这里做错了什么?
相关的JS如下:
function animate() {
requestAnimationFrame( animate );
planeMesh.rotation.y -= Math.PI /camera.rotation.y;
render();
}
我还尝试了以下方法(也不起作用):
function animate() {
requestAnimationFrame( animate );
var a = camera.rotation.y;
var b = camera.rotation.y;
if (a == b) {
planeMesh.rotation.y -= Math.PI /camera.rotation.y;
} else {
}
render();
a = camera.rotation.y;
}
** 编辑
我希望camera
和planeMesh
保持当前的相互关系。
以下是起始轮换:
平面网格旋转 y = 3.141592653589793
相机旋转 y = -0.06894749489830237
但是,我认为相机使用THREE.Euler,而planeMesh使用Math.PI进行旋转,所以...这两个旋转测量使用不同的系统吗?
当然,如果我可以获得起始点的差异,然后仅当差异更大且差异大于起始差异时才更改planeMesh spin.y
,那么我将实现我的目标。但我该怎么做呢?我是否必须以某种方式翻译这两种测量系统?当我旋转场景时,相机似乎确实使用了不同的测量比例。
最佳答案
确保飞机始终面向相机的最简单方法是将其简单地连接到相机而不是场景,例如camera.add(planeMesh);
并相对于相机定位平面。那么它们的旋转将始终自然对齐。
或者,如果两者都是同一个父级(通常是场景)的子级,请使用 planeMesh.lookAt(camera.position);
关于javascript - Three.js:平滑地旋转与 OrbitControlscamera.rotation.y 相反的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32083164/