2014-11-05 59 views
0
  var ShipGeometry = new THREE.Geometry(); 

      var ShipModule1geo = new THREE.SphereGeometry(150.0, 40, 30); 
       ShipGeometry.merge(ShipModule1geo); // this works 

      var ShipModule2geo = new THREE.BoxGeometry(5.0, 5.0, 600, 1, 1, 1); 
      var matrix = new THREE.Matrix4().makeTranslation(0,0,450); 
       ShipGeometry.merge(ShipModule2geo,matrix); // this works too 

      var ShipModule3geo = new THREE.CylinderGeometry(150, 150, 20, 32); 
      var matrix = new THREE.Matrix4().makeTranslation(0, 0, 850).makeRotationZ(Math.PI/2); 
       ShipGeometry.merge(ShipModule3geo,matrix); // only rotation is applyed 

      shipMesh = new THREE.Mesh(ShipGeometry, ShipMaterial); 
      .... 

我的问题,为什么applyed makeTranslation(0, 0, 850)makeRotationZ(Math.PI/2)在最后一种情况?3 JS几何合并矩阵

如何合并前合并?

回答

0

您可以将两个矩阵是这样的:

var matrix = new THREE.Matrix4(); 
matrix.multiply(new THREE.Matrix4().makeTranslation(0, 0, 850)); 
matrix.multiply(new THREE.Matrix4().makeRotationZ(Math.PI/2)); 
+2

谢谢你的回答,而对于三个JS! – Martin 2014-11-05 15:33:50