Nền tảng toán học của đồ họa 3D¶
Điểm, vectơ và hệ tọa độ¶
Một điểm \(\bm{p} \in \mathbb{R}^3\) biểu diễn vị trí, còn vectơ \(\bm{v} \in \mathbb{R}^3\) biểu diễn độ dời hoặc hướng. Về mặt tọa độ chúng đều là bộ ba số, nhưng có vai trò affine khác nhau:
Với \(\bm{u}, \bm{v} \in \mathbb{R}^3\), tích vô hướng
đo góc và phép chiếu. Hai vectơ trực giao khi tích vô hướng bằng \(0\). Tích có hướng
vuông góc với mặt phẳng sinh bởi \(\bm{u}, \bm{v}\) và có độ dài bằng diện tích hình bình hành tương ứng. Chuẩn hóa vectơ khác không cho
Phép chuẩn hóa cần ngưỡng \(\varepsilon\) để tránh chia cho một độ dài gần \(0\).
Không gian affine¶
Không gian affine tách khái niệm điểm khỏi vectơ. Với hai điểm \(P, Q\), hiệu \(Q - P\) là một vectơ; với điểm \(P\) và vectơ \(\bm{v}\), tổng \(P + \bm{v}\) là một điểm. Không có phép cộng hai điểm mang ý nghĩa nội tại.
Một \(m\)-phẳng đi qua \(P_0\) và có các hướng độc lập \(\bm{a}_1, \ldots, \bm{a}_m\) được tham số hóa bởi
Đường thẳng, mặt phẳng và không gian ba chiều lần lượt là các trường hợp \(m = 1, 2, 3\). Biểu diễn này là cơ sở của ray, cạnh, mặt phẳng clipping và các phép giao trong đồ họa.
Các điểm \(P_0, \ldots, P_k\) độc lập affine khi các vectơ \(P_1 - P_0, \ldots, P_k - P_0\) độc lập tuyến tính. Bao affine của chúng gồm các tổ hợp
Nếu thêm điều kiện \(\lambda_i \geqslant 0\), ta nhận được bao lồi. Với ba đỉnh của tam giác, các \(\lambda_i\) chính là tọa độ barycentric; chúng vừa kiểm tra một điểm có nằm trong tam giác vừa nội suy thuộc tính đỉnh.
Mục tiêu affine và đổi hệ tọa độ¶
Một mục tiêu affine gồm gốc \(O\) và một cơ sở \((\bm{e}_1, \ldots, \bm{e}_n)\). Tọa độ \(\bm{x}\) của điểm \(P\) được xác định bởi
Nếu mục tiêu mới có gốc \(O' = O + \bm{b}\) và ma trận \(C\) chứa các vectơ cơ sở mới viết trong cơ sở cũ, thì hai bộ tọa độ liên hệ bởi
Đây là dạng tổng quát của phép đổi model space sang world space hoặc world space sang camera space. Một ánh xạ affine có dạng
Nó bảo toàn đường thẳng, tính song song và tổ hợp affine, nhưng chỉ bảo toàn độ dài và góc khi phần tuyến tính \(A\) là một phép đẳng cự. Ánh xạ được xác định hoàn toàn bởi \(A\) và ảnh của một điểm; hợp hai ánh xạ affine vẫn là ánh xạ affine.
Tọa độ thuần nhất¶
Tịnh tiến không phải phép biến đổi tuyến tính trong \(\mathbb{R}^3\). Ta nhúng không gian affine vào tọa độ thuần nhất:
Khi đó cả tịnh tiến, quay, co giãn và phép chiếu phối cảnh đều có thể biểu diễn bằng ma trận \(4 \times 4\). Với quy ước vectơ cột,
Nếu dùng vectơ hàng thì thứ tự nhân ma trận phải đảo lại. Không được trộn hai quy ước trong cùng một phép tính.
Biến đổi affine cơ bản¶
Ma trận tịnh tiến là
Ma trận co giãn là
Các phép quay quanh ba trục có dạng
Một world transform thường là tích
Với vectơ cột, phép ở bên phải tác động trước: mô hình được co giãn, quay rồi mới tịnh tiến. Nói chung \(RT \neq TR\), nên đổi thứ tự có thể biến một phép tự quay thành phép quay quanh một tâm bên ngoài. Quay quanh điểm \(\bm{c}\) được thực hiện bởi
Góc Euler và quaternion¶
Ba phép quay liên tiếp tạo một biểu diễn góc Euler. Chẳng hạn quy ước \(z\)--\(y\)--\(z\) dùng
Biểu diễn này trực quan nhưng phụ thuộc thứ tự và có thể gặp gimbal lock. Quaternion đơn vị
biểu diễn phép quay góc \(\theta\) quanh trục \(\widehat{\bm{u}}\). Hai phép quay hợp thành bằng phép nhân quaternion; nội suy SLERP cho chuyển động quay đều hơn nội suy trực tiếp các góc Euler.
Biến đổi pháp tuyến¶
Nếu vị trí được biến đổi bởi phần tuyến tính \(A\) của world matrix, pháp tuyến không luôn biến đổi bởi chính \(A\). Để bảo toàn trực giao,
Sau phép biến đổi phải chuẩn hóa lại. Chỉ khi \(A\) là phép quay hoặc co giãn đồng đều mới có thể dùng trực tiếp \(A \bm{n}\).
Mesh tam giác¶
Một bề mặt cong được xấp xỉ bởi triangle mesh. Dữ liệu hình học thường gồm:
vertex buffer chứa vị trí, pháp tuyến, màu, tọa độ texture hoặc tangent;
index buffer mô tả các tam giác bằng chỉ số đỉnh;
topology chỉ cách ghép các chỉ số thành điểm, đoạn hoặc tam giác.
Hình 1 Một hình chữ nhật được chia thành hai tam giác dùng chung hai đỉnh.¶
Thay vì lưu sáu đỉnh lặp, ta lưu \((v_0, v_1, v_2, v_3)\) và dãy chỉ số \((0, 1, 2, 0, 2, 3)\). Thứ tự đỉnh, hay winding order, quyết định hướng pháp tuyến và mặt trước của tam giác.
Với tam giác \((\bm{p}_0, \bm{p}_1, \bm{p}_2)\), một pháp tuyến chưa chuẩn hóa là
Nếu \(\|\bm{n}\|\) gần \(0\), tam giác suy biến và không nên đưa vào các phép tính hình học thông thường.