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ĩ) kỹ thuật hiển thị mô hình 3d và ứng dụng không gian di tích tháp luang viêng chăn cộng hòa dân chủ nhân dân lào​ (Trang 27 - 31)

Việc mô hình hóa và mô phỏng các đối tượng trong tòa tháp Luang là rất khó, do độ phức tạp, chi tiết chân thực của tòa tháp. Bên cạnh đó, chúng ta khó có thể chụp ảnh được hết các vị trí của tòa tháp, đồng thời cũng khó có thể vẽ được hết những mà ta không thể nhìn thấy được. Để có thể hỗ trợ đắc lực và tạo ra những đối tượng, góc cạnh phù hợp và chân thực với tòa tháp, chúng ta có thể sử dụng kỹ thuật hiển thị mô hình Occlusion Culling (OC) [trích dẫn tài liệu tham khảo].

Với kỹ thuật hiển thị mô hình OC có thể hiển thị các đặc trưng chi tiết có một độ phức tạp chiều sâu cao. Độ phức tạp chiều sâu đề cập đến số lần một pixel trên màn hình trong khi dựng cảnh. Hình 2.5 dưới thể hiện 3 góc nhìn của cùng một cảnh. Khung giây làm nó rõ ràng mà có nhiều phóng đại. Ảnh bên phải là sự phức tạp chiều sâu của ảnh: sáng hơn một pixel, nhiều lần nó được phóng đại.

Hình 2.5 Dựng hình đặc, khung dây, và sự phức tạp độ sâu

Để giảm sự phức tạp chiều sâu, có thể thực hiện Occlusion Culling. Khi đối tượng A hoàn toàn đằng sau đối tượng B, A được gọi là được bít kín bởi B, và không cần được vẽ. Thực chất, việc sử dụng OC là quá trình chọn lọc (Culling), tức là loại bỏ mọi thứ từ một khung cảnh mà không đóng góp đến hình vẽ cuối cùng,

bao gồm các thứ mà đằng sau nguời quan sát, màn ảnh riêng, hoặc trong những hệ thống tiên tiến hơn, ẩn đằng sau những đối tượng khác (đã bị che khuất). Khái quát hóa chọn lọc bằng việc loại bỏ những công việc không cần thiết bằng cách so sánh các ranh giới không gian của đối tượng với khung nhìn hình chóp cụt biểu diễn không gian 3 chiều xác định.

Trong phần tiếp sau, sẽ trình bày shadow volumes như một cách có thể thực hiện được để thực hiện OC.

a) Đánh bóng các khối Shadow volumes.

Lấy một cái nhìn giả định này. Các đường màu đen cho thấy miền quan sát:

Hình 2.6 Trước khi Occlusion Culling.

Tư tưởng đằng sau kỹ thuật khối bóng là điều này:

Hình 2.7 Shadow volumes

Đối với mỗi lỗ hổng tiềm năng, tạo một bóng đổ. Ảnh mà điểm nhìn là một nguồn sáng thực tế. Khối bóng đối với một đối tượng sau đó là miền không gian mà nằm trong bóng tối của đối tượng đó. Giải pháp, tất nhiên, là bất kỳ đối tượng mà nằm trong khối bóng của đối tượng khác là không nhìn thấy được, và có thể được chọn lọc từ đó. Trong hình, các khối bóng chỉ được báo trong cùng màu như đối tượng mà các khối bóng thuộc quyền sở hữu. Một cách hiển nhiên, đường

màu xanh là lỗ hổng quan trọng nhất. (lỗ hổng là một đối tượng mà một phần hoặc hoàn toàn cản trở lượng ánh sáng đến mắt).

b) Tìm các occluder tốt.

Mục tiêu của kỹ thuật shadow volume là để giảm sự phức tạp chiều sâu, nhưng nếu đã tạo ra một shadow volume đối với mỗi đối tượng trong cảnh, tổng phí lớn hơn sự tiết kiệm. Cần chọn một số đối tượng được giới hạn từ cảnh mà sẽ làm các occluder tốt nhất.

Giả định rằng cảnh bao gồm polygon soup – tức là không có sự phân cấp hoặc phân chia nhỏ bất cứ gì. Điều này có nghĩa rằng sẽ cần tìm các đa giác lớn để sử dụng như các occluder. Sử dụng các đa giác có thuận lợi là nó làm mọi thứ đơn giản hơn nhiều: Tạo một shadow volume thì tương đối khó khăn đối với các đối tượng rắn, nhưng đối với các đa giác đó là một vấn đề nhỏ.

Tất nhiên, không phải đa giác làm một occluder tốt. Sẽ muốn khởi động bằng cách chọn một đa giác lớn nhất trong cảnh. Nếu chỉ làm việc cùng với các hình tam giác, có thể hiệu quả hơn đối với nhóm một vài tam giác trong một đa giác lớn và sử dụng như một occluder. Có thể vẫn sử dụng các tam giác cho rendering, bởi vậy sẽ không là một vấn đề. Điều duy nhất cần ghi nhớ là occluder phải là lồi.

Khi đã chọn một nhóm đầy đủ của các đa giác lớn, sẽ muốn kiểm tra nếu các đa giác quả thực là các occluder tốt. Có thể làm điều này bằng cách tạo một tập ngẫu nhiên các điểm nhìn cung quanh đa giác, và kiểm tra bao nhiêu các đa giác khác nó bít kín từ các điểm nhìn. Tất nhiên, chỉ nên lựa chọn các điểm nhìn mà thực sự với tới được bởi người sử dụng của ứng dụng, bởi vậy kiểm tra nếu các điểm tạo thực sự bên ngoài cảnh. Giữ các occluder mà phát sinh các kết quả tốt nhất và loại bỏ những occluder khác.

c) Culling.

Lựa chọn các occluder được làm như một tiền xử lý, tất nhiên, vì tất cả các thử nghiệm và lỗi có thể tạo cho nó một bit của một thao tác kéo dài. Một khi đã chọn chúng , tuy nhiên, mọi thứ trở nên khá đơn giản. Khi rendering một cảnh, xử lý tất cả các occluder, Tạo các shadow volume đối với chúng và culling mọi thứ

biến mất là bên trong. Để tối ưu hóa quá trình culling, nên cố gắng sắp xếp các occluder đến nỗi mà một occluder quan trọng nhất được xử lý đầu tiên. Sẽ cần sắp xếp một vài số liệu để xác định rằng một occluder “quan trọng” như thế nào. Số liệu này có thể dựa trên vùng không gian màn hình của occluder, và trên khoảng cách của nó đến camera. Xa hơn nữa, các backfacing occluder nên bị bỏ qua, như nên là các occluder mà bên ngoài phạm vi của tầm nhìn.

Tạo một shadow volume đối với một đa giác là một nhiệm vụ nhỏ. Nó dễ dang để định nghĩa một mặt phẳng từ ba điểm, và đó là tất cả cần làm. Đối với mỗi cạnh của đa giác, tạo một mặt phẳng sử dụng hai đỉnh của cạnh và vị trí camera. Sauk hi làm điều đó, cũng nên thêm mặt phẳng lên đa giác mà nó nằm trên – mặt khác sẽ kết thúc culling các đối tượng mà đứng trước occluder. Chắc chắn rằng tất cả các pháp tuyến của mặt phẳng điểm trong cùng một hướng (Hoặc bên trong hoặc bên ngoài của shadow volume).

Hình 2.8 Một ảnh hoa văn phức tạp

Khi đã tạo ra một khối bóng, cần phải cắt xén toàn bộ cảnh chống lại nó. Loại bỏ bất cứ gì bên trong. Điều này bao gồm cả các lỗ hổng khác, tất nhiên, như không có điểm trong các lỗ hổng vô hình đang xử lý. Cắt xén thực tế thì rất đơn giản trong trường hợp này: Nếu một đa giác được tiêu hủy, tất cả các đỉnh phải nằm bên trong khối bóng. Do đó, tất cả cần làm là kiểm tra các điểm chống lại các phương trình mặt phẳng của khối.

Kiểm tra mỗi một đa giác trong cảnh chống lại tất cả các khối bóng có lẽ là đỡ tốn kém hơn một bít, bởi vậy sẽ cần một vài cách để tăng tốc việc này lên. Một cây octree (octree là một cây cấu trúc dữ liệu, trong đó mỗi nút nội bộ có đến tám

con. Octrees thường được sử dụng để phân vùng một không gian ba chiều bằng cách phân chia đệ quy nó vào tám octants. Octrees là ba chiều tương tự của các cây tứ phân. Tên sẽ được thành lập từ Tháng Mười + cây, và thường viết "octree", không phải "octtree") sẽ cho phép để kiểm tra các hộp chống lại các khối bóng, thay vào đó là các đa giác riêng lẻ. Theo cách này, sẽ loại bỏ các phần lớn cảnh khá nhanh chóng. Nếu muốn làm, sau này có thể vẫn kiểm tra các đa giác còn lại.

Một phần của tài liệu (LUẬN văn THẠC sĩ) kỹ thuật hiển thị mô hình 3d và ứng dụng không gian di tích tháp luang viêng chăn cộng hòa dân chủ nhân dân lào​ (Trang 27 - 31)

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

(61 trang)