Maison >développement back-end >C++ >Comment obtenir une cartographie de relief fluide en lissant les normales de l'espace tangent ?
Comment éliminer l'apparence à facettes dans le Bump Mapping avec des normales d'espace tangentes lisses
Dans les efforts visant à incorporer le Bump Mapping, les utilisateurs peuvent rencontrer des apparences à facettes dans leurs modèles. Cela se produit en raison du calcul des valeurs tangentes, binormales et normales par face, sans tenir compte des normales fournies dans le fichier modèle.
Pour résoudre ce problème, envisagez plutôt de calculer ces valeurs par sommet. Une approche consiste à utiliser les normales fournies avec le modèle et à les lisser pour éliminer l'apparence facettée. Voici comment :
Créer un espace pour les valeurs par sommet :
double N[3]; //normal int cnt;
Initialiser par sommet :
N={0.0,0.0,0.0} cnt=0;
Calculer la normale par visage :
Calculez la normale pour chaque visage. Assurez-vous que la normale est normalisée à une longueur de 1,0. Ajoutez cette normale à tous les sommets utilisés dans la face et incrémentez le cnt pour chacun de ces sommets.
Normaliser par sommet :
N/=cnt; // N = average normal from all vertex - neighbour faces
Méfiez-vous du fait que cnt soit 0 pour les sommets inutilisés (en évitant la division par zéro). >Après avoir normalisé les valeurs par sommet dans N, calculez les vecteurs tangents (T) et binormaux (B) pour la matrice TBN à l'aide des méthodes existantes.
Sortie fluide :
Grâce à cette approche, chaque sommet contient désormais une normale lissée. Cela garantit que l'image générée apparaîtra lisse.
En suivant ces étapes, les utilisateurs peuvent éliminer efficacement l'apparence des facettes dans leurs modèles mappés en relief et obtenir des normales d'espace tangentes lisses.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!