Saya memiliki kelas yang menghasilkan bentuk 3D berdasarkan input dari kode panggilan. Input adalah hal-hal seperti panjang, kedalaman, busur, dll. Kode saya menghasilkan geometri dengan sempurna, namun saya mengalami kesulitan ketika menghitung normals permukaan. Saat dinyalakan, bentuk saya memiliki pewarnaan / tekstur yang sangat aneh dari permukaan normal yang salah yang sedang dihitung. Dari semua penelitian saya, saya yakin matematika saya benar, sepertinya ada yang salah dengan teknik atau metode saya.
Pada level yang tinggi, bagaimana cara menghitung secara normal permukaan normal untuk bentuk yang dihasilkan? Saya menggunakan Swift / SceneKit di iOS untuk kode saya tetapi jawaban umum baik-baik saja.
Saya memiliki dua array yang mewakili bentuk saya. Salah satunya adalah array titik 3D yang mewakili simpul yang membentuk bentuk. Array lain adalah daftar indeks dari array pertama yang memetakan simpul menjadi segitiga. Saya perlu mengambil data itu dan menghasilkan array ke-3 yang merupakan kumpulan normals permukaan yang membantu dalam pencahayaan bentuk. (lihat SCNGeometrySourceSemanticNormal
di SceneKit` )
Daftar simpul dan indeks selalu berbeda tergantung pada input ke kelas jadi saya tidak bisa pra-menghitung atau hard code permukaan normal.