Three.js ThreeJS,在运行时更新mesh.geometry
考虑到一个场景和3个Three.js ThreeJS,在运行时更新mesh.geometry,three.js,Three.js,考虑到一个场景和3个boxbuffergeometry,我不想重新渲染场景(drawObjects调用一次,即“第一次”),而是更新它(updateScene例如在用户操作时调用),以下代码成功地更新了场景中所有对象的颜色和纹理材质属性,但在涉及网格时似乎只影响3个对象中的一个。几何体变换(一个变为球体,另两个保持为正方形),为什么?() 第二个是使用object dispose基本上是对原始网格进行克隆,例如,处理原始网格并用其克隆替换它,但在我的情况下,它不起作用,因为我有附加到该对象的函数
boxbuffergeometry
,我不想重新渲染场景(drawObjects
调用一次,即“第一次”),而是更新它(updateScene
例如在用户操作时调用),以下代码成功地更新了场景中所有对象的颜色和纹理材质属性,但在涉及网格时似乎只影响3个对象中的一个。几何体变换(一个变为球体,另两个保持为正方形),为什么?()
第二个是使用object dispose
基本上是对原始网格进行克隆,例如,处理原始网格并用其克隆替换它,但在我的情况下,它不起作用,因为我有附加到该对象的函数,我需要重复使用。也许我做错了:
object.geometry.dispose();
object.geometry = geometry.clone();
我打赌有一种方法可以实现这种网格几何变换,并在遍历场景时将其应用于每个对象,但找不到方法
善良的问候最终用对象本身的函数来完成:
setGeometries = (geometry) ->
@scene.traverse (object) ->
if object
object.geometry = geometry
object.geometry.buffersNeedUpdate = true
return
return
return
其中geometry
类似于new THREE。[Primitive]buffergeometry
。对我有用
object.geometry.dispose();
object.geometry = geometry.clone();
setGeometries = (geometry) ->
@scene.traverse (object) ->
if object
object.geometry = geometry
object.geometry.buffersNeedUpdate = true
return
return
return