我正在尝试克隆然后缩放网格,但是使用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.position
,object.quaternion
和object.scale.
(请注意,object.rotation
和object.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