Three.js - 关于几何和材料的存储

时间:2015-10-19 14:16:09

标签: caching memory three.js geometry material

我们可以创建具有相同几何和材质的多个网格。但每个网格的属性是否有重复? 我担心记忆问题。谢谢!

2 个答案:

答案 0 :(得分:1)

正如您在THREE.Mesh代码中看到的那样:

THREE.Mesh = function ( geometry, material ) {

    THREE.Object3D.call( this );

    this.type = 'Mesh';

    this.geometry = geometry !== undefined ? geometry : new THREE.Geometry();
    this.material = material !== undefined ? material : new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } );

    this.updateMorphTargets();

};

clone方法中:

THREE.Mesh.prototype.clone = function () {

    return new this.constructor( this.geometry, this.material ).copy( this );

};

也就是说,从几何/材质创建网格或克隆网格时,其几何和材质属性是对相同对象的引用。如果修改材质的颜色或几何体的顶点,则原始颜色和副本都将具有新的颜色/几何体。

答案 1 :(得分:0)

我认为最好的想法是克隆

var Box_geometry = Box_geometry.clone();
var Box_material = Box_material.clone();

I've prepared a simple example in JSFIDDLE

r.73