Threejs克隆方法
Threejs clone method
我正在尝试克隆一些 Vector3,但克隆方法制作的副本是由 x、y 和 z 值中的全零创建的。一个例子:
这条语句的输出
console.log(this.geometries[j].vertices[i].multiplyScalar(1));
是
LabeledVertex {x: -0.5, y: 0.5, z: 2.6745e-12, label: "U", constructor: function…}
(LabeledVertex 只是 THREE.Vector3 的扩展)
如果我克隆最后一个
position = this.geometries[j].vertices[i].clone().multiplyScalar(1);
position里面的内容是:THREE.Vector3 {x: 0, y: 0, z: 0, constructor: function, set: function…}.
正如你所看到的,它是由全零组成的。 Threejs 的 r71 版本会发生这种情况。
总是创建新的向量,如果你想用它来计算,或者克隆它然后在新的语法中用它来计算:
var v2 = v1.clone();
v2 = v2.multiplyScalar( 2 );
//or
v2 = new THREE.Vector3(v1.x,v1.y,v1.z).multiplyScalar( 2 );
//or from gaitat comment
v2 = v1.clone().multiplyScalar( 2 );
我正在尝试克隆一些 Vector3,但克隆方法制作的副本是由 x、y 和 z 值中的全零创建的。一个例子:
这条语句的输出
console.log(this.geometries[j].vertices[i].multiplyScalar(1));
是
LabeledVertex {x: -0.5, y: 0.5, z: 2.6745e-12, label: "U", constructor: function…}
(LabeledVertex 只是 THREE.Vector3 的扩展)
如果我克隆最后一个
position = this.geometries[j].vertices[i].clone().multiplyScalar(1);
position里面的内容是:THREE.Vector3 {x: 0, y: 0, z: 0, constructor: function, set: function…}.
正如你所看到的,它是由全零组成的。 Threejs 的 r71 版本会发生这种情况。
总是创建新的向量,如果你想用它来计算,或者克隆它然后在新的语法中用它来计算:
var v2 = v1.clone();
v2 = v2.multiplyScalar( 2 );
//or
v2 = new THREE.Vector3(v1.x,v1.y,v1.z).multiplyScalar( 2 );
//or from gaitat comment
v2 = v1.clone().multiplyScalar( 2 );