【问题标题】:Correctly disposing of curves in THREE.JS在 THREE.JS 中正确处理曲线
【发布时间】:2021-07-28 17:07:55
【问题描述】:

我有一个球体,上面有多个移动点,我正在绘制连接这些点的曲线,如下所示:

由于点在移动,我为每一帧绘制这些曲线,因此我担心会有很多内存开销。

每条曲线都是用

绘制的
// points = array of Three.Vector3 size 40
path = new THREE.CatmullRomCurve3(points)
mesh = new THREE.Mesh( 
                      new THREE.TubeGeometry(path,64,0.5,false), // geometry
                      new THREE.MeshBasicMaterial({color: 0x0000ff}) // material
                     ) 
scene.add(mesh)

和处置:

scene.remove(mesh)
mesh.material.dispose()
mesh.geometry.dispose()

然而,让我处理我的 40 个 Three.js 向量数组 points 和我的 CatmullRomCurve3 @ 987654326@.

有什么问题,我该如何处理new THREE.Vector3()new THREE.CatmullRomCurve3()

【问题讨论】:

    标签: javascript three.js 3d


    【解决方案1】:

    有什么问题,我该如何处理新的 THREE.Vector3() 和新的 THREE.CatmullRomCurve3()。

    three.js 中的dispose() 方法主要用于释放与几何、材质、纹理或渲染目标等 JS 对象相关联的 GPU 内存。实例化曲线和像 Vector3 这样的普通数学实体不会导致分配 GPU 内存。

    因此,只需删除对 path 的任何引用就足够了,以便 GC 可以清理它。

    【讨论】:

    • 哦,有道理!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2022-01-01
    • 2020-07-23
    • 2012-04-27
    • 2018-08-21
    相关资源
    最近更新 更多