三js:克隆后如何强制更新矩阵?(与CSG TrixBSP一起使用)



我正在尝试克隆然后缩放网格,但是使用CSG TrixBSP的编程目的,缩放似乎并不立即在克隆的对象上工作。我认为我应该在缩放后调用功能,以强制矩阵或其他内部变量立即重新计算,而不是等待渲染侧的完整更新循环。

我的代码看起来像这样:

var someMesh2 = someMesh1.clone();
someMesh2.scale.set(2,2,2);
someProgrammingOperation(someMesh2);
//It turns out that internally, someMesh2 still has the same properties (matrix?) as someMesh1 :(

我想念什么?建议也受到欢迎:)

object.matrix在您致电renderer.render()时为您更新。

如果您需要手动更新对象矩阵,请致电

object.updateMatrix();

它将从object.positionobject.quaternionobject.scale.

的当前值更新矩阵

(请注意,object.rotationobject.quaternion保持同步。当您自动更新一个时,另一个会自动更新。)

三。r.84

最后,我的问题是CSG Trixbsp对象基于对象的几何形状而不是在网格本身中工作。我在几何形状上应用了缩放率,并按照预期的方式工作。

有一个警告,应该像网格和几何实例一样谨慎,因此需要进行一些克隆以保持原始对象,如以下示例:

var clonedMesh = original.mesh.clone()
var clonedGeometry = clonedMesh.geometry.clone()
clonedMesh.geometry = clonedGeometry
clonedMesh.geometry.scale(2,2,2)
var someBsp = new ThreeBSP( clonedMesh )
var newMesh = someBspBsp.toMesh()
someScene.add newMesh

相关内容

  • 没有找到相关文章

最新更新