Kỹ thuật hiển thị mô hình Occlusion culling

Một phần của tài liệu (LUẬN văn THẠC sĩ) mô phỏng sự tạo bóng của vật thể từ một nguồn sáng trong thực tại ảo (Trang 37 - 40)

Sơ lược về kỹ thuật Occlusion Culling

Unity cung cấp cho chúng ta một công cụ tối ưu rất hay sử dụng kỹ thuật tối ưu được sử dụng bởi rất nhiều trò chơ hiện nay đó là Occlusion Culling. Đây là kỹ thuật cho phép khả năng vô hiệu hóa kết xuất hình ảnh của các đối tượng khi chúng không được nhìn thấy bởi camera do bị che khuất bởi các đối tượng khác. Kỹ thuật này không tự động được thực hiện trong đồ họa 3D máy tính, mặc định những đối tượng ở xa camera hơn sẽ được vẽ ra trước và sau đó các đối tượng ở gần hơn sẽ được vẽ đè lên (được gọi bằng thuật ngữ “overdraw”). Ngoài kỹ thuật Occlusion Culling, còn có một số kỹ thuật tối ưu khác như Frustum Culling, kỹ thuật này chỉ cho phép vô hiệu hóa các đối tượng nằm ngoài vùng nhìn của camera. Trong khi đó Occlusion Culling ngoài việc khắc phục vấn đề Overdraw mà còn tận dụng lại khả năng của kỹ thuật Furstum Culling.

Tiến trình của Occlusion Culling được thực hiện bởi một camera ảo để xây dựng một hệ thống gồm tập hợp các đối tượng có thể hiển thị. Dữ liệu này được dùng trong quá trình runtime bởi camera để xác định rằng “cái gì được xuất hiện và cái gì không được xuất hiện?”. Occlusion Culling giúp giảm số lần gọi lại công việc dựng hình (Draw call), giúp tăng hiệu suất của ứng dụng. Dữ liệu cho kỹ thuật Occlusion Culling bao gồm các ô (Cells), mỗi ô là một nhánh của khối toàn bộ đối tượng trong Scene, cụ thế hơn thì các ô này tạo thành một cây nhị phân. Occlusion Culling sử dụng hai cây, một giành cho View Cells (Static Object – đối tượng tĩnh) và một giành cho Target Cells (Moving Object – đối tượng động). View Cells là một bản đồ liệt kê các đối tượng tĩnh có thể nhìn thấy nhằm giúp cho kết quả của việc chọn lọc các đối tượng tĩnh được chính xác hơn. Điều quan trọng cần ghi nhớ là khi tạo đối tượng, chúng ta cần đảm bảo sự cân bằng giữa kích thước đối tượng

và kích thước của mỗi ô. Chúng ta không nên có các đối tượng quá nhỏ so với kích thước ô cũng như không nên có các đối tượng lớn bằng kích thước của nhiều ô.

Thỉnh thoảng chúng ta có thể cải thiện bằng việc chia một đối tượng lớn thành nhiều đối tượng nhỏ. Chúng ta có thể trộn (gộp) nhiều đối tượng nhỏ lại thành một để giảm số Draw calls nhưng nếu việc chúng được đặt trong cùng một ô sẽ làm cho Occlusion Culling sẽ không có hiệu quả. Tập hợp các ô và thông tin quyết định chúng có được nhìn thấy từ một ô khác hay không có tên gọi là PVS (Potentially Visible Set).

Công cụ Occlusion Culling trong Unity

Để sử dụng Occlusion Culling, chúng ta cần phải thực hiện một số thao tác cài đặt. Đầu tiên, màn chơi của chúng ta cần phải được chia nhỏ thành từng mảnh với kích thước hợp lý. Tiếp theo, đánh dấu (tag) các đối tượng mà chúng ta muốn chúng trở thành một phần dữ liệu trong quá trình thực hiện kỹ thuật Occlusion Culling.

Hình 2.9 Đánh dấu đối tượng.

Sau khi thực hiện các thao tác cài đặt cơ bản, chúng ta đã có thể sử dụng công cụ Occlusion Culling với các thẻ chứ năng mà Unity cung cấp để Unity tính toán và thu thập dữ liệu cho tối ưu hóa.

Hình 2.10 Thẻ Object trong công cụ Occlusion

Hình 2.11Thẻ Bake trong công cụ Occlusion

Hình 2.12 Thẻ Visualization trong công cụ Occlusion

Các thẻ Object, Bake, Visualization cung cấp chức năng cho phép chúng ta xác định vùng, các đối tương sẽ áp dụng Occlusion; xác định Camera cần dùng dữ liệu từ Occlusion Culling để xử lí, kết xuất hình ảnh.Cho

phép chúng ta tùy chọn về các giới hạn xa, gần, kích thước của các ô chứa đối tượng Occlusion.

Hình 2.13 Vùng và các ô áp dụng Occlsion Culling.

Một phần của tài liệu (LUẬN văn THẠC sĩ) mô phỏng sự tạo bóng của vật thể từ một nguồn sáng trong thực tại ảo (Trang 37 - 40)

Tải bản đầy đủ (PDF)

(76 trang)