Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/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
Javascript 如何在three.js中保存加载的模型?_Javascript_Three.js - Fatal编程技术网

Javascript 如何在three.js中保存加载的模型?

Javascript 如何在three.js中保存加载的模型?,javascript,three.js,Javascript,Three.js,我正在做一个视频游戏,我的记忆有问题,即我加载了我的游戏8 obj模型,但我重复了它们,所以这意味着每次我需要在地图的不同位置添加相同的模型时,我已经完成了: new THREE.MTLLoader().setPath( './Tree/' ).load( 'untitled.mtl', function ( materials ) { materials.preload(); new THREE.OBJLoader().setMaterials( materials ).s

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

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 );
});


这样,每次我调用它时,我都会在内存中说出相同的对象,我需要更多的内存。有没有办法在内存中只保存一个副本,每次我需要它时,我就称之为这个副本


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

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

最好使用实例化渲染来渲染类似于树的对象,或者将最终对象合并到单个对象中。通过这种方式,最终内存中只有一个对象,并且还可以通过一个draw调用绘制所有树,这对性能有好处。使用这两种方法可能需要一些准备,因此最好研究官方示例:

在本例中,几何图形通过以下方式合并:

three.js R105

试试看