Ngành công nghiệp 3D ngày càng áp dụng tiêu chuẩn Mikktspace để tính toán không gian tiếp tuyến cho ánh xạ bình thường và các hiệu ứng khác dựa trên tính toán chính xác và nhất quán của không gian tiếp tuyến từ ứng dụng này sang ứng dụng khác. Blender, xN normal, Unity, Substance Họa sĩ và Unreal Engine chỉ là một số ít tôi có thể nghĩ bây giờ sử dụng Mikttspace. Cá nhân tôi cũng đang cố gắng mã hóa lại các dự án của riêng mình để áp dụng tiêu chuẩn này.
Nhưng có rất ít tài nguyên về cách Mikktspace hoạt động vì đây là một điều tương đối mới. Những tài nguyên ít ỏi có, thường khan hiếm về chi tiết và rất kỹ thuật, không thân thiện với người dùng để hiểu, hoặc giả sử người viết mã có một mức độ kiến thức nhất định, cao hơn một chút so với người mới bắt đầu, những người cần giải thích cẩn thận hơn.
Tôi đang tìm kiếm một lời giải thích rõ ràng về cách Mikktspace hoạt động và cách triển khai nó, với một lời giải thích đơn giản về cách toán học và mã hoạt động theo cách không giới hạn chỉ trong một ngôn ngữ.
Ví dụ, giả sử một lập trình viên có một đối tượng lưới, với một chỉ số các đỉnh, mỗi đỉnh có vị trí, tọa độ bình thường và UV và danh sách các tam giác tham chiếu chỉ số đó.
Ví dụ:
Vertex
: {XYZ NX NY New Zealand ST}VertexIndex
: Một danh sách vềVertex
Triangle
: {V1 V2 V3} (theo thứ tự cuộn đúng cho hướng bình thường)TriangleList
: Một danh sách vềTriangle
Nói một cách đơn giản, làm thế nào người ta sẽ tính toán trên mỗi đỉnh một vectơ tiếp tuyến (TX TY TZ) và vectơ bitangent (BX BY BZ) cho mỗi đỉnh theo cách phù hợp với Mikktspace?