似乎必须致电renderer.render(scene, camera)
才能获得matrix
礼仪。
例如,有一个带有立方体的场景:
var geo = new THREE.BoxGeometry(10,10,10);
var mesh = new THREE.Mesh(geo, mat)
mesh.position.set(50, 0 , -50)
scene.add(mesh)
通过调用renderer.render(scene, camera)
,此网格的matrix.elements
适当性为:
[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 50, 0, -50, 1]
且没有:
[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
在比较两个数组时似乎只设置了位置。
我的用例是我只需要元素矩阵。为了提高性能,我认为摆脱渲染阶段,我认为这是最昂贵的,这将是一件好事。
答案 0 :(得分:1)
您可以根据需要使用以下两种方法之一来更新对象的矩阵变换:
object.updateMatrix();,
object.updateMatrixWorld();
scene.updateMatrixWorld()
将更新完整场景图的世界矩阵,并在您致电renderer.render()
时自动为您调用。
检查这些方法的源代码,以便了解他们正在做什么。
three.js r.81