gpt4 book ai didi

javascript - 如何在 Three.js 中保存加载的模型?

转载 作者:行者123 更新时间:2023-12-02 23:29:57 25 4
gpt4 key购买 nike

我正在做一个视频游戏,我有内存问题,即我在游戏中加载了 8 个 obj 模型,但我重复它们,所以这意味着每次我需要在 map 的不同位置添加相同的模型时,我已完成:

new THREE.MTLLoader().setPath( './Tree/' ).load( 'untitled.mtl', function ( materials ) {
materials.preload();
new THREE.OBJLoader().setMaterials( materials ).setPath( './Tree/' ).load( 'tree.obj', function ( object ) {
object.scale.set(2, 2, 2);
object.position.set(10, 0, 30);
scene.add( object );
}, undefined, undefined );
});


这样,每次调用它时,我都会在内存中创建同一个对象,并且需要很多内存。有没有什么方法可以在内存中只保存一份副本,并且每次需要时我都只调用这个副本?

我在网上寻求过,但没有找到/理解任何解决方案。

最佳答案

您可以通过Object3D.clone()克隆它,而不是多次加载该对象。 。但是,这对于您的用例来说并不是一个理想的解决方案,因为内存中仍然有多个对象,并且使用单个绘制调用来绘制每个对象。

最好使用实例渲染来渲染树木等对象,或者将最终对象合并为一个对象。通过这种方式,您最终会在内存中拥有一个对象,并通过一次绘制调用绘制所有树(这对性能有好处)。使用这两种方法可能需要一些准备,因此最好研究官方示例:

https://threejs.org/examples/webgl_buffergeometry_instancing https://threejs.org/examples/webgl_geometry_minecraft (在此示例中,几何图形通过 BufferGeometryUtils.mergeBufferGeometries 合并)

三.js R105

关于javascript - 如何在 Three.js 中保存加载的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56556705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com