在这个链接中,我快速组织了一个克隆网格并应用矩阵的展示: http://codepen.io/anon/pen/Crsxy
正如您在第150行所见,当我克隆网格并应用矩阵时,顶点根本不会改变位置。
particle = electron.clone();
particle.geometry.applyMatrix(new THREE.Matrix4().makeTranslation(position.x,position.y,position.z));
但是当我创建一个新网格并在构造函数中使用克隆的几何和材质时,它的工作正常!
particle = new THREE.Mesh(electron.geometry.clone(),electron.material.clone());
particle.geometry.applyMatrix(new THREE.Matrix4().makeTranslation(position.x,position.y,position.z));
当我更改THREE.Mesh的克隆功能时,它可以预期!
THREE.Mesh.prototype.clone = function ( object, recursive ) {
if ( object === undefined ) object = new THREE.Mesh( this.geometry.clone(), this.material.clone() );
THREE.Object3D.prototype.clone.call( this, object, recursive );
return object;
};
particle = electron.clone();
particle.geometry.applyMatrix(new THREE.Matrix4().makeTranslation(position.x,position.y,position.z));
所以我的问题是,如果我应该总是实例化一个新的网格并使用构造函数中的克隆,或者我错误地期望THREE.Mesh的克隆函数使用克隆的几何和材料?