bevezetés - inf.u-szeged.huvargalg/oktatas/fgraf_14t/03_utkozes.pdf · bevezetés Ütközés...

21

Upload: others

Post on 06-Sep-2019

9 views

Category:

Documents


0 download

TRANSCRIPT

Bevezetés Ütközés detektálás

Elengedhetetlen a játékokban, mozi produkciós eszközökben

Nélküle kvantum hatás lép fel Az objektumok áthaladnak a többi objektumon

A valósághű megjelenítés része

Nem tisztán számítógépes grafikai algoritmus De nagyon fontos

Sok alap építőkocka áll már rendelkezésre

Térbeli adatstruktúrák

Metszés teszt

Technikák Ray-tracing használata

Nagyon egyszerű

Nem pontos

Nagyon gyors

Néha elegendő

Határoló térfogat hierarchiák Sokkal bonyolultabb

Lassabb

Pontos eredményt képes adni

Hatékony ütközés detektálás néhány száz objektumra

Általában Három fő rész

Ütközés detektálás

Ütközés meghatározás

Válasz az üközésre

Az első kettővel foglalkozunk A harmadik fizikai alapú animációt is magába foglalja

Egyszerű alkalmazásokhoz sugár használata

Határoló térfogat hierarchiák használata két bonyolult objektum ütközésekor

Mi van akkor ha néhány száz objektumunk van?

Nagyon sok objektumra Határoló térfogatok ellenőrzése mindegyik

objektumra Kis méretű halmazra jól alkalmazható

Nem okos

Tfh. n darab mozgó objektumunk van

ellenőrzés

m statikus objektum esetén további mn ellenőrzést kell elvégezni

Ki kell szűrni azokat az objektumokat, melyek ütköznek

Utána lehet más algoritmusokat használni

2

n

Ütközés detektálás sugarakkal Képzeljünk el egy kocsit, amely felfele halad egy lejtőn

Teszteljük az összes kerékhez tartozó háromszöget az út geometriájához

Bizonyos alkalmazások esetén

Közelíthetünk és még így is jó eredményt kapunk

Ötlet

A bonyolult objektumot sugarak halmazával közelítjük

Ütközés detektálás sugarakkal Mindegyik kerékhez egy sugarat helyezünk el

Számítsuk ki a legközelebbi metszéspontot, t, a sugár és az út geometriája között

Ha t = 0

A kocsi az úton van

Ha t > 0

A kocsi repül az út felett

Ha t < 0

A kocsi mélyszántást csinál az úton

t értékét használjuk az egyszerű ütközés válaszra

Ütközés detektálás sugarakkal Egyszerűsített kocsi

De az út nem az

Térbeli adat struktúra az útra nézve

Használjuk a hierarchikus határoló térfogatot vagy BSP fát például

A távolság negatív is lehet a sugár mentén

Pozitív és negatív irányba is keresni kell

A sugár mozgatása visszafele, amíg kívül esik az út geometriájának határoló térfogatán

Másik egyszerűsítés Néha a 3D-s műveletek 2D-s műveletekké alakíthatóak

Például útvesztő

Egy ember a labirintusban sétál

Közelíthető egy körrel

Ellenőrizzük a kört az útvesztő vonalaival szemben

Mozgassuk a falakat a kör sugarával arrébb

A kör középpontjának az ellenőrzése a falakkal

Ütközés detektálás sok objektumra és pontosan

Nyesés és pontos ütközés

Szimuláció – objektumok mozgása

Összetett objektumok összetett objektumok ellen Ha pontos eredmény szükséges

Hierarchikus határoló térfogat

Ha a háromszögek átfedőek

Pontos metszés kiszámítása, ha szükséges

Hierarchikus határoló térfogat (HHT) felépítésének a tisztázása

Példa hierarchikus határoló térfogat felépítésére Felosztható a háromszögek szintjén is

vágósíkhasználata

Rendezés síkokkalfigyelembevéve

háromszög középpontjait

+

Minimálisdobozok keresése

=

…stb.

Pszeudó kód HHT-HHT esetén Négy eset

Levél-levél csomópont

Belső csomómópontbelső

Belső-levél csomópont

Levél-belső csomópont

Megjegyzések a pszeukódra Befejeződik, ha megtalálja az első ütköző háromszög

pár esetén

Egyszerűen módosítható úgy, hogy folyatatódjon a bejárás és mindegyik párost egy listába rakjuk

Meglehetősen egyszerű forgatást az objektumokrabevezetni

Kompromisszumok Határoló térfogat választása

AABB, OBB, k-DOP, gömb

Általában a szűkebb határoló térfogat lassabbellenőrzés

Kevésbé szűk térfogat a végén több háromszög-háromszög ellenőrzést ad

Költségfüggvény

Ütközés detektálás sok objektumra Miért van szükség rá?

Képzeljünk el egy lejtőn leguruló több száz követ

Első szintű ütközés detektálás

A második ellenőrzést kevesebbszer szeretnénkvégrehajtani

Tételezzünk fel magas képkocka-képkocka koherenciát

Azt jelenti, hogy objektum az előző képkockához képest kicsitmozdult el.

Elfogadható

Pásztázás és nyesés algoritmus[Ming Lin] Tfh. az objektumok forgathatók és eltolhatók

Ezután megtalálhatunk egy olyan minimális kockát, amelymindegyik forgatásra tartalmazza az objektumot

Csináljunk ütközés átfedést háromszor

x, y és z tengelyre

Csak egy tengelyre vizsgáljuk

Mindegyik kocka egy intervallum erre a tengelyre nézve

si-k és ei-k határozzák meg

Ahol si < ei ; 0<=i<n

Pásztázás és nyesés Az si-k és ei-k értékek növekvő sorrendbe vannak

rendezve egy listában

Járjuk be a listát az elejétől a végéig

Amikor egy s-sel találkozik Jelöljük meg a listát aktívként egyactive_interval_list listában

Amikor egy e-vel találkozik Töröljük a listát az active_interval_list listából

Mindegyik intervallum az active_interval_list listában átfedő

Pásztázás és nyesés A rendezés drága O(n*log n)

Kihasználjuk a képkockák koherenciáját

A lista feltehetően nem változik nagyon

Újra rendezés buborék vagy beszúró rendezéssel

O(n)

Pásztázás és nyesés

Pásztázás és nyesés Az időbeli koherenciát kihasználva

Mindegyik intervallum párra egy logikai változót definiálunk

Igaz, ha átfedőek, különben hamis

Az első rendezés után inicializáljuk őket

Feltesszük, hogy az előző képkockán átfedőek voltak

Ha egy intervallum kezdőpontja helyet cserél a végponttal

A státusza az intervallumnak invertálódik

Ez fordítva is igaz

A 3 fő tengelyre nézve előállíthatjuk az átfedő intervallumok listáját

Ha mind a három átfedő, akkor az AABB is átfedő