Ho una classe che genera una forma 3D basata sugli input dal codice chiamante. Gli input sono cose come lunghezza, profondità, arco, ecc. Il mio codice genera perfettamente la geometria, tuttavia sto riscontrando problemi nel calcolo delle normali alla superficie. Quando è acceso, la mia forma ha una colorazione / trama molto bizzarra dalle normali superfici errate che vengono calcolate. Da tutte le mie ricerche credo che la mia matematica sia corretta, sembra che qualcosa non vada per la mia tecnica o metodo.
Ad alto livello come si fa a calcolare programmaticamente le normali di superficie per una forma generata? Sto usando Swift / SceneKit su iOS per il mio codice ma una risposta generica va bene.
Ho due array che rappresentano la mia forma. Uno è una matrice di punti 3D che rappresenta i vertici che compongono la forma. L'altro array è un elenco di indici del primo array che mappano i vertici in triangoli. Ho bisogno di prendere quei dati e generare un terzo array che è un insieme di normali di superficie che aiutano l'illuminazione della forma. (vedi SCNGeometrySourceSemanticNormal
in SceneKit` )
L'elenco di vertici e indici è sempre diverso a seconda degli input della classe, quindi non posso pre-calcolare o codificare le normali di superficie.