Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js ThreeJS,在运行时更新mesh.geometry_Three.js - Fatal编程技术网

Three.js ThreeJS,在运行时更新mesh.geometry

Three.js ThreeJS,在运行时更新mesh.geometry,three.js,Three.js,考虑到一个场景和3个boxbuffergeometry,我不想重新渲染场景(drawObjects调用一次,即“第一次”),而是更新它(updateScene例如在用户操作时调用),以下代码成功地更新了场景中所有对象的颜色和纹理材质属性,但在涉及网格时似乎只影响3个对象中的一个。几何体变换(一个变为球体,另两个保持为正方形),为什么?() 第二个是使用object dispose基本上是对原始网格进行克隆,例如,处理原始网格并用其克隆替换它,但在我的情况下,它不起作用,因为我有附加到该对象的函数

考虑到一个场景和3个
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