J'ai une classe qui génère une forme 3D basée sur les entrées du code appelant. Les entrées sont des choses comme la longueur, la profondeur, l'arc, etc. Mon code génère parfaitement la géométrie, mais je rencontre des problèmes lors du calcul des normales de surface. Lorsqu'elle est allumée, ma forme a une coloration / texture très bizarre provenant des normales de surface incorrectes qui sont calculées. De toutes mes recherches, je crois que mes calculs sont corrects, il semble que quelque chose ne va pas avec ma technique ou ma méthode.
À un niveau élevé, comment procéder pour calculer par programme les normales de surface d'une forme générée? J'utilise Swift / SceneKit sur iOS pour mon code mais une réponse générique est très bien.
J'ai deux tableaux qui représentent ma forme. L'un est un tableau de points 3D qui représente les sommets qui composent la forme. L'autre tableau est une liste d'index du premier tableau qui mappent les sommets en triangles. J'ai besoin de prendre ces données et de générer un troisième tableau qui est un ensemble de normales de surface qui aident à l'éclairage de la forme. (voir SCNGeometrySourceSemanticNormal
dans SceneKit` )
La liste des sommets et des index est toujours différente en fonction des entrées de la classe, donc je ne peux pas pré-calculer ou coder en dur les normales de surface.