У мене є клас, який генерує 3D-форму на основі входів з коду виклику. Вхід - такі речі, як довжина, глибина, дуга і т. Д. Мій код ідеально генерує геометрію, однак у мене виникають проблеми при розрахунку нормальних показників поверхні. При освітленні моя форма має дуже химерне забарвлення / текстуру від неправильних нормальних поверхонь, які обчислюються. З усіх моїх досліджень я вважаю, що моя математика є правильною, здається, що з моєю технікою чи методом щось не так.
Як на високому рівні можна програматично обчислити поверхневі норми для сформованої форми? Я використовую Swift / SceneKit на iOS для свого коду, але загальна відповідь чудова.
У мене є два масиви, які представляють мою форму. Один - це масив 3D-точок, який представляє вершини, що складають форму. Інший масив - це перелік індексів першого масиву, які відображають вершини в трикутники. Мені потрібно взяти ці дані та створити 3-й масив, який представляє собою набір поверхневих нормалів, які допомагають у освітленні форми. (див. SCNGeometrySourceSemanticNormal
у SceneKit` )
Список вершин та індексів завжди різний залежно від входів до класу, тому я не можу заздалегідь обчислити або жорстко зафіксувати поверхневі нормали.