Mam klasę, która generuje kształt 3D na podstawie danych wejściowych z kodu wywołującego. Dane wejściowe to między innymi długość, głębokość, łuk itp. Mój kod doskonale generuje geometrię, jednak mam problemy z obliczaniem normalnych powierzchni. Po zapaleniu mój kształt ma bardzo dziwne zabarwienie / teksturę z niepoprawnych obliczanych normalnych powierzchni. Ze wszystkich moich badań uważam, że moja matematyka jest poprawna, wydaje się, że coś jest nie tak z moją techniką lub metodą.
Jak na wysokim poziomie można programowo obliczyć normalne powierzchnie dla wygenerowanego kształtu? Używam Swift / SceneKit na iOS do mojego kodu, ale ogólna odpowiedź jest w porządku.
Mam dwie tablice reprezentujące mój kształt. Jednym z nich jest tablica punktów 3D reprezentująca wierzchołki tworzące kształt. Druga tablica to lista indeksów pierwszej tablicy, która odwzorowuje wierzchołki na trójkąty. Muszę wziąć te dane i wygenerować 3. tablicę, która jest zestawem normalnych powierzchni, które pomagają w oświetleniu kształtu. (patrz SCNGeometrySourceSemanticNormal
w SceneKit` )
Lista wierzchołków i indeksów jest zawsze różna w zależności od danych wejściowych do klasy, więc nie mogę wstępnie obliczyć ani zakodować na stałe normalnych powierzchni.