Bryła brzegowa

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
Bryła brzegowa otaczająca model głowy

Bryła brzegowa (ang. Bounding Volume, objętość ograniczająca, BV) – bryła w uproszczony sposób przedstawiająca jak najmniejszą przestrzeń, w której całkowicie mieszczą się określone obiekty. Używa się ich, np. aby uprościć wykrywanie kolizji oraz sprawdzić widoczność na ekranie zawartych w nich obiektów, dlatego że wykorzystując uproszczone bryły można dużo szybciej i prościej wykonać potrzebne sprawdzenia.

Obiekty w grafice 3D najczęściej składają się z siatki wielokątów. Sprawdzenie kolizji każdego z tysięcy wielokątów z pierwszego obiektu z wielokątami z drugiego obiektu trwa dosyć długo, dlatego przy wykrywaniu kolizji dwóch obiektów najpierw sprawdza się, czy ich bounding volume mają kolizję, a jeżeli nie mają, to można od razu stwierdzić, że zawarte w nich obiekty też tej kolizji nie mają.

Najczęstsze typy[edytuj | edytuj kod]

  • Bounding sphere (ang. sphere – kula) to jak najmniejsza kula kompletnie otaczająca obiekt. Można bardzo szybko sprawdzić kolizję jednej kuli z drugą: dwie kule nie pokrywają się, gdy odległość między ich środkami jest większa od sumy ich promieni.
  • Bounding box (ang. box – pudełko) to jak najmniejszy prostopadłościan kompletnie otaczający dany obiekt.
    Bounding box może być ułożony:
    • w dowolnej pozycji, wtedy jest to oriented bounding box (OBB),
    • równo z osiami układu współrzędnych – axis-aligned bounding box (AABB)

Łatwiej jest sprawdzić kolizję brył typu AABB, lecz OBB dużo dokładniej opisują kształty zdefiniowanych obiektów.

Często stosuje się taką kolejność, że najpierw sprawdza się kolizję bounding sphere, później kolizję bounding box, a na końcu kolizję samych obiektów.

Hierarchie brył brzegowych[edytuj | edytuj kod]

Dodatkowo bryły brzegowe grupuje się w kolejne bryły brzegowe, a powtarzając procedurę tworzy się w ten sposób hierarchie (o strukturze drzewa, z jedną bryłą brzegową obejmującą całą scenę). Hierarchie te (ang. BVH, Bounding Volume Hierarchies) używa się powszechnie przy wykrywaniu kolizji oraz renderowaniu scen dynamicznych (obliczenie samego BVH jest kosztowne, ale jego zgrubna aktualizacja, po zmianie pozycji obiektów, jest prosta) techniką śledzenia promieni.

Obliczanie optymalnego BVH dla danego zastosowania jest zadaniem trudnym (liczba możliwych podziałów obiektów w binarnym BVH z AABB jest rzędu ). Korzysta się w tym celu albo z pomocy programu do modelowania, w którym taka hierarchia jest już zawarta w obiektach, albo używa algorytmów przybliżonych – korzystając z prostych AABB, rozpatrując jedynie kilka możliwości oraz stosując inne heurystyki.

Zobacz też[edytuj | edytuj kod]