J'ai trouvé the example dans threejs.org, qui dessine des flèches normales, c'est ce dont j'ai besoin. Mais les flèches sont des objets complexes et créées par ArrowHelper. J'ai regardé dans le code source et trouvé la méthode setDirection.Comment rendre des normales à la surface de l'objet dans trois.js
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);
}
};
J'ai essayé de immpliment algorithme pour la mise en rotation pour Vector3 avec l'aide quaternion, mais je dois encore norlams qui regarde {x: 0, y: 0, z: 0}
.
Et ma question est: Comment calculer un vecteur afin de tracer une ligne normale de la surface dans l'espace, afin d'obtenir le même picuter:
UPD:
J'utilise CylinderGeometry.
UPD2:
Je l'ai résolu. Look at my codepen
Vous devez calculer la normale de quoi? Avez-vous un 'bufferGeometry' ou un' geometry'? Ou vous avez trois «vecteur» qui sont les normales des sommets d'un visage? Cette question est totalement incomplète. –
J'ai la même géométrie que dans l'exemple threejs. '' CylinderGeometry'' – artzub
Je vous suggère de parcourir vos faces de géométrie et de calculer manuellement la normale pour chaque triangle. – mlkn