2013-05-29 26 views
7

Ho bisogno di mostrare/nascondere selettivamente oltre 1000 linee di diverse dimensioni, posizioni e colori.Modificare i vertici in un oggetto THREE.BufferGeometry

Il mio primo tentativo ha fatto un THREE.Geometry con un nome per ciascuno. Per nascondere/mostrare I itate su scene e nascondi/mostri su ciascuna in base al nome e alla mia euristica. Sembrava molto lento, intorno ai 50Hz per circa 1000 linee.

Ho eseguito un test utilizzando un approccio simile ma utilizzando solo un singolo THREE.Geometry per contenere tutte le linee. È stato molto più veloce, ma ovviamente posso applicare un solo materiale a tutte le righe che non è buono. Sono stato in grado di impostare le bandiere giuste e aggiornare le posizioni delle linee mentre l'app era in esecuzione.

L'approccio migliore sembra essere l'utilizzo di THREE.BufferGeometry. Ho fatto un test che è stato molto veloce e ha funzionato come previsto per l'impostazione iniziale, ma non sono stato in grado di modificare la posizione/visibilità e il colore di ciascuna riga in seguito. Ho creato un violino JS che lo illustra - http://jsfiddle.net/SSnKk/ - ma chiamare buffer_geometry.dynamic = true; e buffer_geometry.verticesNeedUpdate = true; non sembra essere d'aiuto.

risposta

11

è necessario chiamare il violino

buffer_geometry.attributes.position.needsUpdate = true; 
buffer_geometry.attributes.color.needsUpdate = true; 

Aggiornato: jsfiddle.net/hjx3rLmt/1

Three.js r.76

+0

che ha funzionato perfettamente - grazie ad ovest di Langley. – speedwell

+0

In seguito, vorrei che le linee iniziassero dall'origine. Quando cambio la posizione iniziale, non vedo cosa mi aspetterei. È possibile utilizzare la geometria del buffer con un insieme di linee in posizioni arbitrarie? Esempio qui: http://jsfiddle.net/9nVqU/ – speedwell

+0

Si prega di fare un nuovo post con la tua nuova domanda. – WestLangley

Problemi correlati