现在怎么办three.getWorldRotation已经走了

What to do now three.getWorldRotation has gone

在之前的版本Three.js中我使用的是getWorldRotation()

  const sourceObject3D = sourceEntity.object3D

  // Rotation
  {
    const sourceAngle = three.Math.radToDeg(
      sourceObject3D.getWorldRotation().y
    )

    const prevAngle = three.Math.radToDeg(
      targetEntity.object3D.getWorldRotation().y
    )

现在已折旧。

我试过用getWorldQuaternion()

代替
var quaternion = new three.Quaternion()
sourceEntity.object3D.getWorldQuaternion( quaternion )
var vector = new three.Vector3()
vector.applyQuaternion( quaternion )
const sourceAngle = three.Math.radToDeg(vector.y)

var tquaternion = new three.Quaternion()
targetEntity.object3D.getWorldQuaternion( tquaternion )
var tvector = new three.Vector3()
tvector.applyQuaternion( tquaternion )

const prevAngle = three.Math.radToDeg(tvector.y)

但是 targetEntity 四元组总是 Quaternion {_x: 0, _y: 0, _z: 0, _w: 1}

为什么会这样?这是替换 getWorldRotation()

的正确方法吗

object3Ds 旋转由 THREE.Euler 对象 (source) 表示。

如果您使用它而不是 Vector3,您的计算应该可以正常工作。

var quaternion = new THREE.Quaternion()
sourceEntity.object3D.getWorldQuaternion( quaternion )

let rotation = new THREE.Euler()
rotation.setFromQuaternion(quaternion)

在我的 fiddle 中查看。