ฉันมีคลาสที่สร้างรูปร่าง 3 มิติตามอินพุตจากรหัสการโทร อินพุตเป็นสิ่งต่าง ๆ เช่นความยาวความลึกส่วนโค้งและอื่น ๆ รหัสของฉันสร้างรูปทรงเรขาคณิตได้อย่างสมบูรณ์แบบ แต่ฉันพบปัญหาเมื่อคำนวณหาค่ามาตรฐานของพื้นผิว เมื่อส่องสว่างรูปร่างของฉันมีการระบายสี / พื้นผิวที่แปลกประหลาดมากจากบรรทัดฐานของพื้นผิวที่ไม่ถูกต้องที่คำนวณ จากการวิจัยทั้งหมดของฉันฉันเชื่อว่าคณิตศาสตร์ของฉันถูกต้องดูเหมือนว่ามีบางอย่างผิดปกติกับเทคนิคหรือวิธีการของฉัน
ในระดับสูงเราจะคำนวณค่าปกติของพื้นผิวสำหรับรูปร่างที่สร้างขึ้นโดยทางโปรแกรมได้อย่างไร ฉันใช้ Swift / SceneKit บน iOS เป็นรหัสของฉัน แต่คำตอบทั่วไปนั้นใช้ได้
ฉันมีสองอาร์เรย์ที่แสดงถึงรูปร่างของฉัน หนึ่งคืออาร์เรย์ของจุด 3 มิติที่แสดงถึงจุดยอดที่ประกอบเป็นรูปร่าง อาเรย์อีกอันคือรายการดัชนีของอาเรย์แรกที่แมปจุดยอดเป็นรูปสามเหลี่ยม ฉันจำเป็นต้องใช้ข้อมูลนั้นและสร้างอาร์เรย์ลำดับที่ 3 ซึ่งเป็นชุดของบรรทัดฐานพื้นผิวที่ช่วยในการให้แสงสว่างของรูปร่าง (ดูSCNGeometrySourceSemanticNormal
ใน SceneKit` )
รายการของจุดยอดและดัชนีมักจะแตกต่างกันไปขึ้นอยู่กับอินพุตของคลาสดังนั้นฉันจึงไม่สามารถคำนวณล่วงหน้าหรือรหัสยาก ๆ เกี่ยวกับค่ามาตรฐานพื้นผิวได้