我试图旋转一个我称为“月球”的物体(它是一个球体),试图以这种方式使用矩阵代替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()肯定会破坏您的头寸设置。

Matrix转换的three.js文档页面非常有用:https://threejs.org/docs/#manual/introduction/Matrix-transformations

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

关于javascript - 使用矩阵旋转时Three.js与对象位置有关的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28090671/

10-11 19:59
查看更多