Tengo una clase que genera una forma 3D basada en las entradas del código de llamada. Las entradas son cosas como longitud, profundidad, arco, etc. Mi código genera la geometría perfectamente, sin embargo, me encuentro con problemas al calcular las normales de superficie. Cuando está iluminado, mi forma tiene una coloración / textura muy extraña de las normales de superficie incorrectas que se están calculando. De toda mi investigación, creo que mis matemáticas son correctas, parece que algo está mal con mi técnica o método.
En un nivel alto, ¿cómo se hace para calcular mediante programación las normales de superficie para una forma generada? Estoy usando Swift / SceneKit en iOS para mi código, pero una respuesta genérica está bien.
Tengo dos matrices que representan mi forma. Uno es una matriz de puntos 3D que representa los vértices que componen la forma. La otra matriz es una lista de índices de la primera matriz que mapea los vértices en triángulos. Necesito tomar esos datos y generar una tercera matriz que es un conjunto de normales de superficie que ayudan a iluminar la forma. (ver SCNGeometrySourceSemanticNormal
en SceneKit` )
La lista de vértices e índices siempre es diferente dependiendo de las entradas a la clase, por lo que no puedo calcular previamente ni codificar las normales de la superficie.