Làm cách nào để các công cụ trò chơi hiện đại đạt được kết xuất thời gian thực so với kết xuất chậm chậm của Blender?


90

Tôi mới sử dụng cả gamedev và Blender, và có một thứ tôi không thể lay chuyển:

Trong Blender, một kết xuất đơn (thậm chí sử dụng trình kết xuất C chu kỳ tiên tiến hơn) có thể mất tới 45 giây trên máy của tôi. Nhưng rõ ràng, trong một trò chơi, bạn có thể có đồ họa tuyệt vời, và do đó, việc hiển thị rõ ràng đang diễn ra liên tục, nhiều lần trong một giây trong thời gian thực.

Vì vậy, tôi cũng tự hỏi việc ngắt kết nối là gì, liên quan đến cách hiển thị của Blender "chậm", so với cách các công cụ trò chơi đạt được kết xuất thời gian thực (hoặc gần thời gian thực).


3
Bản thân thời gian thực là một chủ đề lớn, có rất nhiều sách viết về nó (bao gồm cả "Kết xuất thời gian thực"). Và các trình kết xuất như Chu kỳ hoạt động hoàn toàn khác với trình kết xuất 3D trong công cụ trò chơi - bạn thực sự không thể so sánh chúng
UnholySheep

42
@UnholySheep Tất nhiên bạn có thể so sánh chúng. Làm thế nào khác bất cứ ai sẽ giải thích sự khác biệt, để trả lời câu hỏi?
user985366

2
@ 10Replies Nhưng câu hỏi này sẽ không được đặt ra trên trang web đó.
GiantCowFilms

3
@ 10Replies: Mặc dù OP có đề cập đến Blender, nhưng về cơ bản, câu hỏi đặt ra là tại sao các công cụ trò chơi thời gian thực dường như hiển thị các cảnh 3D nhanh hơn các trình kết xuất 3D gần như bằng hình ảnh (như Blender, nhưng cũng có nhiều người khác). Lưu ý rằng đây cũng là câu hỏi được trả lời bởi câu trả lời được chấp nhận. Với ý nghĩ đó, tôi đồng ý câu hỏi có nhiều chủ đề hơn ở đây về Phát triển trò chơi , trong đó câu hỏi về công nghệ phát triển trò chơi nói chung có thể được hỏi, thay vì trên Blender , nơi cụ thể các câu hỏi cụ thể hơn về Blender.
HOẶC Mapper

3
Tôi đoán bí mật ở đây là tuyệt vời không cần phải chính xác. Có các phép tính gần đúng nhanh cho toán học được sử dụng trong kết xuất 3D, như InvSqrt
Dmitry Grigoryev

Câu trả lời:


115

Kết xuất thời gian thực, thậm chí kết xuất thời gian thực hiện đại, là một gói các thủ thuật, phím tắt, hack và xấp xỉ.

Lấy bóng tối làm ví dụ.

Chúng ta vẫn chưa có một cơ chế hoàn toàn chính xác và mạnh mẽ để hiển thị bóng thời gian thực từ một số lượng ánh sáng tùy ý và các đối tượng phức tạp tùy ý. Chúng tôi có nhiều biến thể về kỹ thuật lập bản đồ bóng nhưng tất cả chúng đều gặp phải các vấn đề nổi tiếng với bản đồ bóng và thậm chí "bản sửa lỗi" cho chúng thực sự chỉ là một tập hợp các công việc và sự đánh đổi (như một quy tắc bạn thấy các thuật ngữ "độ sâu độ sâu" hoặc "độ lệch đa giác" trong bất cứ điều gì thì đó không phải là một kỹ thuật mạnh mẽ).

Một ví dụ khác về một kỹ thuật được sử dụng bởi các trình kết xuất thời gian thực là tính toán trước. Nếu một cái gì đó (ví dụ ánh sáng) quá chậm để tính toán trong thời gian thực (và điều này có thể phụ thuộc vào hệ thống chiếu sáng bạn sử dụng), chúng ta có thể tính toán trước và lưu trữ nó, sau đó chúng ta có thể sử dụng dữ liệu được tính toán trước trong thực tế - thời gian để tăng hiệu suất, thường đi kèm với chi phí cho các hiệu ứng động. Đây là một bộ nhớ thẳng so với sự đánh đổi tính toán: bộ nhớ thường rẻ và dồi dào, tính toán thường không có, vì vậy chúng tôi ghi thêm bộ nhớ để đổi lấy việc tiết kiệm tính toán.

Mặt khác, các công cụ kết xuất và mô hình hóa ngoại tuyến có xu hướng tập trung nhiều hơn vào tính chính xác và chất lượng. Ngoài ra, vì họ đang làm việc với hình học thay đổi linh hoạt (chẳng hạn như mô hình khi bạn xây dựng nó) nên họ phải tính toán lại mọi thứ, trong khi trình kết xuất thời gian thực sẽ hoạt động với phiên bản cuối cùng không có yêu cầu này.


14
Một điểm khác cần đề cập là số lượng tính toán được sử dụng để tạo tất cả dữ liệu mà trò chơi sẽ cần để hiển thị các chế độ xem của một khu vực một cách nhanh chóng có thể là các đơn đặt hàng có cường độ lớn hơn số lượng tính toán sẽ được yêu cầu để hiển thị một chế độ xem. Nếu hiển thị chế độ xem của một khu vực sẽ mất một giây mà không cần tính toán trước, nhưng một số dữ liệu được tính toán trước có thể giảm xuống còn 1/100 giây, dành 20 phút cho các tính toán trước có thể hữu ích nếu cần xem trong trò chơi thời gian thực, nhưng nếu người ta chỉ muốn một bộ phim 24 giây trên mười giây, nó sẽ nhanh hơn nhiều khi dành bốn phút ...
supercat

9
... tạo ra 240 lượt xem yêu cầu với tốc độ một giây.
supercat

@supercat và vì điều này, các bản render của bạn không có nhiều sự vội vã và bạn có thể kiểm soát được quá trình này. Bạn có thể sử dụng một công cụ trò chơi để kết xuất ... nếu bạn sẵn sàng thực hiện các tính năng. Nhưng như bạn nói nó không đáng
joojaa

Một ví dụ nổi bật về điều này mà tôi có thể nhớ lại là công cụ Quake gốc (~ 1996), có thể đạt được đồ họa 3D thời gian thực tương đối gây chú ý trên các máy rất hạn chế sử dụng kết hợp các kỹ thuật tính toán cực kỳ tốn thời gian. Cây BSP và hiệu ứng ánh sáng được kết xuất trước được tạo ra trước thời hạn; thiết kế một mức cho động cơ đó thường liên quan đến hàng giờ (thường là qua đêm) để chờ các công cụ biên dịch bản đồ hoàn thành. Sự đánh đổi về cơ bản là giảm thời gian kết xuất với chi phí thời gian của tác giả.
Jason C

(Công cụ Doom ban đầu [1993] cũng có những định kiến ​​tương tự. Marathon cũng có thể có, nhưng tôi không nhớ, tôi nhớ việc xây dựng các cấp độ Marathon nhưng tôi không thể nhớ những gì có liên quan.)
Jason C

109

Câu trả lời hiện tại đã thực hiện rất tốt việc giải thích các vấn đề chung liên quan, nhưng tôi cảm thấy nó bỏ lỡ một chi tiết kỹ thuật quan trọng: Công cụ kết xuất "Chu kỳ" của Blender là một loại công cụ khác với hầu hết các trò chơi sử dụng.

Thông thường các trò chơi được kết xuất bằng cách lặp qua tất cả các đa giác trong một cảnh và vẽ chúng riêng lẻ. Điều này được thực hiện bằng cách 'chiếu' tọa độ đa giác thông qua một camera ảo để tạo ra một hình ảnh phẳng. Lý do kỹ thuật này được sử dụng cho các trò chơi là phần cứng hiện đại được thiết kế xung quanh kỹ thuật này và nó có thể được thực hiện trong thời gian thực với mức độ chi tiết tương đối cao. Không được quan tâm, đây cũng là kỹ thuật được sử dụng bởi công cụ kết xuất trước đó của Blender trước khi Blender Foundation bỏ công cụ cũ để ủng hộ công cụ Ciking.

Kết xuất đa giác

Mặt khác, chu kỳ là một động cơ raytracing. Thay vì nhìn vào các đa giác và hiển thị chúng riêng lẻ, nó chiếu các tia sáng ảo vào cảnh (một cho mỗi pixel trong ảnh cuối cùng), bật tia sáng đó ra khỏi một số bề mặt và sau đó sử dụng dữ liệu đó để quyết định màu nào cho pixel nên là. Raytracing là một kỹ thuật rất tốn kém về mặt tính toán, khiến nó không thực tế khi kết xuất thời gian thực, nhưng nó được sử dụng để hiển thị hình ảnh và video vì nó cung cấp thêm mức độ chi tiết và chân thực.

Kết xuất Raytracing


Xin lưu ý rằng các mô tả ngắn gọn của tôi về raytracing và kết xuất đa giác được loại bỏ rất nhiều vì lý do ngắn gọn. Nếu bạn muốn biết thêm về các kỹ thuật tôi khuyên bạn nên tìm hiểu một hướng dẫn hoặc cuốn sách chuyên sâu vì tôi nghi ngờ có rất nhiều người đã viết những lời giải thích tốt hơn tôi có thể tập hợp được.

Cũng lưu ý rằng có nhiều kỹ thuật liên quan đến kết xuất 3D và một số trò chơi thực sự sử dụng các biến thể của raytracing cho các mục đích nhất định.


3
+1 cho điểm rất tốt; Tôi đã cố tình không đi xuống lỗ thỏ của raytracing và rasterization, vì vậy thật tuyệt khi có nó như là một bổ sung.
Maximus Minimus

16
Câu trả lời này nhận được nhiều hơn đến trung tâm của sự khác biệt. Các công cụ trò chơi thực hiện rasterization (chuyển tiếp hoặc hoãn lại) trong khi các trình kết xuất ngoại tuyến (như Blender, Renderman, v.v.) thực hiện theo dõi tia. Hai cách tiếp cận hoàn toàn khác nhau để vẽ một hình ảnh.
ssell

4
@ LeComteduMerde-fou Vì gamedev nhắm vào các nhà phát triển trò chơi, tôi cảm thấy một lời giải thích kỹ thuật bổ sung sẽ có ích cho người đọc thiên về kỹ thuật hơn.
Pharap

1
@ssell Đúng, nhưng không chỉ là về dò tia - ngay cả khi không theo dõi tia, ngay cả với kết xuất GPU, kết xuất của Blender thường chi tiết hơn và chậm hơn nhiều. Điều này chủ yếu liên quan đến tính chính xác - lọc và phân giải kết cấu tốt hơn, khử răng cưa, chiếu sáng, ánh xạ bóng, độ chính xác Z, tứ giác, bề mặt hai hướng, số lượng đa giác lớn, độ phân giải cao hơn, ánh xạ chính xác , thiếu bản đồ được tính toán trước, biến hình, động học chính xác ... đó là một danh sách dài các tính năng mà công cụ trò chơi thiếu hoặc giả mạo theo cách của họ.
Luaan

1
@Chii tôi viết sai. Tôi đã nghĩ đến ART VPS , nó chỉ là tăng tốc, không phải thời gian thực.
Jason C
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.