始终以三个为中心旋转对象。

时间:2018-05-14 14:21:09

标签: javascript three.js rotation

我不擅长3d计算,我需要帮助。

我有一个地球,这是我场景中的一个球体,我使用OribitControl来“旋转”它(实际上是OribitControl旋转相机)。

我需要一个功能,无论相机的位置如何,都需要rotateUp(rad)来旋转地球。

问题是,我的rotateUp现在是:

earth.rotation.x -= rad

如果相机处于初始位置,这会旋转接地,但如果相机旋转180度,此rotateUp功能实际上会使地球旋转。

如何实现此功能?感谢

1 个答案:

答案 0 :(得分:1)

我自己找到了解决方案:

function rotateUp (rad) {
  const v = new THREE.Vector3()
  v.setFromMatrixColumn(camera.matrix, 0 )
  v.multiplyScalar(-rad)
  earth.rotation.x += v.x
}