2017-04-04 6 views
0

fand ich the example in threejs.org, die Pfeile Normals zeichnet, ist es, was ich benötige. Aber Pfeile ist komplexiertes Objekt und von ArrowHelper erstellt. Ich schaute im Quellcode und fand die Methode setDirection.Wie man Normalen zur Oberfläche des Gegenstandes in three.js rendert

function setDirection(dir) { 

    // dir is assumed to be normalized 

    if (dir.y > 0.99999) { 

     this.quaternion.set(0, 0, 0, 1); 

    } else if (dir.y < - 0.99999) { 

     this.quaternion.set(1, 0, 0, 0); 

    } else { 

     axis.set(dir.z, 0, - dir.x).normalize(); 

     radians = Math.acos(dir.y); 

     this.quaternion.setFromAxisAngle(axis, radians); 

    } 

}; 

Ich versuchte Algorithmus immpliment zur Einstellung Rotation für Vector3 mit quaternion, aber ich habe immer noch norlams, die auf {x: 0, y: 0, z: 0} aussieht.

Und meine Frage ist: Wie ein Vektor zu berechnen, um eine normale Linie von der Oberfläche in dem Raum zu ziehen, um den gleichen picuter zu erhalten: enter image description here

UPD:
I CylinderGeometry verwenden.

UPD2:
Ich habe es gelöst. Look at my codepen

+0

Sie müssen den normalen, was berechnen: Sie können VertexNormalsHelper wie so verwenden? Haben Sie eine 'bufferGeometry' oder eine' geometry'? Oder haben Sie drei 'vector', die die Normalen der Eckpunkte eines Gesichts sind? Diese Frage ist völlig unvollständig. –

+0

Ich habe die gleiche Geometrie, die in dreijs Beispiel. '' CylinderGeometry'' – artzub

+0

Ich schlage vor, durch Ihre Geometrie-Flächen zu gehen und manuell für jedes Dreieck zu berechnen. – mlkn

Antwort

Verwandte Themen