我不擅长3d计算,我需要帮助。
我有一个地球,这是我场景中的一个球体,我使用OribitControl来“旋转”它(实际上是OribitControl旋转相机)。
我需要一个功能,无论相机的位置如何,都需要rotateUp(rad)
来旋转地球。
问题是,我的rotateUp现在是:
earth.rotation.x -= rad
如果相机处于初始位置,这会旋转接地,但如果相机旋转180度,此rotateUp
功能实际上会使地球旋转。
如何实现此功能?感谢
答案 0 :(得分:1)
我自己找到了解决方案:
function rotateUp (rad) {
const v = new THREE.Vector3()
v.setFromMatrixColumn(camera.matrix, 0 )
v.multiplyScalar(-rad)
earth.rotation.x += v.x
}