Кіріспе
Графикалық құрылым. Шекаралық көлем иерархиясы (BVH) — геометриялық нысандар жиынтығындағы ағаш тәрізді құрылым. Ағаштың жапырақ түйіндерін құрайтын барлық геометриялық нысандар шекаралық көлемдерге оралған. Бұл түйіндер кішігірім жиынтықтарға топтастырылып, ірі шекаралық көлемдерге енгізіледі. Олар өз кезегінде тағы да ірі шекаралық көлемдер ішінде рекурсивті түрде топтастырылып, жабылады, нәтижесінде ағаштың жоғарғы жағында бір шекаралық көлем болатын ағаш құрылымы пайда болады. Шекаралық көлем иерархиясы геометриялық нысандар жиынтығымен жұмыс істеудегі соқтығысуды анықтау және сәулелерді іздеу сияқты бірнеше операцияларды тиімді ету үшін қолданылады. Нысандарды шекаралық көлемдерге орап, олардың геометриясын тексеруден бұрын соқтығысу сынақтарын жүргізу сынақтарды жеңілдетеді және өнімділікті айтарлықтай арттыра алады, бірақ шекаралық көлемдер арасындағы жұптық сынақтардың саны сол күйінде қалады. Шекаралық көлемдерді иерархиялық құрылымға орналастыру арқылы уақыт күрделілігін (жүргізілген сынақтардың саны) нысандар санының логарифміне дейін азайтуға болады. Мұндай иерархия болғанда, соқтығысуды тексеру кезінде, егер басты көлемдер қиылыспаса, бағынышты көлемдерді тексерудің қажеті жоқ (мысалы, егер екі бампердің шекаралық көлемдері қиылыспаса, бамперлердің өздерінің шекаралық көлемдерін соқтығысуға тексерудің қажеті болмайды).
A bounding volume hierarchy (BVH) is a tree structure on a set of geometric objects. All geometric objects, which form the leaf nodes of the tree, are wrapped in bounding volumes. These nodes are then grouped as small sets and enclosed within larger bounding volumes. These, in turn, are also grouped and enclosed within other larger bounding volumes in a recursive fashion, eventually resulting in a tree structure with a single bounding volume at the top of the tree. Bounding volume hierarchies are used to support several operations on sets of geometric objects efficiently, such as in collision detection and ray tracing. Although wrapping objects in bounding volumes and performing collision tests on them before testing the object geometry itself simplifies the tests and can result in significant performance improvements, the same number of pairwise tests between bounding volumes are still being performed. By arranging the bounding volumes into a bounding volume hierarchy, the time complexity (the number of tests performed) can be reduced to logarithmic in the number of objects. With such a hierarchy in place, during collision testing, children volumes do not have to be examined if their parent volumes are not intersected (for example, if the bounding volumes of two bumper cars do not intersect, the bounding volumes of the bumpers themselves would not have to be checked for collision).
Құрылыс
Ағаш құрылысының үш негізгі әдісі бар: жоғарыдан төменге, төменнен жоғарыға және енгізу әдістері. Жоғарыдан төменге қарайғы әдістер кіріс жиынтығын екі (немесе одан көп) кіші жиынға бөліп, оларды таңдалған шектеу көлемінде орналастырады, содан кейін әр кіші жиын тек бір примитивтен (жапырақ түйіндеріне жетеді) тұрғанға дейін бөлуді (және шектеуді) рекурсивті түрде жалғастырады. Жоғарыдан төменге қарайғы әдістерді іске асыру оңай, құрастыру жылдам және ең көп таралған, бірақ олар әдетте ең жақсы ағаштарды жасамайды. Төменнен жоғарыға қарайғы әдістер кіріс жиынтығын ағаш жапырақтары ретінде пайдаланып, екеуін (немесе одан да көбін) біріктіріп, жаңа (ішкі) түйін құрайды, барлық элемент бір түйінге (ағаш түбіне) біріктірілгенге дейін осылай жалғасады. Төменнен жоғарыға қарайғы әдістерді іске асыру қиын, бірақ олар көбінесе жақсырақ ағаштарды құрайды. Жақындағы зерттеулер көрсеткендей, төмен өлшемді кеңістікте кеңістікті толтыру қисығын қолданып объектілерді сұрыптау және осы реттілікке негізделген жуық кластерлеу арқылы құрылыс жылдамдығын айтарлықтай арттыруға болады (бұл жоғарыдан төменге қарайғы әдістермен шайқасады немесе одан да жақсы нәтиже береді). Жоғарыдан төменге және төменнен жоғарыға қарайғы әдістер екеуі де оффлайн әдістер саналады, себебі олар құрылысты бастамас бұрын барлық примитивтердің қолжетімді болуын қажет етеді. Енгізу әдістері бос ағаштан бастап, бір уақытта бір объектіні енгізу арқылы ағашты құрастырады. Енгізу орны ағаштың өсуін барынша азайту үшін, шығын метрикасына сәйкес таңдалуы керек. Енгізу әдістері онлайн әдістер саналады, өйткені олар құрылысты бастамас бұрын барлық примитивтердің болуын талап етпейді, сонымен қатар жұмыс істеу кезінде жаңартулар жасауға мүмкіндік береді.
Қолданылуы
BVH сәулелерді іздеу кезінде көріністегі мүмкін қиылысу нүктелерін жою үшін жиі қолданылады, қазіргі сәулемен қиылыспайтын шектеулі көлемдерде орналасқан геометриялық нысандарды елеу арқылы. Бұған қоса, жалпы өнімділікті жақсарту мақсатында, егер сәуленің ең жақын қиылысуы ғана маңызды болса, сәулелерді іздеу алгоритмі түйіндерге түсетін кезде және бірнеше дочерлік түйіндер сәулені қиып өткенде, алгоритм алдымен жақын көлемді қарастырады. Егер ол қиылысу нүктесін тапса және ол екінші (немесе басқа) көлемдегі кез келген қиылысудан анық жақын болса (яғни көлемдер бірін-бірі жаппаса), онда екінші көлемді қауіпсіз түрде елеуге болады. BVH арқылы өту кезінде осындай оңтайландырулар екінші көлемнің дочерлік көлемдеріне түсетін кезде де қолданылуы мүмкін, бұл іздеу кеңістігін шектеуге және өту уақытын қысқартуға көмектеседі. BVH үшін, әсіресе AABB (ось бойынша шектелген қораптар) негізінде көптеген арнайы әдістер әзірленген, мысалы, параллель құрылыс, SIMD үдетілген өту, жақсы бөлу эвристикалары (SAH – беттік аумақ эвристикасы сәулелерді іздеуде жиі қолданылады), кең ағаштар (4-тік және 16-лық ағаштар нақты көріністер үшін құрастыру және сұрау өнімділігінде белгілі бір артықшылықтар береді) және жылдам құрылымды жаңарту (нақты уақыт қосымшаларында нысандар салыстырмалы түрде баяу қозғалуы немесе кеңістікте деформациялануы мүмкін, немесе тоқтатылуы мүмкін, және бір BVH толық қайта құрусыз жарамды күйде жаңартылуы мүмкін). BVH нысандарды толық қайта құрусыз енгізуге және жоюға да мүмкіндік береді, бірақ нәтижедегі BVH толық қайта құруға қарағанда нашар сұрау өнімділігіне ие болуы мүмкін. Осы мәселелерді шешу үшін (және жылдам құрылымды жаңарту оңтайлы емес екенін ескере отырып), жаңа BVH жеткілікті өзгеріс анықталғаннан кейін (жапырақтардың көп қабаттасуы, енгізулер мен жоюлар саны шекті мәннен асқанда және басқа да нақты эвристикалар) параллель немесе синхронды түрде асинхронды түрде құрылуы мүмкін. BVH сахналық граф әдістерімен және геометриялық инстанцированиемен де біріктірілуі мүмкін, бұл жадты пайдалануды азайтуға, құрылымды жаңартуды және толық қайта құру өнімділігін жақсартуға, сондай-ақ нысандарды немесе примитивтерді жақсырақ бөлуге көмектеседі.