Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Performance 较新版本的THREEJS中合并的几何图形内存使用率高_Performance_Merge_Three.js_Mesh - Fatal编程技术网

Performance 较新版本的THREEJS中合并的几何图形内存使用率高

Performance 较新版本的THREEJS中合并的几何图形内存使用率高,performance,merge,three.js,mesh,Performance,Merge,Three.js,Mesh,我正在尝试创建体素引擎,并正在合并几何体以提高性能。我使用的是as reference,它能够在chrome中使用大约700mb的内存生成大约120000个,并且在我的机器上以60+fps的速度运行。此演示使用threejs的44版,它使用THREE.GeometryUtils.merge。我的项目使用的是最新版本的threejs(release 83),当我尝试渲染大约50000个体素(使用geometry.merge进行合并)时,我使用了超过1000mb的内存,性能非常差。我使用的方法与上面

我正在尝试创建体素引擎,并正在合并几何体以提高性能。我使用的是as reference,它能够在chrome中使用大约700mb的内存生成大约120000个,并且在我的机器上以60+fps的速度运行。此演示使用threejs的44版,它使用THREE.GeometryUtils.merge。我的项目使用的是最新版本的threejs(release 83),当我尝试渲染大约50000个体素(使用geometry.merge进行合并)时,我使用了超过1000mb的内存,性能非常差。我使用的方法与上面的演示几乎相同。为了确认threejs是问题所在(而不是我的代码中的其他问题),我将演示中使用的threejs的44版替换为83版(并进行了一些较小的兼容性调整),并遇到了相同的问题。这是一个已知的问题吗?我真的不想在我的项目中恢复到旧版本的threejs。我能看到的唯一真正的解决方案是切换到旧版本,尝试只将r44中的合并代码集成到r83中,或者在github上发布问题并等待解决,这些都不是真正需要的。只是想知道是否还有其他人处理过这个问题。

我通过将45版的Three.GeometryUtils.merge替换为44版的,确定了问题不在于merge函数。这导致了与以前相同的内存问题,因此在release 45中更改的其他内容导致了该问题。正如建议的那样,我使用BufferGeometry进行了测试,并且能够达到预期的性能水平(120000个体素的内存使用量小于500 mb),因此我将结束对问题来源的搜索,转而使用此方法。

对于您的用例,您可以使用
InstancedBufferGeometry
。看见编辑示例并重新定义变量
顶点
,如下所示:
var顶点=(新的THREE.BoxBufferGeometry(0.05,0.05,0.05).toNonIndexed()).attributes.position。你需要做一些研究来了解它是如何工作的。我可能会使用它,所以谢谢你的建议,但问题是,为什么我不能在新版本上获得与在旧版本上相同的性能?我正在研究它,现在看起来在44版和45版之间发生的事情可能会导致内存使用量的大幅增加。我现在正在研究它,并将结果发布在这里。您也可以使用
BufferGeometry
。请参见,如果要动态增加体素的数量。我会避免常规的
几何体