Tại sao tọa độ đồng nhất được sử dụng trong đồ họa máy tính?
Điều gì sẽ là vấn đề nếu tọa độ đồng nhất không được sử dụng trong các phép biến đổi ma trận?
Tại sao tọa độ đồng nhất được sử dụng trong đồ họa máy tính?
Điều gì sẽ là vấn đề nếu tọa độ đồng nhất không được sử dụng trong các phép biến đổi ma trận?
Câu trả lời:
Họ đơn giản hóa và thống nhất toán học được sử dụng trong đồ họa:
Chúng cho phép bạn thể hiện các bản dịch với ma trận.
Chúng cho phép bạn thể hiện sự phân chia theo chiều sâu trong các hình chiếu phối cảnh.
Cái đầu tiên có liên quan đến hình học affine. Cái thứ hai liên quan đến hình học chiếu.
Đó là trong tên: Tọa độ đồng nhất cũng ... đồng nhất. Đồng nhất có nghĩa là một đại diện thống nhất của xoay, dịch, chia tỷ lệ và các biến đổi khác.
Một đại diện thống nhất cho phép tối ưu hóa. Phần cứng đồ họa 3D có thể được chuyên dụng để thực hiện phép nhân ma trận trên ma trận 4 x 4. Nó thậm chí có thể được chuyên môn hóa để nhận biết và lưu vào các phép nhân bằng 0 hoặc 1, bởi vì chúng thường được sử dụng.
Không sử dụng tọa độ đồng nhất có thể làm cho khó sử dụng phần cứng được tối ưu hóa mạnh đến mức tối đa. Bất cứ chương trình nào nhận ra rằng các hướng dẫn tối ưu hóa của phần cứng đều có thể được sử dụng (thường là trình biên dịch nhưng đôi khi mọi thứ phức tạp hơn) đối với tọa độ đồng nhất sẽ gặp khó khăn khi tối ưu hóa cho các biểu diễn khác. Nó sẽ chọn các hướng dẫn ít được tối ưu hóa và do đó không sử dụng tiềm năng của phần cứng.
Như đã có những lời kêu gọi ví dụ: PS4 của Sony có thể thực hiện phép nhân ma trận lớn. Nó tốt đến mức nó đã được bán hết trong một thời gian, bởi vì các cụm của chúng đã được sử dụng thay vì các siêu máy tính đắt tiền hơn. Sony sau đó yêu cầu rằng phần cứng của họ có thể không được sử dụng cho mục đích quân sự. Vâng, siêu máy tính là thiết bị quân sự.
Các nhà nghiên cứu đã sử dụng các card đồ họa để tính toán nhân ma trận của họ ngay cả khi không có đồ họa nào tham gia. Đơn giản là vì chúng có cường độ tốt hơn so với CPU có mục đích chung. Để so sánh các CPU đa lõi hiện đại có thứ tự 16 đường ống (x0,5 hoặc x2 không quan trọng lắm) trong khi GPU có thứ tự 1024 đường ống.
Đó không phải là quá nhiều lõi so với các đường ống cho phép xử lý song song thực tế. Lõi làm việc trên các chủ đề. Chủ đề phải được lập trình rõ ràng. Đường ống làm việc trên cấp độ chỉ dẫn. Các chip có thể song song hướng dẫn ít nhiều.
bổ sung:
tọa độ đồng nhất cũng cho phép biểu diễn vô cực: trong 3D, nghĩa là điểm ở vô cực theo hướngx,y,z. Thông thường, các nguồn sáng ở vị trí hữu hạn hoặc vô hạn có thể được biểu diễn theo cùng một cách.
Về chuyển đổi phối cảnh, nó thậm chí còn cho phép nội suy chính xác mà không bị biến dạng phối cảnh (trái với phần cứng đồ họa ban đầu trên PC).
Theo sở thích cá nhân, tôi luôn kiêng (khi có thể) sử dụng tọa độ đồng nhất và ưa thích công thức Cartesian đơn giản.
Lý do chính là thực tế là các tọa độ đồng nhất sử dụng 4 mục tầm thường trong ma trận biến đổi (0, 0, 0, 1), liên quan đến việc lưu trữ và tính toán vô dụng (cũng là chi phí chung của các thói quen tính toán ma trận đa năng được "mặc định" sử dụng trong trường hợp này).
Nhược điểm là bạn cần cẩn thận hơn khi viết các phương trình và mất hỗ trợ của lý thuyết ma trận, nhưng cho đến nay tôi vẫn sống sót.
plain Cartesian formulation
hoặc liên kết đến một tài nguyên mô tả việc sử dụng nó trong đồ họa 3D không?
w
đâu?
Các tính toán trong tọa độ affine thường đòi hỏi sự phân chia, tốn kém so với phép cộng hoặc phép nhân. Người ta thường không cần phân chia khi sử dụng tọa độ chiếu.
Sử dụng tọa độ chiếu (và nói chung hơn, hình học chiếu) cũng có xu hướng loại bỏ các trường hợp đặc biệt, làm cho mọi thứ đơn giản và thống nhất hơn.