Come risposta di WestLangley dice, non si può fare questo.Ecco la soluzione per ammissione hacky ho deciso di utilizzare:
- allocare più vertici di cui ho bisogno riempiendo geometry.vertices con il punto di partenza della mia linea
- Come nuovi punti vengono in che voglio aggiungere, spostare i contenuti della matrice a sinistra e scrivere il nuovo punto nella ultima voce gamma di geometry.vertices
Codice: per creare una nuova linea:
function createNewLine(startingPoint){
var geometry = new THREE.Geometry();
for (i=0; i<MAX_LINE_POINTS; i++){
geometry.vertices.push(startingPoint.clone());
}
myLine = new THREE.Line(geometry, lineMaterial);
myLine.geometry.dynamic = true;
scene.add(myLine);
render();
}
.210
Per aggiungere un punto alla linea:
function addPoint(myPoint) {
myLine.geometry.vertices.push(myLine.geometry.vertices.shift()); //shift the array
myLine.geometry.vertices[maxLinePoints-1] = myPoint; //add the point to the end of the array
myLine.geometry.verticesNeedUpdate = true;
render();
}
Che cosa si finisce con l'allora è una linea che ha un sacco di punti ammucchiati uno sopra l'altro, seguito dai punti che realmente desidera eseguire il rendering. Ho inviato un problema sul repository git three.js per una soluzione più semplice a questo problema. https://github.com/mrdoob/three.js/issues/4716
fonte
2014-04-24 01:15:34
thanks.i immagino io è sufficiente rimuovere e ri-aggiungere una nuova linea di ogni frame ... solo sembra più inefficiente – K2xL
Credo che il punto WestLangley stava facendo era che cercando di fare in modo dinamico è basicaly inefficiente come solo creare una geometria completamente nuova in primo luogo, quindi non è meno efficiente è la stessa cosa. – 0xor1
Ho aggiunto tutti i punti alla geometria da questa riga di codice: linegeometryX.vertices.push (new THREE.Vertex (new THREE.Vector3 (x, y, z))); Come posso nascondere/comprimere i vertici non necessari? – Dipak