2011-07-12 17 views
9

Tôi hiện đang lập trình một công cụ 3D nhỏ, và tôi đã tự hỏi tại sao tôi nên đi vào các tọa độ không gian mắt trong bộ đổ bóng. Để làm được điều đó, tôi phải đặt ma trận máy ảnh của mình trong bộ đồng phục để chuyển đổi các vị trí ánh sáng trong tọa độ mắt và một ma trận không có camera để đặt các hướng ánh sáng trong tọa độ mắt. Tại sao mọi người sử dụng các tọa độ này? Tôi không thực sự thấy bất kỳ lợi thế nào, vì vậy nếu bạn có thể giúp tôi hiểu lựa chọn này, tôi sẽ biết ơn. Cảm ơn :)tại sao chúng ta nên đi vào các tọa độ không gian mắt trong giai đoạn phân đoạn trong đường ống OpenGL?

Trả lời

7

Có nhiều lý do mắt không gian được sử dụng:

  1. Đó là thuận tiện. Đó là một không gian được xác định rõ ràng, và một cái mà bạn tính toán trên con đường chuyển đổi vị trí.
  2. Nó có quy mô tương tự như không gian thế giới, nhưng không có vấn đề về không gian thế giới. Không gian mắt luôn luôn (tương đối) gần bằng không (vì mắt là 0), do đó, nó là một không gian hợp lý để có ma trận biến đổi rõ ràng. Quy mô là quan trọng, bởi vì bạn có thể cung cấp khoảng cách (như các thuật ngữ giảm ánh sáng) được tính toán trong không gian thế giới. Khoảng cách không thay đổi trong không gian mắt.
  3. Tuy nhiên, bạn cần chuyển đổi nó thành không gian tuyến tính. Làm ánh sáng, đặc biệt là với sự chú ý, trong một không gian phi tuyến tính như không gian sau chiếu là ... khó khăn. Vì vậy, bạn sẽ phải cung cấp các tiêu chuẩn và vị trí trong một số loại không gian tuyến tính, vì vậy nó cũng có thể là không gian mắt.
  4. Nó yêu cầu các biến đổi ít nhất. Không gian mắt là không gian ngay trước khi phép chiếu chuyển đổi. Nếu bạn phải đảo ngược chuyển đổi thành không gian tuyến tính (ví dụ như hiển thị trả chậm), không gian mắt là không gian con mắt yêu cầu hoạt động ít nhất.
4

Bạn không phải cung cấp ma trận máy ảnh cho trình đổ bóng và thực hiện chuyển đổi vị trí và hướng ánh sáng tại đó. Trên thực tế nó là khá kém hiệu quả để làm điều đó theo cách đó, kể từ khi bạn đang làm các hoạt động rất giống nhau trên cùng một con số một lần nữa và một lần nữa cho mỗi đỉnh.

Chỉ cần chuyển đổi vị trí ánh sáng và hướng bên CPU và cung cấp các thông số ánh sáng được chuyển đổi dễ dàng cho trình đổ bóng. Tuy nhiên tính toán ánh sáng vẫn còn ngắn gọn hơn trong không gian mắt, đặc biệt là nếu ánh xạ bình thường có liên quan. Nhưng bạn đã biến đổi mọi thứ thành không gian mắt, vì các chuẩn không được biến đổi bởi biến đổi phối cảnh (mặc dù các vị trí đỉnh có thể được chuyển đổi thành không gian clip trực tiếp).

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