130 likes | 344 Views
3D obrezovanje. 3D Clipping. view frustrum. clipping planes. clipped. 3D projekcije in obrezovanje. Paralelna projekcija: vidni volumen je kvader Perspektivna projekcija: vidni volumen (frustrum) je prirezana piramida Obrezovanje:
E N D
3D obrezovanje 3D Clipping view frustrum clipping planes clipped
3D projekcije in obrezovanje • Paralelna projekcija: vidni volumen je kvader • Perspektivna projekcija: vidni volumen (frustrum) je prirezana piramida • Obrezovanje: • Podane imamo koordinate primitivov (črt, poligonov, krogov, elips ipd) • Določiti moramo vidne komponente primitivov (na primer črt) • Metode: • Reševanje sistemov enačb (hitro izločanje, preverjanje končnih točk) • Reševanje parametričnih enačb • Cilj: učinkovitost (čimmanj operacij s plavajočo vejico) • Obrezovanje v 3D prostoru • Nekatere 2D algoritme lahko razširimo v 3D • Potrebujemo specifikacijo in implementacijo vidnih volumnov
3D Obrezovanje (clipping) levo Zadnja ravnina obrezovanja. Prednja ravnina obrezovanja Računati moramo presečišča s 6 ploskvami desno • Pri ortografskih projekcijah je volumen gledanja kvader. • Pri perspektivni projekciji je volumen gledanja prisekana piramida (frustrum).
3D obrezovanje poligonov Zadošča, da poligon obrezujemo glede na piramido gledanja
Kanoničen (normalen) volumen gledanja Y axis +1 y=-z Zadnja ravnina obrezovanja Prednja ravnina obrezovanja z=-1 -Z -1 3-D razširitev 2-D algoritma Cohen-Sutherland, 6 bitna koda. Bit je true (1), če velja: Bit 1 – točka je nad vidnim volumnom y > -z Bit 2 - točka je pod vidnim volumnom y < z Bit 3 - točka je desno od volumna x > -z Bit 4 - točka je levo od volumna x < z Bit 5 - točka jeza vidnim volumnom z < -1 Bit 6 - točka je pred vidnim volumnom z > zmin y=z -1
3D obrezovanje • Uporabimo lahko algoritem Cohen-Sutherland. • Sedaj 6-bitna koda. • Trivijalno sprejmemo, če sta kodi obeh končnih točk enaki 000000. • Izvedemo logični AND:zavrnemo, če različen od 0. • Poiščemo presečišča z omejujočo ravnino in dodamo obe novi črti v seznam črt.
3D obrezovanje poligonov • na 3D razširimo algoritemSutherland-Hodgman. • Proceduro ‘CLIP’ kličemo 6 krat namesto 4 krat Demo
Algoritem Sutherland-Hodgman Znotraj Izven Znotraj Izven Znotraj Izven Znotraj Izven Najprej dodamo presečišče Dodamo Verteks Dodamo presečišče Nato dodamo še verteks Nič ne dodamo. 4 primeri obrezovanja poligonov (kaj dodajamo v izhodni seznam): Primer 1 Primer 2. Primer 3 Primer 4