Làm cách nào để triển khai 3D giả như hiệu ứng méo cho trò chơi cuộn bên 2D?


14

Tôi không chắc chắn về các thuật ngữ thích hợp để tìm kiếm hoặc thậm chí bắt đầu từ đâu mặc dù tôi tưởng tượng đó là một loại hiệu ứng xử lý bài.

Tôi đã từng xem các trò chơi như I Wanna Be The BoshyYou Have To Win the Game quản lý để sửa đổi góc nhìn của các trò chơi 2D để tạo ra hiệu ứng 3D cho chúng (xem hình ảnh bên dưới). Boshy về cơ bản làm cho nó trông giống như bạn đang ở trong một tòa tháp (hình trụ) trong khi Bạn phải thắng trò chơi làm biến dạng hình ảnh để trông giống như bạn đang chơi trên một màn hình CRT cũ, đặc biệt là giao diện hơi tròn.

  • Có một thuật ngữ cho hiệu ứng này?
  • Cách tiêu chuẩn để thực hiện hiệu ứng này (thuật ngữ) là gì?
  • Làm thế nào tôi có thể thực hiện một hiệu ứng như vậy trong một công cụ / khung công tác cấp cao như Unity hoặc XNA / Monogame từ chế độ xem 20.000 feet? (mã chi tiết vui vẻ chấp nhận nhưng không cần thiết - Tôi nhận thấy chi tiết triển khai chính xác có thể khác nhau nhưng chi tiết cấp cao về những gì cần thực hiện sẽ được đánh giá cao)

Tôi muốn trở thành Boshy Tôi muốn trở thành Boshy

Bạn phải thắng trò chơi nhập mô tả hình ảnh ở đây


Vâng. Tôi luôn tò mò muốn biết thuật ngữ chính xác cho kỹ thuật này. Điều tốt nhất tôi có thể nghĩ đến là "hiệu ứng màn hình tv cũ"
Tofu_C giác_Rbur_BlueDragon

Chính xác! Và điều đó chỉ hoạt động cho ví dụ sau
SpartanDovy

Câu trả lời:


7

Điều này có thể được thực hiện như một loại hiệu ứng hậu xử lý. (Khi sử dụng Unity / XNA / Dx / OGL / ...)

Phương pháp hình học

Bắt đầu bằng cách tạo một lưới giống với hiệu ứng méo bạn đang muốn đạt được. (ví dụ: mô hình một nửa hình trụ (hoặc hình nón, hình cầu, khối lập phương, ...), đảm bảo đặt tọa độ kết cấu). Kết xuất trò chơi 2D của bạn như bình thường, nhưng kết quả cuối cùng thành một kết cấu. Sau đó, kết xuất hình học biến dạng với kết cấu bạn vừa tạo. Bạn có thể sử dụng thế giới / chế độ xem / hình chiếu hoặc sửa đổi tọa độ hình học / kết cấu thực tế để kiểm soát cường độ của biến dạng. (hình ảnh 1 cho thấy trò chơi 2D thông thường, hình ảnh 2 cho thấy kết cấu tương tự được chiếu lên một hình cầu)

Ví dụ trò chơi Ví dụ chiếu lên một quả cầu (sử dụng máy xay sinh tố)

Phương pháp bóp méo

Các công cụ xử lý hình ảnh thường cung cấp các hiệu ứng méo có thể mô phỏng hình chiếu (giống như ảo ảnh quang học). Ví dụ: hình ảnh 3 được tạo bằng bộ lọc phình từ Paint.Net

Biến dạng phình.

(Bạn có thể tìm thấy cách triển khai (OpenGL ES 2.0) của hiệu ứng biến dạng này từ dự án GPUImage - xem GPUImageBulgeDistortionFilter)

Tùy thuộc vào việc triển khai, một trong hai phương pháp có thể nhanh hơn hoặc cung cấp kết quả phù hợp hơn với kết quả mong muốn của bạn. Vì cả hai triển khai đều khá đơn giản, bạn có thể thử thực hiện cả hai và xem cái nào phù hợp nhất với bạn.


Câu trả lời tuyệt vời!
Tholle

1
Cả hai đều yêu cầu xử lý cùng một lượng hình ảnh. Việc chiếu sẽ không bao giờ nhanh hơn việc không làm và việc xử lý ảnh cũng tốn kém như vậy. - Phương pháp "Biến dạng" nhanh hơn vì bạn bỏ qua biến đổi đỉnh và rasterization, đồng thời, bạn cũng cho phép trình điều khiển tự do hơn để lặp lại các pixel, trong đó cách tiếp cận đa giác cụ thể hơn về thứ tự vẽ. Cuối cùng, đa giác nắm giữ ít thông tin hơn về hiệu ứng dự định của bạn, đang sử dụng một giải pháp chung nhằm nhấn mạnh phần cứng lọc kết cấu và tạo ra một xấp xỉ thay vì bộ lọc thực.
MickLH

@MickLH: Các đỉnh cho phép chiếu hậu xử lý như vậy có thể được tính ngoại tuyến hoặc khi tải, mang lại một trình tạo bóng đỉnh truyền qua rất rẻ. Đối với bộ lọc phình, một quad toàn màn hình cũng phải được hiển thị và rasterized (trừ khi SpartanD Muff có quyền truy cập vào các shader tính toán) và đối với mỗi pixel, độ lệch phải được tính thay vì được nội suy. Do đó, tôi tin rằng (tùy thuộc vào các công cụ có sẵn và triển khai) cả hai phương pháp có thể nhanh như nhau. Tôi đã cập nhật câu trả lời của tôi, cảm ơn cho đầu vào của bạn.
Miklas
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.