Eu tenho uma classe que gera uma forma 3D com base nas entradas do código de chamada. As entradas são coisas como comprimento, profundidade, arco, etc. Meu código gera a geometria perfeitamente, mas estou tendo problemas ao calcular as normais da superfície. Quando iluminada, minha forma apresenta uma coloração / textura muito bizarra a partir das normais de superfície incorretas que estão sendo calculadas. De todas as minhas pesquisas, acredito que minha matemática está correta, parece que há algo errado com minha técnica ou método.
Em um nível alto, como calcular calculadamente as normais da superfície para uma forma gerada? Estou usando o Swift / SceneKit no iOS para o meu código, mas uma resposta genérica está correta.
Eu tenho duas matrizes que representam minha forma. Um é uma matriz de pontos 3D que representa os vértices que compõem a forma. A outra matriz é uma lista de índices da primeira matriz que mapeia os vértices em triângulos. Preciso pegar esses dados e gerar uma terceira matriz que é um conjunto de normais de superfície que ajudam na iluminação da forma. (veja SCNGeometrySourceSemanticNormal
em SceneKit` )
A lista de vértices e índices é sempre diferente, dependendo das entradas da classe, portanto, não posso pré-calcular ou codificar com firmeza as normais da superfície.