Làm thế nào để tạo ra chất lượng cao và hiệu quả cổng thông tin nhanh?


9

EDIT: Vì vậy, tôi đã nhận được hiệu ứng hình ảnh cổng thông tin hoạt động mà không có hiệu suất, và tôi đã thiết lập vật lý với các vật thể cứng nhắc di chuyển qua các cổng một cách liền mạch và các đối tượng có bộ điều khiển nhân vật di chuyển liền mạch. Điều duy nhất tôi đang cố gắng tìm ra bây giờ là pha trộn hai chế độ xem camera để có được hiệu ứng chuyển đổi người đầu tiên thích hợp. Có ý tưởng nào về cách tôi pha trộn hai thứ đó không? Tôi đang suy nghĩ điều gì đó bằng cách sử dụng shader chỉ độ sâu hoặc chỉnh sửa khung nhìn được chuẩn hóa. Vấn đề chính của tôi là tính toán thời gian thực và với các góc.

Vì vậy, tôi đã làm việc để tạo hiệu ứng cổng thông tin trong Unity3D. Rõ ràng tôi đã lấy Cổng thông tin của Valve như một ảnh hưởng lớn để lập trình điều này. Hiện tại tôi chỉ đơn giản là sử dụng kết xuất đồ họa của máy ảnh để có được hiệu ứng đồ họa, và sau đó một số mã để thực hiện phần còn lại. Vấn đề là ở 2048x2048, nó trông có chất lượng cao như Portal, nhưng gây ra tổn thất FPS nặng nề. Để giải quyết vấn đề này, tôi phải giảm chất lượng kết cấu hoặc số lần tôi cập nhật kết cấu.

Valve đã hoàn thành hiệu ứng cổng thông tin chất lượng cao mà không gây mất tốc độ khung hình cao. Làm thế nào tôi có thể làm như vậy? Có ai có bất kỳ ý tưởng tốt để kết xuất thành một kết cấu độ phân giải cao mà không gây mất khung không?

Tôi đang xem xét việc tạo mã của riêng mình để kết xuất thành kết cấu thay vì sử dụng hệ thống tích hợp của Unity, điều đó có thể thực hiện được nhưng chắc chắn sẽ gây rắc rối. Vì vậy, bất kỳ suy nghĩ, ý tưởng, hoặc đề xuất đều được đánh giá cao.


3
Tôi không thể tìm thấy tài liệu tham khảo, nhưng tôi nhớ ai đó nói rằng Portal đã không sử dụng kết xuất để kết cấu cho điều đó.
msell

1
Kiểm tra Pseudo Form , một trò chơi Portal-esque (nguồn nằm trong bản tải xuống chính). Ngoài ra còn có các "triển khai cổng thông tin" khác trên web, nhưng tôi nghĩ đây là điều được biết đến nhiều nhất. Ngoài ra, chơi Portal với các bình luận nhà phát triển trên. Trong một số trong số họ, họ nói về những thách thức khi thực hiện các cổng.
Vasco Correia

7
Tôi không thể hiểu tại sao bạn cần một kết cấu 2028x2048 để làm cho một cổng được hiển thị ở mức dưới 1080p trông sắc nét. Bạn chắc chắn không cần phải vượt quá độ phân giải màn hình bạn đang sử dụng cho trò chơi của bạn nói chung. Tôi sẽ đi xa hơn để nói rằng bạn nên tìm ra kích thước trên màn hình của cổng thông tin và sử dụng nó để chọn một bản hiển thị có kích thước phù hợp (do đó làm cho nó rất hiệu quả khi ở xa và "nặng hơn" khi cổng thông tin có nhiều màn hình hơn -space.
Stig-Rune Skansgård 22/03/13

1
Đối với hiệu ứng hình ảnh bạn đã thực hiện phương pháp nào? Bạn đã tìm ra cách chỉ hiển thị những gì có thể nhìn thấy qua cổng?
jhocking

1
Bạn nên giữ câu hỏi ban đầu và hỏi một câu hỏi mới về vấn đề mới.
msell

Câu trả lời:


5

Sau nhiều giờ nghiên cứu và lập trình, tôi đã tìm ra cách để có được hiệu ứng hình ảnh cho việc này. Nếu bạn chỉ muốn mua một hệ thống cổng hoạt động cho hình ảnh và hầu hết mọi thứ khác bạn cần, hãy xem Gói Unity Portalizer.

Tôi lập trình trong C # và gói đó là trong JS, nhưng logic đằng sau nó cực kỳ hữu ích và được cân nhắc kỹ lưỡng. Nói chung, tôi đã làm theo suy nghĩ logic của anh ấy, với một số điều chỉnh cho trò chơi của tôi và bộ điều khiển người đầu tiên.

Về cơ bản những gì bạn làm là sử dụng một phiên bản sửa đổi của This shader / script. Có hai gương trong cảnh và có một camera hiển thị những gì nó nhìn thấy trong mỗi phản chiếu cho gương khác. Bạn sẽ cần tạo một ma trận biến đổi được sửa đổi để tính đến các mối quan hệ giữa hai cổng. Để giúp giảm hiệu suất, hãy đọc Bài viết này về cắt gần mặt phẳng. Điều này sẽ giúp bạn chỉ hiển thị những gì cần phải xem qua cổng.

Tôi có thể tạo một hướng dẫn chi tiết hơn với hình ảnh và nguồn một khi tôi tìm ra cách pha trộn các máy ảnh đúng cách cho dịch chuyển tức thời FPS. Ngay bây giờ tôi đã quá mệt mỏi và bận rộn để viết một hướng dẫn đầy đủ và điều này là đủ vì nó cung cấp cho bạn hầu hết các mã cần thiết.


Bạn có thể gửi một liên kết đến repo?
Roma Fedor
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.