在不渲染的情况下计算场景的子矩阵

时间:2016-10-08 19:58:12

标签: three.js

似乎必须致电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]

在比较两个数组时似乎只设置了位置。

我的用例是我只需要元素矩阵。为了提高性能,我认为摆脱渲染阶段,我认为这是最昂贵的,这将是一件好事。

1 个答案:

答案 0 :(得分:1)

您可以根据需要使用以下两种方法之一来更新对象的矩阵变换:

object.updateMatrix();,
object.updateMatrixWorld();

scene.updateMatrixWorld()将更新完整场景图的世界矩阵,并在您致电renderer.render()时自动为您调用。

检查这些方法的源代码,以便了解他们正在做什么。

three.js r.81