2016-04-07 12 views
0

Soru birden BoxGeometries dönüştürme:tek BufferedGeometry içine

nasıl THREE.BoxGeometry N sayısı tek THREE.BufferedGeometry içine nesneleri birleştirebilirsiniz?

var buffer = new THREE.BufferGeometry(); 

      for (var i = 0; i < meshList.length; ++i) { 
       var item = meshList[i]; 
       var geometry = <THREE.BoxGeometry>item.geometry; 
       buffer.fromGeometry(geometry); 
      } 

      buffer.computeBoundingSphere(); 

      var buffer_material = new THREE.MeshPhongMaterial({ 
       color: 0x999999, 
       specular: 0x333333, 
       shininess: 50, 
       side: THREE.DoubleSide, 
       vertexColors: THREE.VertexColors, 
       shading: THREE.SmoothShading 
      }); 

      var buffer_mesh = new THREE.Mesh(buffer, buffer_material); 
      this.Scene.add(buffer_mesh); 

Ne yazık ki bu tamamen çalışmaz:

Şu anda böyle bir şey var. Sadece 1 kutu görüyorum (birçok kutu yerine). 'Konum' belirtmem gerekir mi? Eğer öyleyse, bunu nasıl yapabilirim?

Teşekkürler!

cevap

1

Sen THREE.Geometry s birleştirme ve sonra böyle bir yapıyı kullanarak bir THREE.BufferGeometry sonucu dönüştürebilirsiniz:

var geometry = new THREE.Geometry(); 

for (var count = 0; count < 10; count ++) { 

    var geo = new THREE.BoxGeometry(5, 5, 5); 

    geo.translate(THREE.Math.randFloat(- 5, 5), THREE.Math.randFloat(- 5, 5), THREE.Math.randFloat(- 5, 5)); 

    geometry.merge(geo); 

} 

geometry = new THREE.BufferGeometry().fromGeometry(geometry); 

Three.js r.75

+0

Serin. Bunu deneyeceğim! – AlvinfromDiaspar

+0

Sadece merak, bu "toplama" etkileyecek mi? Sonunda her bir ayrı BoxGeometry için çarpışma tespiti yapmak isterim. – AlvinfromDiaspar

+0

Kullanım durumunuza bağlıdır. Daha fazla yardıma ihtiyacınız varsa yeni bir yazı oluşturun. – WestLangley

İlgili konular