Tại sao ?
Bởi vì, Máy ảnh đại diện cho chế độ xem chiếu.
Nhưng trong trường hợp Camera 3D (Camera ảo), camera sẽ di chuyển thay vì thế giới. Tôi đã thực hiện một lời giải thích chi tiết sau câu trả lời này.
Hiểu về mặt toán học
Chế độ xem chiếu di chuyển xung quanh không gian và thay đổi hướng của nó. Điều đầu tiên cần chú ý là hình chiếu mong muốn trên màn hình không thay đổi theo hướng xem.
Vì lý do này, chúng tôi chuyển đổi những thứ khác để có được hình chiếu mong muốn.
Hiểu từ http://opengl.org
Để xuất hiện việc di chuyển camera, ứng dụng OpenGL của bạn phải di chuyển cảnh với sự đảo ngược của chuyển đổi camera. nơi OpenGL có liên quan, không có máy ảnh. Cụ thể hơn, máy ảnh luôn được đặt ở tọa độ không gian mắt (0, 0, 0)
Hiểu từ http://open.gl
Cũng muốn chia sẻ các dòng sau từ Xem phần ma trận của http://open.gl/transformations
Để mô phỏng một biến đổi máy ảnh, bạn thực sự phải biến đổi thế giới với nghịch đảo của biến đổi đó. Ví dụ: nếu bạn muốn di chuyển máy ảnh lên, thay vào đó bạn phải di chuyển thế giới xuống.
Hiểu theo quan điểm
Trong thế giới thực, chúng ta thấy mọi thứ theo cách gọi là "phối cảnh".
Phối cảnh đề cập đến khái niệm rằng các vật thể ở xa hơn dường như nhỏ hơn các vật thể gần bạn hơn. Phối cảnh cũng có nghĩa là nếu bạn đang ngồi giữa một con đường thẳng, bạn thực sự thấy biên giới của con đường là hai đường hội tụ.
Đó là viễn cảnh. Phối cảnh là rất quan trọng trong các dự án 3D. Không có phối cảnh, thế giới 3D không giống như thật.
Mặc dù điều này có vẻ tự nhiên và rõ ràng, nhưng điều quan trọng là phải xem xét rằng khi bạn tạo kết xuất 3D trên máy tính, bạn đang cố gắng mô phỏng thế giới 3D trên màn hình máy tính, đó là bề mặt 2D.
Hãy tưởng tượng rằng đằng sau màn hình máy tính có một khung cảnh 3D thực sự và bạn đang xem nó qua "kính" của màn hình máy tính. Sử dụng phối cảnh, mục tiêu của bạn là tạo mã hiển thị những gì được "chiếu" trên "kính" màn hình này như thể có thế giới 3D thực sự đằng sau màn hình này. Nhắc nhở duy nhất là thế giới 3D này không có thật, nó chỉ là mô phỏng toán học của thế giới 3D.
Vì vậy, khi sử dụng kết xuất 3D để mô phỏng một cảnh trong 3D và sau đó chiếu cảnh 3D lên bề mặt 2D của màn hình của bạn, quá trình này được gọi là chiếu phối cảnh.
Bắt đầu bằng cách hình dung trực giác những gì bạn muốn đạt được. Nếu một đối tượng gần hơn với người xem, đối tượng phải có vẻ lớn hơn. Nếu đối tượng ở xa hơn, nó phải có vẻ nhỏ hơn. Ngoài ra, nếu một đối tượng đang di chuyển ra khỏi người xem, theo một đường thẳng, bạn muốn nó hội tụ về phía giữa màn hình, khi nó di chuyển ra xa hơn.
Dịch phối cảnh thành toán
Khi bạn xem hình minh họa trong hình dưới đây, hãy tưởng tượng rằng một đối tượng được định vị trong cảnh 3D của bạn. Trong thế giới 3D, vị trí của đối tượng có thể được mô tả là xW, yW, zW, đề cập đến một hệ tọa độ 3D có gốc tọa độ tại điểm mắt. Đó là nơi đối tượng thực sự được định vị, trong khung cảnh 3D ngoài màn hình.
Khi người xem theo dõi đối tượng này trên màn hình, đối tượng 3D được "chiếu" đến vị trí 2D được mô tả là xP và yP, tham chiếu hệ tọa độ 2D của màn hình (mặt phẳng chiếu).
Để đưa các giá trị này vào một công thức toán học, tôi sẽ sử dụng hệ tọa độ 3D cho tọa độ thế giới, trong đó trục x chỉ sang phải, y chỉ lên và các điểm z dương bên trong màn hình. Nguồn gốc 3D đề cập đến vị trí của mắt người xem. Vì vậy, kính của màn hình nằm trên mặt phẳng trực giao (ở góc phải) với trục z, tại một số z mà tôi sẽ gọi zProj.
Bạn có thể tính toán các vị trí được chiếu xP và yP, bằng cách chia các vị trí thế giới xW và yW, cho zW, như sau:
xP = K1 * xW / zW yP
= K2 * yW / zW
K1 và K2 là các hằng số có nguồn gốc từ các yếu tố hình học như tỷ lệ khung hình của mặt phẳng chiếu (khung nhìn của bạn) và "trường nhìn" của mắt bạn, có tính đến mức độ của góc nhìn rộng.
Bạn có thể thấy cách biến đổi này mô phỏng phối cảnh. Các điểm gần hai bên của màn hình được đẩy về phía trung tâm khi khoảng cách từ mắt (zW) tăng lên. Đồng thời, các điểm gần trung tâm (0,0) ít bị ảnh hưởng hơn bởi khoảng cách từ mắt và vẫn gần trung tâm.
Phân chia theo z này là "phân chia phối cảnh" nổi tiếng.
Bây giờ, hãy xem xét rằng một đối tượng trong cảnh 3D được định nghĩa là một chuỗi các đỉnh. Vì vậy, bằng cách áp dụng loại biến đổi này cho tất cả các đỉnh của hình học, bạn có thể đảm bảo rằng vật thể sẽ co lại một cách hiệu quả khi nó ở xa điểm mắt hơn.
Các trường hợp quan trọng khác
- Trong trường hợp Máy ảnh 3D (Máy ảnh ảo), máy ảnh sẽ di chuyển thay vì thế giới.
Để hiểu rõ hơn về máy ảnh 3D, hãy tưởng tượng bạn đang quay một bộ phim. Bạn phải thiết lập một cảnh mà bạn muốn quay và bạn cần một máy ảnh. Để có được cảnh quay, bạn sẽ đi lang thang qua cảnh bằng máy ảnh của mình, chụp các đối tượng trong cảnh từ các góc và góc nhìn khác nhau.
Quá trình quay phim tương tự xảy ra với một máy ảnh 3D. Bạn cần một camera "ảo", có thể đi lang thang xung quanh cảnh "ảo" mà bạn đã tạo.
Hai phong cách chụp phổ biến liên quan đến việc quan sát thế giới qua đôi mắt của nhân vật (còn được gọi là máy ảnh của người thứ nhất) hoặc hướng máy ảnh vào nhân vật và giữ chúng trong tầm nhìn (được gọi là máy ảnh của người thứ ba).
Đây là tiền đề cơ bản của máy ảnh 3D: máy ảnh ảo mà bạn có thể sử dụng để chuyển vùng xung quanh cảnh 3D và hiển thị cảnh quay từ một góc nhìn cụ thể.
Hiểu không gian thế giới và xem không gian
Để mã hóa loại hành vi này, bạn sẽ hiển thị nội dung của thế giới 3D theo quan điểm của máy ảnh, không chỉ từ quan điểm hệ thống tọa độ thế giới hoặc từ một số quan điểm cố định khác.
Nói chung, một cảnh 3D chứa một tập các mô hình 3D. Các mô hình được định nghĩa là một tập hợp các đỉnh và hình tam giác, được tham chiếu đến hệ tọa độ riêng của chúng. Không gian trong đó các mô hình được xác định được gọi là không gian mô hình (hoặc cục bộ).
Sau khi đặt các đối tượng mô hình vào cảnh 3D, bạn sẽ chuyển đổi các đỉnh của các mô hình này bằng ma trận "biến đổi thế giới". Mỗi đối tượng có ma trận thế giới riêng xác định vị trí của đối tượng trên thế giới và cách định hướng.
Hệ thống tham chiếu mới này được gọi là "thế giới không gian (hay không gian toàn cầu). Một cách đơn giản để quản lý nó là liên kết một ma trận biến đổi thế giới với từng đối tượng.
Để thực hiện hành vi của máy ảnh 3D, bạn sẽ cần thực hiện các bước bổ sung. Bạn sẽ tham khảo thế giới, không phải đến thế giới, mà là hệ thống tham chiếu của chính máy ảnh 3D.
Một chiến lược tốt liên quan đến việc coi máy ảnh là một vật thể 3D thực tế trong thế giới 3D. Giống như bất kỳ đối tượng 3D nào khác, bạn sử dụng ma trận "biến đổi thế giới" để đặt máy ảnh ở vị trí và hướng mong muốn trong thế giới 3D. Ma trận biến đổi thế giới máy ảnh này biến đổi đối tượng máy ảnh từ góc quay ban đầu, hướng về phía trước (dọc theo trục z), sang vị trí thế giới thực (xc, yc, zc) và xoay vòng thế giới.
Hình dưới đây cho thấy mối quan hệ giữa hệ tọa độ Thế giới (x, y, z) và hệ tọa độ Xem (máy ảnh) (x ', y', z ').