Làm cách nào để các công cụ trò chơi 3D kết xuất môi trường 3D thành màn hình 2D?


9

Đối với các trò chơi sprite 2D, tôi có thể hiểu rằng các họa tiết di chuyển trên trục X và Y. Tuy nhiên, đối với trò chơi 3D, làm thế nào để các công cụ trò chơi tính toán làm thế nào để hiển thị môi trường 3D trên màn hình máy tính 2D phẳng?


18
Toán học, rất nhiều đó.
deceleratedcaviar

3
Magic Imps thiết kế vùng đất và sau đó bắn hình ảnh lên màn hình bằng đũa phép.

Math.PI, rất nhiều của nó.
Nick Bedford

Câu trả lời:


10

Các họa tiết 3D có được trục Z mới lưu trữ độ sâu, kích thước tỷ lệ và chuyển động trong mặt phẳng X / Y. Một sprite ở xa hơn có giá trị Z lớn hơn. Bây giờ, chia kích thước của sprite và chuyển động trục X / Y cho trục Z. Như những người khác đã lưu ý, đây là một hình chiếu phối cảnh 3D . Đây là minh họa tốt nhất tôi có thể tìm thấy:

nhập mô tả hình ảnh ở đây

Điều này có ý nghĩa về mặt khái niệm bởi vì những thứ ở xa trông nhỏ hơn. Chuyển động rõ ràng của họ cũng trông nhỏ hơn.

Ngoài ra, các vật thể gần cần được vẽ lên trên các vật thể ở xa. Một lần nữa, điều này có ý nghĩa về mặt khái niệm bởi vì các vật thể ở gần che khuất tầm nhìn của các vật thể phía sau chúng.

Những kỹ thuật này có thể được thực hiện ở cấp độ sprite. Tuy nhiên, đối với phép chiếu thực tế nhất, mỗi sprite có mô hình 3D và được hiển thị ở mức pixel.


2
Sơ đồ là những gì đã cho tôi. Một bưc tranh đang gia ngan lơi noi.
Kim Jong Woo

17

Nó tương tự như cách bạn có thể chụp ảnh 2D về thế giới của chúng ta trên máy ảnh. Môi trường 3D được mô tả theo các tọa độ X, Y và Z, nhưng cuối cùng bạn cần ánh xạ nó tới màn hình 2D chỉ với trục X và Y. Điều này được thực hiện bằng phép chiếu , trong đó mỗi điểm 3D được chiếu lên mặt phẳng chế độ xem 2D.

Nói một cách đơn giản, bạn có thể tưởng tượng các đường chiếu đi từ camera ảo trong không gian 3D đến từng điểm 3D bằng cách đi qua mặt phẳng khung nhìn. Điểm mà một đường chiếu giao nhau với mặt phẳng 2D là hình chiếu của điểm 3D. Trong phép chiếu chính tả các đường chiếu này đều song song; khoảng cách giữa vật thể và máy ảnh không tạo ra sự khác biệt nào cho hình dạng được chiếu. Kiểu trình chiếu này không thực tế nhưng rất hữu ích trong một số trường hợp như vẽ đồ họa 2D bằng công cụ 3D (ví dụ HUD). Loại hình chiếu khác là phép chiếu phối cảnh trong đó các đường này hội tụ làm cho các vật thể ở xa hơn xuất hiện nhỏ hơn và cho kết quả thực tế hơn. Trang này có một số số liệu có thể giúp bạn hình dung quá trình.

Phép chiếu là một trong một số đối tượng biến đổi trải qua trong đường ống đồ họa và thường được thực hiện bằng cách sử dụng ma trận chiếu . Lưu ý rằng mặc dù phép chiếu ngụ ý loại bỏ tọa độ Z, nhưng thực tế, giá trị Z được chuyển đổi vẫn được sử dụng để đo độ sâu màn hình để chúng ta có thể biết được vật thể nào có thể nhìn thấy và vật nào bị các đối tượng khác che khuất. Điều này được gọi là đệm z .


5

Đó là tất cả về chiếu , một thao tác hình học cho phép bạn xác định một không gian từ một không gian khác có kích thước vượt trội (về cơ bản, trong trường hợp của bạn, bạn đang mô tả hình ảnh 2D từ môi trường 3D).

Nói một cách đơn giản, đây là cách các công cụ kết xuất 3D tạo ra một hình ảnh (được cung cấp cảnh 3D & hình chiếu):

Đối với mỗi pixel của hình ảnh kết quả

  • Tính hướng nhìn (theo hình chiếu), về cơ bản, nó là một vectơ 3D
  • Tìm đối tượng gần nhất trong cảnh của bạn được "nhìn thấy" theo hướng này (chỉ cần đoán những đối tượng được giao với vectơ và giữ đối tượng gần nhất)
  • Tính màu của đối tượng này, bạn có màu của pixel!

Tất nhiên đây là một mô hình đơn giản, tôi không nói về các vật thể phản xạ / khúc xạ / mờ của các hiệu ứng đặc biệt như khói ...


2

Ma trận . Hay đúng hơn, rất nhiều toán học ma trận.

Đó là thứ đáng sợ cho những người không quen. Thông thường có ba ma trận 4x4 liên quan đến việc biến một loạt các tọa độ 3D trong không gian thành tọa độ 2D trên màn hình (bao gồm cả độ sâu vào màn hình dưới dạng Z).

Ma trận 3D là một bộ gồm 16 giá trị dấu phẩy động được sắp xếp theo dạng lưới 4 x 4. Các thuật toán được sử dụng để tạo các giá trị cần thiết và sau đó sử dụng phép nhân vectơ ma trận, các số này biến đổi một vectơ 3 chiều (X, Y, Z).

[ 1, 0, 0, 0 ]
[ 0, 1, 0, 0 ]
[ 0, 0, 1, 0 ]
[ 0, 0, 0, 1 ]

Đây là ma trận danh tính . Nó về cơ bản không làm gì cho tọa độ của vectơ.


Mô hình

Đầu tiên là ma trận thế giới hoặc mô hình . Ma trận này lấy các đỉnh trong một mô hình riêng lẻ (chẳng hạn như một cái thùng) được mô hình hóa xung quanh gốc (0, 0, 0) và biến chúng thành tọa độ đỉnh thế giới. Điều này có thể bao gồm việc thu nhỏ đối tượng, xoay xung quanh nguồn gốc của nó và cuối cùng dịch nó sang vị trí của nó trong cảnh.


Lượt xem

Ma trận thứ hai là khung nhìn ma trận . Điều này có các tọa độ thế giới và biến đổi chúng sao cho chúng nằm trong bối cảnh của khung nhìn. Khái niệm về một máy ảnh thường được sử dụng để tạo ra ma trận này.

Máy ảnh thường chứa vectơ vị trí , vectơ chỉ hướng hoặc mục tiêu và vectơ hướng lên . Vectơ lên này mô tả 'spin' của máy ảnh.

nhập mô tả hình ảnh ở đây

Những vectơ được sử dụng để tạo ra những gì được gọi là nhìn vào ma trận.

Ảnh hưởng này tương tự như ma trận thế giới trong thực tế là về cơ bản nó đang xoay và dịch thế giới xung quanh máy ảnh để "định vị" máy ảnh.

Một camera có 10 đơn vị dọc theo trục X sẽ dịch tọa độ thế giới 10 đơn vị theo hướng khác.


Chiếu

Mảnh ghép cuối cùng là ma trận chiếu . Trong một phép chiếu phối cảnh giống như máy ảnh, ma trận biến đổi gần như tọa độ màn hình để tạo ảo giác về phối cảnh với trường nhìn x độ.

Nếu bạn nghĩ về các góc của màn hình (đối với trò chơi 640x480), thì đây là cách chiếu "căn chỉnh" các tọa độ dọc theo trục Z trong tọa độ 2D của màn hình. Đối với phép chiếu chính tả, không có tỷ lệ nào diễn ra dọc theo trục Z vào màn hình. Đối với phối cảnh, đối tượng càng ở xa, nó càng trở nên nhỏ hơn so với phạm vi của màn hình.

nhập mô tả hình ảnh ở đây

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.