Mục đích của Ma trận chiếu dạng xem mô hình


102

Chúng ta đang sử dụng Ma trận Chiếu của Chế độ xem Mô hình cho những mục đích nào? Tại sao các trình đổ bóng yêu cầu Ma trận Chiếu của Chế độ xem Mô hình?


12
Chỉ cần xem liên kết này: songho.ca/opengl/gl_transform.html
iKushal

3
Tôi đã đề xuất mở một trang Stack Exchange dành riêng cho Đồ họa Máy tính và chọn câu hỏi này làm câu hỏi ví dụ . Theo dõi computergraphics.stackexchange.com nếu bạn muốn thấy trang này được khởi chạy!
wip 10/1213

Câu trả lời:


196

Ma trận mô hình, khung nhìn và phép chiếu là ba ma trận riêng biệt. Lập mô hình bản đồ từ không gian tọa độ cục bộ của một đối tượng vào không gian thế giới, góc nhìn từ không gian thế giới sang không gian máy ảnh, phép chiếu từ máy ảnh lên màn hình.

Nếu bạn tổng hợp cả ba, bạn có thể sử dụng một kết quả để ánh xạ tất cả các cách từ không gian đối tượng đến không gian màn hình, giúp bạn có thể tìm ra những gì bạn cần chuyển sang giai đoạn tiếp theo của một đường dẫn có thể lập trình từ các vị trí đỉnh đến.

Trong các đường ống chức năng cố định cũ, bạn sẽ áp dụng mô hình và chế độ xem cùng nhau, sau đó tính toán ánh sáng bằng cách sử dụng một kết quả khác bắt nguồn từ chúng (với một số bản sửa lỗi để ví dụ: chuẩn vẫn là đơn vị chiều dài ngay cả khi bạn đã áp dụng một số tỷ lệ cho đối tượng ), sau đó áp dụng phép chiếu. Bạn có thể thấy điều đó được phản ánh trong OpenGL, không bao giờ phân tách mô hình và ma trận xem - giữ chúng dưới dạng một ngăn xếp ma trận chế độ xem mô hình duy nhất. Do đó, đôi khi bạn cũng thấy điều đó được phản ánh trong bộ đổ bóng.

Vì vậy: ma trận chiếu chế độ xem mô hình cấu thành thường được sử dụng bởi các trình đổ bóng để ánh xạ từ các đỉnh bạn đã tải cho mỗi mô hình lên màn hình. Nó không bắt buộc, có rất nhiều cách để đạt được điều tương tự, nó chỉ là bình thường vì nó cho phép tất cả các phép biến đổi tuyến tính có thể có. Do đó, một phiên bản ít sáng tác hơn của nó cũng là tiêu chuẩn trong thế giới đường ống cố định cũ của các bạn.


3
vì vậy đối với một số đối tượng (mắt lưới), chúng ta cần một số ma trận modelView, phải không?
Yuriy Vikulov

5
Giả sử chúng có thể di chuyển độc lập hoặc được định vị riêng thì có. Vì vậy, đó là cách phổ biến nhất để tiến hành - chuyển modelView hoặc projectorModelView làm đồng nhất cho chương trình đổ bóng, sau khi thiết lập nó cho mô hình hiện tại trên CPU.
Tommy

Xin chào Tommy, bạn có thể đề xuất bất kỳ mã mẫu nào cho chức năng xoay trong Opengl Es2.0 trong Android bằng Ma trận chiếu chế độ xem mô hình này nếu có thể không. Tôi tham khảo nhiều hơn liên kết, tôi không thể nhận được bất kỳ rõ ràng idea.if bất kỳ phương tiện mẫu mã, dễ dàng của mình để hiểu cho tôi ..
harikrishnan

1
Tôi có một câu hỏi. Nếu openGL sử dụng ma trận MV làm một và nếu chúng ta đi từ không gian camera sang không gian thế giới, chúng ta sẽ cần nghịch đảo (ma trận chiếu * ma trận xem) * (vị trí con trỏ) nhưng nếu chế độ xem mô hình là một ma trận tổng hợp. làm thế nào để chúng ta tách mô hình và ma trận xem để tôi có thể sử dụng ma trận xem cho phép tính đó. Vì vậy, tôi cần phải giữ chúng riêng biệt?
Evren Bingøl,

@ EvrenBingøl Bạn đã có câu trả lời cho mình chưa? Tôi đã tách riêng mô hình và ma trận xem của mình, nhưng tôi muốn biết câu trả lời thực tế cho câu hỏi của bạn nếu tôi có nên tiếp tục tách riêng nó hay không.
tom_mai78101

9

Vì ma trận là tiện lợi. Ma trận giúp chuyển đổi vị trí / hướng đối với các không gian khác nhau (Một không gian có thể được xác định bởi 3 trục vuông góc và một điểm gốc).

Đây là một ví dụ từ một cuốn sách được chỉ định bởi @ Legends2k trong nhận xét.

Các cư dân của Cartesia sử dụng bản đồ thành phố của họ với nguồn gốc tập trung khá hợp lý ở trung tâm thị trấn và các trục hướng dọc theo các điểm chính của la bàn. Cư dân của Dyslexia sử dụng một bản đồ thành phố của họ với tọa độ tập trung tại một điểm tùy ý và các trục chạy theo một số hướng tùy ý có lẽ là một ý tưởng hay vào thời điểm đó. Công dân của cả hai thành phố đều khá hài lòng với bản đồ tương ứng của họ, nhưng Kỹ sư Giao thông Vận tải Nhà nước được giao nhiệm vụ điều hành ngân sách cho đường cao tốc đầu tiên giữa Cartesia và Dyslexia cần một bản đồ hiển thị chi tiết của cả hai thành phố, do đó giới thiệu tọa độ thứ ba hệ thống vượt trội hơn anh ta, mặc dù không nhất thiết phải hơn bất kỳ ai khác.

Đây là một ví dụ khác,

Giả sử rằng bạn đã tạo một đối tượng ô tô trong trò chơi với các vị trí đỉnh của nó bằng cách sử dụng tọa độ thế giới. Giả sử bạn phải sử dụng chính chiếc xe này trong một số trò chơi khác ở một thế giới hoàn toàn khác, bạn phải xác định lại các vị trí và các phép tính sẽ trở nên phức tạp. Điều này là do bạn một lần nữa phải tính toán các vị trí của cửa sổ, mui xe, đèn pha, bánh xe, v.v. trong xe đối với thế giới mới.

Xem video này để hiểu các khái niệm về mô hình, chế độ xem và phép chiếu. (Rất khuyến khích)

Sau đó, hãy xem điều này để hiểu cách các đỉnh trong thế giới được biểu diễn dưới dạng Ma trận và cách chúng được biến đổi.


Nếu bạn suy nghĩ sâu sắc về nó, bạn sẽ nhận ra rằng mặc dù sự biến đổi dựa trên điểm gốc của một đối tượng (tức là điểm đơn), tất cả các đỉnh của đối tượng (lưới / mô hình chính thức) sẽ trải qua phép biến đổi tức là tất cả 1000 đỉnh sẽ được nhân lên bởi ma trận mô hình. Do đó, quan điểm của bạn không được hình thành tốt. Ma trận mô hình chỉ đơn giản là ma trận biến đổi các đỉnh trong không gian mô hình sang không gian thế giới. Không có lợi ích về hiệu suất ở đây, nó chỉ là sự tiện lợi.
Legends2k

Nếu vậy, tại sao chúng không chỉ đại diện cho mọi điểm trong một không gian 3D? Nên có những lợi ích khi bạn sử dụng các sản phẩm của một cảnh này đến cảnh khác mà có thể là một đầu vào khác cảnh di chuyển :)
cegprakash

1
Chúng không đại diện cho tất cả các đỉnh trong một không gian vì nó thuận tiện khi làm việc trong không gian tương đối hơn là trong một không gian lớn hơn, như thế giới. Giả sử một rô bốt, khi được lệnh di chuyển về phía trước 2 mét, làm nó bằng mắt của nó phù hợp với nó hơn là xác định vị trí trung tâm của thế giới, sau đó tính toán các tọa độ kết quả chính xác.
Legends2k

Tôi nghĩ bạn đúng .. Dù sao thì trình đổ bóng phân mảnh sẽ được gọi cho mỗi pixel và chúng tôi sẽ thực hiện phép nhân ma trận cho mỗi pixel trong trường hợp các mắt lưới phức tạp. : |
cegprakash

2
Trong bộ đổ bóng phân mảnh chỉ có tính toán ánh sáng / màu sắc được thực hiện, vào thời điểm dữ liệu đến bộ đổ bóng phân mảnh, tất cả các tính toán vị trí đã hoàn tất (tức là trong bộ đổ bóng đỉnh); một lời giải thích tốt hơn về lý do tại sao sử dụng nhiều hệ tọa độ là ở đây . Cuốn sách này là một nguồn tài nguyên toán học trò chơi 3D tuyệt vời. Chương này giống như một bản PDF mẫu từ trang web của cuốn sách .
Legends2k
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.