javascript - 在 Three.js 中恢复旋转

标签 javascript three.js

我正在使用 Three.js,我希望能够从场景中获取一个对象,然后用一个新对象替换它,但旋转方向与我删除的对象相同。

我记下要删除的对象的旋转,然后使用此函数设置新对象的旋转:

rotateToWorldAxis  = function(object, xradians, yradians, zradians)  {
  axisX = new THREE.Vector3(0, 1, 0);
  axisY = new THREE.Vector3(1, 0, 0);
  axisZ = new THREE.Vector3(0, 0, 1);

  rotationMatrix = new THREE.Matrix4();
  rotationMatrix.setRotationAxis(axisX.normalize(), xradians)
  object.matrix = rotationMatrix;
  object.rotation.setRotationFromMatrix(object.matrix);

  rotationMatrix = new THREE.Matrix4();
  rotationMatrix.setRotationAxis(axisY.normalize(), yradians);
  rotationMatrix.multiplySelf(object.matrix);
  object.matrix = rotationMatrix;
  object.rotation.setRotationFromMatrix(object.matrix);

  rotationMatrix = new THREE.Matrix4();
  rotationMatrix.setRotationAxis(axisZ.normalize(), zradians);
  rotationMatrix.multiplySelf(object.matrix);
  object.matrix = rotationMatrix;
  object.rotation.setRotationFromMatrix(object.matrix);
}

x 和 y 旋转工作得很好,但 z 旋转没有给出所需的结果。

如果有人能发现我做错了什么,或者我应该采取另一种方式,我将不胜感激?

谢谢

最佳答案

这样做:

object.rotation.set( xradians, yradians, zradians );

其中xradians = oldObject.rotation.x等...

此外,除非您进行了更改,否则 object.matrixAutoUpdate 的默认值为 true,因此您无需设置 object.matrix 直接。 -- 只需设置旋转即可。 render() 调用将为您更新矩阵。

关于javascript - 在 Three.js 中恢复旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835626/

相关文章:

javascript - 向 Three.js 对象添加属性

javascript - 如何在react-leaflet中调用fitBounds和getBounds?

javascript - 如何在我的 HTML 中使用来自外部 .js 文件的变量?

javascript - 动态创建 Canvas 并设置宽度和高度时字体太小

javascript - 单击时更改对象模型的颜色 ​​- Three.js

javascript - three.js javascript/raycasting 代码与视网膜显示 mac 不兼容

javascript - 使用 Javascript 的动画图像

javascript - Google Visualization - 发送二维数组,但不起作用

javascript - 在圆柱体几何形状上创建凹口/雕刻

three.js - Threejs/Raycast 不计算与我的立方体的交集