Tiramitsu
Tiramitsu

Reputation: 71

Three.js - About storage of geometries and materials

We can create multiple meshes with the same geometry and material. But are there duplicates in the properties of each meshes ? I'm concerned about memory problems. Thanks !

Upvotes: 1

Views: 513

Answers (2)

Mouloud85
Mouloud85

Reputation: 4234

As you can see in THREE.Mesh code :

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

};

And in the clone method :

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

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

};

That is to say when creating a mesh from a geometry/a material, or cloning a mesh, its geometry and material properties are references to the same objects. If you modify the material's color, or the geometry's vertices, both original and copy will have the new color/geometry.

Upvotes: 1

MrFreeman555
MrFreeman555

Reputation: 98

I think the best idea is cloning

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

I've prepared a simple example in JSFIDDLE.

r.73

Upvotes: 0

Related Questions