我不擅长3d计算,我需要帮助。
我有一个地球,这是我的场景中的一个球体,我使用OribitControl来“旋转”它(实际上是OribitControl旋转摄影机)。
我需要一个函数,像rotateUp(rad)
一样的东西来旋转地球,无论相机的位置如何。
问题是,我的rotateUp现在是:
earth.rotation.x -= rad
如果摄影机处于初始位置,这将使地球向上旋转,但如果摄影机旋转180度,此rotateUp
函数实际上会将地球向下旋转。
如何实现此功能?谢谢
发布于 2018-05-15 13:17:05
我自己找到了一个解决方案:
function rotateUp (rad) {
const v = new THREE.Vector3()
v.setFromMatrixColumn(camera.matrix, 0 )
v.multiplyScalar(-rad)
earth.rotation.x += v.x
}
https://stackoverflow.com/questions/50332649
复制相似问题