Three.js 使用矩阵旋转时对象位置问题

Three.js issue with object position when using matrix make rotation

我正在尝试旋转一个我称为 "moon" 的对象(它是一个球体),尝试使用矩阵代替 moon.rotation.y 以这种方式:

moon.applyMatrix(new THREE.Matrix4().makeRotationY(Math.PI/100));

好在物体旋转的很好,就是不知道为什么物体改变了初始位置:

moon.position.set(30,1,30);

至 (0,0,0)

你能告诉我为什么,如果我执行第一行,对象放在 0,0,0,如果不在正确的位置 (30,1,30)?

谢谢。

此致。

何塞。

applyMatrix() 直接修改矩阵。当您设置位置时,矩阵仅在渲染循环中或您调用 updateMatrix() 时更新。因此,根据您的操作顺序,调用 applyMatrix() 肯定会破坏您的位置设置。

关于矩阵转换的 three.js 文档页面很有帮助:https://threejs.org/docs/#manual/introduction/Matrix-transformations

此外,我为自己编写了一系列测试用例,以了解应用网格和几何体的旋转和变换的各种方法。可能有帮助:http://rwoodley.org/?p=1073