Trạng thái của nghệ thuật trong LOD hình học trong các trò chơi là gì?


15

Làm thế nào để các trò chơi hiện đại làm mức độ chi tiết hình học cho các lưới đối tượng như nhân vật, địa hình và tán lá? Có hai phần cho câu hỏi của tôi:

  1. Đường ống tài sản trông như thế nào? Các nghệ sĩ có tạo ra một mô hình poly cao mà sau đó bị suy giảm? Nếu vậy, thuật toán decimation nào phổ biến nhất? Đôi mắt LOD đôi khi được thực hiện bằng tay?
  2. Làm thế nào để động cơ chuyển đổi giữa các LOD đối tượng khác nhau trong thời gian chạy? Có bất kỳ chuyển tiếp trơn tru hoặc tiến bộ?

Câu trả lời có thể là "các hãng phim khác nhau sử dụng các kỹ thuật khác nhau." Nếu vậy, xin vui lòng xác định một số thực hành phổ biến nhất. Nó cũng sẽ là tuyệt vời nếu bạn có thể chỉ cho tôi các trang trắng / slide bao gồm các ví dụ cụ thể.


1
SIGGRAPH 2014 những tiến bộ trong kết xuất thời gian thực có một cuộc nói chuyện thực sự thú vị về cuộc gọi của các bề mặt phân khu của nhiệm vụ. Bạn nên kiểm tra xem nó ra. Thay vì có một lưới poly cao được tạo ra poly thấp hơn, họ đã xác định các hình dạng phân tích và thêm nhiều hình tam giác khi cần
Alan Wolfe

Chúng ta có thể nói về trạng thái của nghệ thuật trong các thuật toán và cấu trúc dữ liệu LOD ở đây, nhưng nếu câu hỏi là về cách các trò chơi hiện đại làm điều đó một cách cụ thể, bạn có thể gặp nhiều may mắn hơn khi hỏi trong gamedev.se: gamedev.stackexchange.com
Bút danh

3
Tôi nghi ngờ điều đó. Game dev rất nhẹ về đồ họa. Đó chủ yếu là các câu hỏi về sự thống nhất và java với một số câu hỏi tìm đường và tốc độ khung hình cố định được ném vào: p
Alan Wolfe

1
@Alan, Activision đã sử dụng rất nhiều thuật toán hiện đại để tạo ra một trò chơi chiến lược 3D thực sự không phải là cơ sở Sprite cơ bản mà tôi thấy ổn với điều đó, nhưng họ đã làm rất tốt trong COD tuy nhiên nó vẫn hơi chậm chạp và lười biếng ngay cả ở cấp độ đầu với số lượng tài sản nhỏ (tôi đang nói về trò chơi di động của họ trên Iphone 5s). Tôi nghĩ bạn cần học các tính năng chuyên môn của OpenGLES và các lớp bên dưới để viết thành công một trò chơi như vậy.
Iman

Tôi đang nói về phiên bản giao diện điều khiển nhiệm vụ của họ trong trường hợp xóa nó đi.
Alan Wolfe

Câu trả lời:


22

Đối với LOD hình học, hầu hết các trò chơi chỉ cần chuyển đổi giữa một số lưới LOD được xác định trước. Ví dụ: "Infamous: Second Son" sử dụng 3 mắt lưới LOD ( Adrian Bentley - "inFAMOUS: Postmortem engine thứ hai", GDC 2014 ) và "Killzone: Shadow Fall" sử dụng 7 lưới LOD cho mỗi nhân vật ( Michal Valient - "Killzone: Shadow fall bản demo hậu kỳ ", Devstation2013 ). Hầu hết chúng được tạo ra, nhưng những cái quan trọng hơn (như nhân vật chính) có thể được làm bằng tay. Các lưới thường được tạo bằng cách sử dụng phần mềm trung gian Simplygon phổ biến, nhưng đôi khi chúng được tạo ra đơn giản bởi các nghệ sĩ đồ họa trong gói 3D yêu thích của họ.

Các trò chơi có khoảng cách rút thăm lớn cũng sử dụng các kẻ mạo danh cho tán lá, cây cối và nhà cao tầng ( Adrian Bentley - "inFAMOUS: Post Son engine postmortem", GDC 2014 ). Họ cũng sử dụng các LOD phân cấp, thay thế một tập hợp các đối tượng bằng một. Ví dụ, trong các cây "Chỉ là nguyên nhân 2" lần đầu tiên được hiển thị riêng lẻ như các lưới LOD bình thường, sau đó là các kẻ mạo danh và cuối cùng là một lưới rừng hợp nhất ( Emil Persson, Joel de Vahl - "Tạo ra một thế giới trò chơi lớn", Siggraph2013 ) và trong Các khu vực xa xôi của "Sunset Overdrive" trên thế giới được thay thế bằng lưới được tạo tự động ngoại tuyến duy nhất ( Elan Ruskin - "Truyền trực tuyến Sunset Overdrive's Open World", GDC2015 ).

Một thành phần khác của hệ thống LOD là đơn giản hóa vật liệu và đổ bóng. Ví dụ: "Killzone: Shadow Fall" vô hiệu hóa không gian tiếp tuyến và ánh xạ bình thường cho các LOD xa xôi ( Michal Valient - "Killzone: Shadow fall demo postmortem", Devstation2013 ). Điều này thường được thực hiện bằng cách vô hiệu hóa toàn cầu một tập hợp các tính năng đổ bóng trên mỗi LOD, nhưng đối với các công cụ có biểu đồ đổ bóng, nơi các nghệ sĩ có thể tạo các trình tạo bóng tùy chỉnh, điều này cần phải được thực hiện thủ công.

Đối với các chuyển đổi LOD, một số trò chơi chỉ cần chuyển đổi lưới và một số sử dụng phối màu để chuyển đổi LOD trơn tru - tại chuyển đổi LOD, hai lưới được hiển thị: đầu tiên mờ dần và mờ dần thứ hai trong ( Blog Simon schreibt - "Assassins Creed 3 - LoD Blending" ). Các kỹ thuật lưới lũy tiến CPU cổ điển không được sử dụng vì chúng yêu cầu cập nhật lưới tốn kém và tải lên GPU. Phần cứng Tessname được sử dụng trong một vài tiêu đề, nhưng chỉ để tinh chỉnh LOD chi tiết nhất, vì nó chậm và trong trường hợp chung, nó không thể thay thế các LOD hình học được xác định trước.

LOD địa hình được xử lý riêng để khai thác các thuộc tính cụ thể của nó. Hình học địa hình LOD thường được triển khai bằng cách sử dụng clipmap ( Marcin Gollent - "Tạo và hiển thị cảnh quan trong REDengine 3" ). Các LOD vật liệu địa hình hoặc được xử lý tương tự như các LOD lưới hoặc sử dụng một loại kết cấu ảo Ka Chen - "Kết cấu ảo thích ứng kết xuất trong Far Cry 4 .

Cuối cùng, nếu bạn muốn xem các đường ống LOD của trò chơi thực sự thì chỉ cần duyệt qua tài liệu của bất kỳ công cụ trò chơi hiện đại nào: Unreal Engine 4 - "Tạo và sử dụng LOD" , CryEgnine - LOD tĩnhUnity - LOD .


1
các công cụ trò chơi thường có một tập hợp các phương thức được xác định trước và bạn không thể vào lõi để thực sự thay đổi thuật toán LOD. tôi có đúng không Tôi đã nói về trường hợp bạn tự viết một trò chơi với khung OpenGL hoặc SpriteKit, tôi không biết liệu người ta có thể tùy chỉnh thuật toán của LOD trong Unity hay Unreal không, có khả thi không?
Iman

3

LOD (Cấp độ chi tiết) có nghĩa là quản lý các đối tượng ở các tỷ lệ hiển thị khác nhau, có thể bị lệch hai phần. Tuy nhiên, bạn có thể sử dụng một trong số chúng và điều đó là đủ cho hầu hết các trường hợp.

  1. Hiển thị / ẩn các lớp (nhóm các đối tượng cùng loại) tùy thuộc vào độ lớn (tỷ lệ hiển thị).

  2. Phương pháp dựa trên đại số Geomery, được gọi là Generalization (là một thuật toán để đơn giản hóa các đa giác). nhìn vào bức tranh sau

    sự khái quát

Phương pháp nổi tiếng và hiệu quả nhất để khái quát hóa (đơn giản hóa) một lưới đa giác được gọi là định lý đa diện Descartes-Euler (Công thức 4.5 xin lỗi nếu tôi tham khảo một cuốn sách, đó là cách tốt nhất tôi có thể làm) và được sử dụng bởi hầu hết các cơ sở dữ liệu không gian ví dụ các mô-đun PostGIS trong PostgreSQL. Nó chỉ đơn giản là loại bỏ các cạnh nhỏ hơn của một đa giác và làm cho một hình rất tròn. (Hình trên)

Để triển khai LOD trong trò chơi, bạn cần lưu và quản lý tỷ lệ bản đồ (cảnh) của mình trong các hoạt động phóng to / thu nhỏ. Thang đo thay đổi từ 0 đến vô cùng và bạn phải chia số này thành một số phạm vi cụ thể, ví dụ như thế này:

  1. 1 / không = vô cùng đến 1/50
  2. 1/50 đến 1/100
  3. 1/100 đến 1/1000
  4. 1/1000 đến 1 / vô cùng = 0

Sau đó, bạn cần xác định loại đối tượng (lớp) nào sẽ hiển thị hoặc không nhìn thấy trong mỗi phạm vi trên. Ví dụ, không thể nhìn thấy một loại vật thể nhỏ như van vòi khi người dùng ở phạm vi thứ tư vì nó sẽ rất nhỏ ở quy mô đó và không thể bị phân biệt đối xử nên không thành vấn đề nếu bạn bỏ qua việc vẽ nó trên màn.

Vì vậy, khi người dùng sử dụng phóng to và thu nhỏ để thay đổi độ phóng đại, anh ta sẽ di chuyển qua các giới hạn trên từ phạm vi này sang phạm vi khác và trò chơi của bạn sử dụng các tỷ lệ hiển thị này để quản lý mức độ chi tiết bằng cách hiển thị hoặc ẩn đối tượng trên cảnh. Điều này làm cho một giải pháp riêng biệt mà các đối tượng đột nhiên mờ dần trong quá trình thu nhỏ của bạn, tuy nhiên có tỷ lệ hiển thị và phạm vi phóng đại được xác định cẩn thận, người dùng sẽ không cảm thấy gì.

Nhóm 4 phạm vi trên chỉ là một ví dụ và bạn cần tìm ra trường hợp tốt nhất cho trường hợp của mình bằng cách dùng thử và lỗi. Không có quy tắc cho điều đó.

Đôi khi các trò chơi sử dụng các phương thức LOD của riêng họ, Subway Surfer ngay lập tức, hiển thị một hình chữ nhật nhỏ, không có kết cấu để hiển thị một tòa nhà ở xa, và bằng cách đến gần, đột nhiên nó có kết cấu, game thủ cảm thấy nó. Bạn đã không nói về hệ thống trình chiếu của mình, điều rất quan trọng cũng không nói về loại trò chơi bạn đang tạo.

Tuy nhiên, giả sử bạn đang triển khai một trò chơi 3D đầy đủ với openGl và bạn muốn lọc một số lưới trước khi chuyển chúng sang phần cứng đồ họa, tôi chắc chắn điều này sẽ giúp bạn giảm các hoạt động liên kết / hủy liên kết với các đối tượng đệm và mảng đỉnh (VBO, VAO) trong khi giao dịch với OpenGl.

Chỉ sử dụng quản lý lớp hoặc chỉ thực hiện Tổng quát hóa Euler's

Trong hầu hết các trường hợp, không cần thiết phải thực hiện thuật toán tổng quát hóa và các đối tượng lọc chỉ hoạt động và đưa bạn đến hiệu quả (tốc độ làm mới) mà bạn cần, tuy nhiên hoàn toàn phụ thuộc vào từng trường hợp. Mặc dù đây là một thuật toán dễ dàng chỉ loại bỏ các cạnh nhỏ của đa giác, bạn cần xác định ngưỡng là sản phẩm của cường độ và số không đổi, vì vậy các mặt lớn hơn sẽ được lọc theo quan điểm xa hơn nhiều.

Quên cách xử lý lớp và chỉ thực hiện thuật toán tổng quát hóa Eulers, cung cấp một phương pháp rất gọn gàng và liên tục, trong đó bạn chỉ cần kiểm tra từng cạnh và đường thẳng theo ngưỡng được xác định trước và chỉ hiển thị chúng trong trường hợp chúng đủ lớn để bị phân biệt trên màn hình.

PS: độ phóng đại là số float> 0 bằng 1 / tỷ lệ và tỷ lệ thường <1 vì tỷ lệ 1: 1 có nghĩa là bạn có độ dài thế giới thực trong trò chơi của mình.


Bỏ phiếu, xin vui lòng xem xét bạn bỏ phiếu một lần nữa, nếu đó vẫn là -1, Hãy xem xét để lại nhận xét cho tôi. Cảm ơn
Iman

Tôi đã không downvote nhưng một phần của tôi tự hỏi sate của nghệ thuật ở đây là gì? Vì vậy, tôi không thể bỏ phiếu.
joojaa

1
Tôi đã bị đánh giá thấp bởi vì nó rất khó đọc và IMHO nó không liên quan đến LOD trong các trò chơi. Sau khi xem xét lại, tôi quyết định hủy bỏ donwvote của mình bằng cách upwote và chỉ cần thêm câu trả lời của riêng tôi.
Krzysztof Narkowicz

State of the art giả sử có nghĩa là một công việc rất xuất sắc nhưng các phương pháp khác nhau lại dẫn đến kết quả khác nhau trong các trường hợp khác nhau, ví dụ Call of Duty có lớp quản lý và mipmaping, tuy nhiên Dear ám ảnh (DH 2014) sử dụng nền tảng với thị sai và mipmaping đã được tổng quát hóa Hoạ tiết. Subway Surfer hoàn toàn là một câu chuyện khác nhau, và tôi nói rằng tất cả chúng đều là nghệ thuật, mặc dù Subway Surfer vẽ một cách kín đáo các tòa nhà và các vật thể đô thị khác hoặc Call of Duty hơi chậm chạp trong khi phóng to hoặc xoay. Tôi nghĩ rằng tất cả họ là tốt nhất trong trường hợp của họ.
Iman

3

Iman đã chuẩn bị một câu trả lời hoàn chỉnh nhưng tôi muốn thêm một cái gì đó vào nó

LOD có thể được thực hiện theo hai cách khác nhau

  1. Continous được gọi là CLOD và là tối ưu hóa lưới đa giác
  2. Rời rạc mà hầu như mọi thuật toán khác ngoài tối ưu hóa lưới đa giác, được coi là nằm trong nhóm này.

Ví dụ, mipmaping là một nhóm tốt, nhanh nhưng nặng, thuộc về nhóm bí mật ở trên

Ở đây bạn có thể tìm thấy một lời giải thích tốt cho mipmaping và mã triển khai với OpenGl.

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.