2012-02-21 31 views
5

Lúc đầu, tôi tự hỏi tại sao NDC nằm trong khoảng từ -1 đến 1, thay vì từ 0 đến 1. Tôi cho rằng có thể có nguồn gốc ở giữa là hữu ích cho một cái gì đó.Tại sao hệ thống Tọa độ thiết bị được chuẩn hóa thuận tay trái?

Nhưng tại sao lại sử dụng hệ tọa độ thuận tay trái?

Có thể chỉ để giá trị Z cao hơn đối với các đối tượng xa hơn không? Đó sẽ là một lý do đủ tốt cho tôi.

+0

Tôi không hiểu làm thế nào một nguồn gốc trung tâm có nghĩa là nó là "thuận tay trái" ... –

+0

Tôi không bao giờ ngụ ý điều đó. Xem tại đây: http://www.songho.ca/opengl/gl_projectionmatrix.html Đọc lại câu hỏi của tôi. –

+1

Tại sao hệ thống thuận tay phải lại tốt hơn? – cmannett85

Trả lời

11

Nhưng tại sao lại sử dụng hệ tọa độ thuận tay trái?

Hãy thêm "theo mặc định" vào câu hỏi đó. Bởi vì tất cả những gì cần thiết để thay đổi nó là glDepthRange(1.0f, 0.0f); và bây giờ bạn đã thuận tay phải. Và vâng, đó là cú pháp GL hoàn toàn hợp pháp; chưa bao giờ có giới hạn rằng phạm vi gần z nhỏ hơn phạm vi xa z.

Tại sao nó thuận tay trái theo mặc định? Có lẽ ai đó trên ARB thích nó theo cách đó. Có thể ai đó trên ARB thích tăng độ sâu thay vì giảm, và hướng góc dưới bên trái làm cho điều đó là cần thiết. Có lẽ bởi vì tiền thân của OpenGL, IRIX GL, đã làm theo cách này và ARB không thấy cần phải thay đổi nó.

Lý do cho điều này là không quan trọng; sự thuận tiện hoàn toàn là một sự thuận tiện phi lý. Ở một số nơi, thuận tay phải có ý nghĩa. Ở những người khác, thuận tay trái có ý nghĩa. Và kể từ khi nó được thay đổi tầm thường, chỉ cần sử dụng những gì làm việc cho bạn.

Sau đó, nó sẽ phù hợp với mọi thứ khác.

Nhất quán với điều gì khác là mọi thứ khác? Tất cả các công cụ chức năng cố định đã bị xóa?

Biến đổi khung nhìn tất cả được thực hiện bởi OpenGL trong nội bộ, nơi không ai có thể nhận được nó. Bạn thậm chí không cung cấp ma trận; bạn chỉ cung cấp chế độ xem và phạm vi chiều sâu. Vì vậy, từ quan điểm của một người sử dụng GL cố định chức năng, tất cả mọi thứ thực sự là thuận tay phải.

Thời gian duy nhất mà tay cầm thậm chí còn xuất hiện là khi giao dịch trực tiếp với các trình đổ bóng đỉnh, nơi bạn phải biết được độ nhạy của không gian clip là gì. Và trong trường hợp đó, sự thay đổi trong tay là một chức năng đơn giản của phép chiếu phối cảnh phủ nhận Z. Hoặc, nếu bạn thích tọa độ thuận tay trái, phép chiếu phối cảnh không phủ nhận Z. Hoặc một lần nữa, chỉ cần đảo ngược glDepthRange và bây giờ bạn thuận tay phải.

7

Nhưng tại sao lại sử dụng hệ tọa độ thuận tay trái?

Để tăng khoảng cách từ mặt phẳng chiếu trong bản đồ hướng xem để tăng giá trị của bộ đệm độ sâu.

Có thể chỉ để giá trị Z cao hơn đối với các đối tượng xa hơn không? Đó sẽ là một lý do đủ tốt cho tôi.

Vâng, đó chính xác là lý do tại sao theo cách đó.

0

Đoán sự thay đổi về chuyển giao được sở hữu với cách thẻ đồ họa diễn giải giá trị z.Giá trị z lớn hơn -> độ sâu lớn hơn. Sự thay đổi có ý nghĩa của bàn giao có thể được thực hiện bởi ma trận chiếu mà không cần thêm chi phí. Thay đổi nó sau này sẽ thêm một bước tính toán bổ sung.

Các vấn đề liên quan