/** * @author mr.doob / http://mrdoob.com/ * @author alteredq / http://alteredqualia.com/ * @author mikael emtinger / http://gomo.se/ */ THREE.Mesh = function ( geometry, materials ) { THREE.Object3D.call( this ); this.geometry = geometry; this.materials = materials && materials.length ? materials : [ materials ]; this.flipSided = false; this.doubleSided = false; this.overdraw = false; // TODO: Move to material? if ( this.geometry ) { // calc bound radius if( !this.geometry.boundingSphere ) { this.geometry.computeBoundingSphere(); } this.boundRadius = geometry.boundingSphere.radius; // setup morph targets if( this.geometry.morphTargets.length ) { this.morphTargetBase = -1; this.morphTargetForcedOrder = []; this.morphTargetInfluences = []; this.morphTargetDictionary = {}; for( var m = 0; m < this.geometry.morphTargets.length; m++ ) { this.morphTargetInfluences.push( 0 ); this.morphTargetDictionary[ this.geometry.morphTargets[ m ].name ] = m; } } } } THREE.Mesh.prototype = new THREE.Object3D(); THREE.Mesh.prototype.constructor = THREE.Mesh; THREE.Mesh.prototype.supr = THREE.Object3D.prototype; /* * Get Morph Target Index by Name */ THREE.Mesh.prototype.getMorphTargetIndexByName = function( name ) { if( this.morphTargetDictionary[ name ] !== undefined ) { return this.morphTargetDictionary[ name ]; } console.log( "THREE.Mesh.getMorphTargetIndexByName: morph target " + name + " does not exist. Returning 0." ); return 0; }