2013-11-22 10 views
29

Sto utilizzando ThreeJS in un progetto e ho notato che le versioni precedenti rendono i wireframe in modo diverso rispetto alle versioni più recenti e non riesco a capire come ripristinare (quale preferire).Materiale wireframe Three.JS - tutti poligoni vs. soli spigoli

Questo violino usando rilascio 54 rende solo i bordi esterni dell'oggetto disegnate con un materiale wireframe: http://jsfiddle.net/ksRyQ/ o come descritto qui in caso questo è specifica piattaforma (sono in mac cromo):

enter image description here

D'altra parte, quando si esegue lo stesso codice in locale utilizzando la versione più recente R61 vedo bordo di ciascun poligono, come in:

enter image description here

il codice in entrambi i casi è semplice:

material = new THREE.MeshBasicMaterial({ 
    color: 0xff0000, 
    wireframe: true 
}); 

Sono sicuro che avrei potuto fare il cubo di linee o qualcosa del genere, ma preferirei davvero capire il problema.

Eventuali indizi? C'è un ambiente per questo o qualcosa che può essere ottimizzato? Secondariamente, noterai che in questo momento il codice sta usando il renderer canvas, anche se ho intenzione di usare il renderer webGL, ma lo stesso fenomeno è vero per entrambi (anche se ci sono altre differenze).

risposta

48

Se si vuole rendere un wireframe di un dato geometry, è ora possibile utilizzare questo schema:

var geo = new THREE.EdgesGeometry(geometry); // or WireframeGeometry(geometry) 

var mat = new THREE.LineBasicMaterial({ color: 0xffffff, linewidth: 2 }); 

var wireframe = new THREE.LineSegments(geo, mat); 

scene.add(wireframe); 

WireframeGeometry renderà tutti i bordi. EdgesGeometry renderà solo i bordi duri.

Vedere anche this related answer su come eseguire il rendering di un modello e del relativo wireframe.

EDIT: aggiornato per three.js.r.82

+7

Solo per elaborare, si vede le diagonali perché il supporto per le facce quad è stata abbandonata da Three.js, e così CubeGeometry e altri sono ora implementato utilizzando triangoli. – yaku

+0

Capito, grazie Yaku, che sicuramente risponde alla mia domanda di base: se voglio qualcos'altro, dovrò semplicemente disegnarlo in modo diverso. – tekunokurato

+0

Sono al rev 71 e non ho EdgesGeometry o WireframeGeometry, cosa posso usare invece? – shinzou