Universitatea Politehnica Bucuresti Facultatea de Automatica si Calculatoare
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare • Detectarea coliziunilor 3 D Andrei Jancă 342 C 4 andreyij@yahoo. com 15. 01. 2010 Sisteme de prelucrare grafica 1
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Despre. . . • Detectarea coliziunilor 3 D constituie o problema importanta in multe aplicatii grafice • Se foloseste in : – – – 15. 01. 2010 jocurilor 3 D sisteme CAD simulatoare de zbor simularea unor fenomene fizice robotica Sisteme de prelucrare grafica 2
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Probleme • Fiecare obiect se reprezintă folosind un set de primitive (de obicei triunghiuri ) • Pentru a determina intersecţia a două obiecte , este necesar să determinăm intersectia a două primitive • Intersecţia a două primitive trebuie realizată rapid • Intersecţia a două obiecte trebuie realizată testând cât mai puţine intersecţii între primitive 15. 01. 2010 Sisteme de prelucrare grafica 3
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Soluţii • Bound Volume Hierarchy - structură de date ce rezolvă ambele probleme • Se foloseşte o structură ierarhică precum arborele binar • Nodurile conţin un volum de incadrare, numit Bound Volume • Bound Volume – formă geometrică ce incadrează in volumul său un grup de primitive 15. 01. 2010 Sisteme de prelucrare grafica 4
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Bound Volume • Sfera - construcţia sa este facilă, insă încadrarea nu are precizie mare • AABB – Axis aligned Bound Box - paralelipiped ale carui normale sunt paralele cu axele de coordonate • OBB - Oriented Bounding Box - paralelipiped rotit, ale carui normale nu sunt neaparat paralele cu axele de coordonate. Pentru a determina o astfel de incadrare trebuie sa tinem cont de orientarea normalelor primitivelor 15. 01. 2010 Sisteme de prelucrare grafica 5
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Structura ierarhică • Arbore binar - se preferă construcţia top-down, in care un BV este împărţit în două BV mai mici , acest lucru repetându-se până când se atinge o limită impusă sau fiecare triunghi se află într-un BV • Frunzele sunt cele care conţin primitivele încadrate în BV de volum minim • complexitatea construcţiei arborelui binar diferă în funcţie de volumul de încadrare ales 15. 01. 2010 Sisteme de prelucrare grafica 6
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Aplicaţia • 3 D Shooter • Testarea se face pentru gloanţe şi inamici • Datorită configuraţiei nu foarte complexe a modelelor Milkshape 3 D, am ales implementarea bazată pe AABB 15. 01. 2010 Sisteme de prelucrare grafica 7
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Arbori AABB • Intersecţia a două astfel de volume : • bool AABB_intersect(A, B) returns({OVERLAP, DISJOINT}); for each i in {x, y, z} if (A(i) min > B(i) max or B(i)min > A(i)max) return (DISJOINT); return (OVERLAP); • Complexitate redusă 15. 01. 2010 Sisteme de prelucrare grafica 8
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Arbori AABB(2) • Intersecţia a doi arbori : • bool Find. First. Hit. CD(A, B) returns ({TRUE, FALSE}); if (is. Leaf (A) and is. Leaf (B)) for each triangle pair Ta € Ac and TB € Bc if (overlap(TA, T#)) return TRUE; else if (is. Not. Leaf (A) and is. Not. Leaf (B)) if (overlap(ABv, BBv)) if (Volume(A) > Volume(B)) for each child Ca € Ac Find. First. Hit. CD(Ca, B) else for each child Cb € Bc Find. First. Hit. CD(A, CB) else if (is. Leaf (A) and is. Not. Leaf (B)) if(overlap(ABv, BBv)) for each child Cb € Bc Find. First. Hit. CD(Cb, A) else if(overlap(BBv, ABv)) for each child Ca € Ac Find. First. Hit. CD(Ca, B) 15. 01. 2010 Sisteme de prelucrare grafica 9
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Arbori AABB(3) • Construcţia unui arbore AABB: • Top-down • Împărţirea BV : plan care împarte volumul este paralel cu OXY, OYZ sau OXZ => => suficient să facem alegerea apartenenţei la un volum prin compararea coordonatei Z, X sau respectiv Y a punctelor ce descriu primitiva 15. 01. 2010 Sisteme de prelucrare grafica 10
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Detalii • Trebuie determinat in mod eficient, pentru fiecare glont, cu ce inamic se poate intersecta • Am considerat harta ca fiind o matrice si modelele sunt plasate in celule din aceasta matrice, pot determina foarte usor ce model (daca este cazul) poate intersecta un anumit glont • Implementarea este una generică, şi poate fi testată şi pentru două modele complexe (2 inamici în mişcare) 15. 01. 2010 Sisteme de prelucrare grafica 11
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Bibliografie • [1] T. Akenine-Moller, E. Haines - Real-Time Rendering (2 nd Edition) , 2002 15. 01. 2010 Sisteme de prelucrare grafica 12
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Vă mulţumesc pentru atenţie! 15. 01. 2010 Sisteme de prelucrare grafica 13
- Slides: 13