Three.js: Qu'est-ce que la convention de main gauche de la carte normale de three.js ?

Créé le 11 mai 2017  ·  3Commentaires  ·  Source: mrdoob/three.js

Il peut être utile de documenter cela. @emackey a signalé un problème avec GLTF2Loader (https://github.com/donmccurdy/three-gltf-viewer/issues/10) et l'inversion normale de la carte semble en être responsable. En comparaison:

BabylonJS: axe x = gauche, axe y = bas
OpenGL: axe x = droite, axe y = haut
DirectX : axe x = droite, axe y = bas

Question

Commentaire le plus utile

Les réponses ont été élaborées par @WestLangley et @donmccurdy ici: https://github.com/mrdoob/three.js/pull/13784#issuecomment -379511456

J'espère avoir résumé correctement :

  • La texture normale par défaut de ThreeJS est OpenGL, droitier, identique à glTF.
  • L'origine UV par défaut de ThreeJS est en bas à gauche, à l'opposé de l'origine UV supérieure gauche de glTF.
  • En conséquence, GLTLFoader doit inverser les UV, puis inverser la main normale pour compenser.

Tous les 3 commentaires

Y a-t-il eu des progrès à ce sujet?

Dans mes propres projets, je corrige cela manuellement en définissant:

    material.normalScale.x = -1;

Je n'ai rien entendu. Ce serait bien à savoir, mais je suis enclin à simplement retourner normalScale.x si cela fonctionne correctement avec les exemples de modèles.

Les réponses ont été élaborées par @WestLangley et @donmccurdy ici: https://github.com/mrdoob/three.js/pull/13784#issuecomment -379511456

J'espère avoir résumé correctement :

  • La texture normale par défaut de ThreeJS est OpenGL, droitier, identique à glTF.
  • L'origine UV par défaut de ThreeJS est en bas à gauche, à l'opposé de l'origine UV supérieure gauche de glTF.
  • En conséquence, GLTLFoader doit inverser les UV, puis inverser la main normale pour compenser.
Cette page vous a été utile?
0 / 5 - 0 notes