Tôi có một lớp tạo hình dạng 3D dựa trên các đầu vào từ mã gọi. Các đầu vào là những thứ như chiều dài, độ sâu, cung, v.v ... Mã của tôi tạo ra hình học một cách hoàn hảo, tuy nhiên tôi đang gặp rắc rối khi tính toán các quy tắc bề mặt. Khi được thắp sáng, hình dạng của tôi có màu sắc / kết cấu rất kỳ quái từ các quy tắc bề mặt không chính xác đang được tính toán. Từ tất cả các nghiên cứu của tôi, tôi tin rằng toán học của tôi là chính xác, có vẻ như có gì đó không đúng với kỹ thuật hoặc phương pháp của tôi.
Ở mức độ cao, làm thế nào để người ta đi lập trình tính toán các quy tắc bề mặt cho một hình dạng được tạo ra? Tôi đang sử dụng Swift / SceneKit trên iOS cho mã của mình nhưng một câu trả lời chung chung là ổn.
Tôi có hai mảng đại diện cho hình dạng của tôi. Một là một mảng các điểm 3D đại diện cho các đỉnh tạo nên hình dạng. Mảng khác là một danh sách các chỉ mục của mảng đầu tiên ánh xạ các đỉnh thành hình tam giác. Tôi cần lấy dữ liệu đó và tạo ra một mảng thứ 3 là một tập hợp các quy tắc bề mặt hỗ trợ cho việc chiếu sáng của hình dạng. (xem SCNGeometrySourceSemanticNormal
trong CảnhKit` )
Danh sách các đỉnh và chỉ mục luôn khác nhau tùy thuộc vào các đầu vào của lớp vì vậy tôi không thể tính toán trước hoặc mã cứng các quy tắc bề mặt.