2014-06-26 15 views
8

Tre js ver67 qualcosa di codice attuale come questo -Tre js fusione Geometrie e Mesh

var materials = []; 
    var totalGeom = new THREE.Geometry(); 
    var cubeMat; 
    for (var i = 0; i < dataSetArray.length; i++) { 
     var ptColor = dataSetArray[i].color; 
     var value = dataSetArray[i].value; 
     var position = latLongToVector3(dataSetArray[i].y, dataSetArray[i].x, 600, 1); 

     var cubeGeom = new THREE.BoxGeometry(5, 5, 1 + value/20); 


     cubeMat = new THREE.MeshLambertMaterial({ 
      color: new THREE.Color(ptColor), 
      opacity: 0.6 
     }); 


     materials.push(cubeMat); 
     // cubeGeom.updateMatrix(); 

     var cubeMesh = new THREE.Mesh(cubeGeom, cubeMat); 
     cubeMesh.position = position; 
     cubeMesh.lookAt(scene.position); 

     // totalGeom.merge(cubeMesh.geometry, cubeMesh.geometry.matrix); 
     //THREE.GeometryUtils.setMaterialIndex(cubeMesh.geometry, i); 
     THREE.GeometryUtils.merge(totalGeom, cubeMesh); 
    } 


    var total = new THREE.Mesh(totalGeom, new THREE.MeshFaceMaterial(materials)); 
    scene.add(total); 

Tuttavia ottengo il messaggio

DISAPPROVATO: .merge di GeometryUtils() è stato spostato a geometria. Utilizzare invece geometry.merge (geometry2, matrix, materialIndexOffset).

in chrome dev tools.

Quando provo qualcosa come: totalGeom.merge (cubeMesh.geometry, cubeMesh.geometry.matrix); anziché THREE.GeometryUtils.merge (totalGeom, cubeMesh); Ottengo eccezioni.

Come eseguire l'operazione di fusione sopra riportata? Per favore aiuto.

+0

Prova 'cubeMesh.updateMatrix(); totalGeom.merge (cubeMesh.geometry, cubeMesh.matrix); 'Ma prima di farlo, usa' cubeMesh.position.copy (position) 'invece di' cubeMesh.position = position; ' – WestLangley

+0

Ha funzionato! Grazie per il suggerimento cubeMesh.position.copy (position). – Abhishek

+0

Ottiene sempre 'Uncaught TypeError: Impossibile leggere la proprietà 'visible' di undefined'. Hai qualche idea del perché? – Manticore

risposta

14

fare questo:

cubeMesh.updateMatrix(); 
totalGeom.merge(cubeMesh.geometry, cubeMesh.matrix); 

Per una maggiore comprensione, vedere il codice sorgente di THREE.Geometry.merge().

Three.js r.69