当使用矩阵制作旋转时,Three.js发出对象位置

时间:2015-01-22 14:02:57

标签: javascript three.js

我试图旋转一个我称之为"月亮" (它是一个球体)尝试使用矩阵代替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)?

感谢。

问候。

何。

1 个答案:

答案 0 :(得分:1)

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

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

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