我试图旋转一个我称之为"月亮" (它是一个球体)尝试使用矩阵代替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)?
感谢。
问候。
何。
答案 0 :(得分:1)
applyMatrix()直接修改矩阵。设置位置时,矩阵仅在渲染循环中更新,或者如果调用updateMatrix()。因此,根据您的操作顺序,调用applyMatrix()肯定会破坏您的位置设置。
Matrix转换的three.js文档页面很有用:https://threejs.org/docs/#manual/introduction/Matrix-transformations。
另外,我为自己编写了一系列测试用例,以了解应用网格和几何的旋转和变换的各种方法。可能会有所帮助:http://rwoodley.org/?p=1073