A PN-háromszögek ( ang. curved point-normal triangles, PN triangles ) a háromdimenziós objektumok geometriai ábrázolásának egyik módja azok megjelenítésére.
A háromszögelt geometriai (általában 3D) alakzatok vizuális minőségének javítására tervezték . Simábbá teszi a renderelt objektum felületét.
Mindegyik PN-háromszög egy kocka alakú Bezier-háromszög , amely az eredeti lapos ("alap") háromszög három csúcsán (b 300 , b 030 , b 003 ) és három normálisán (n 200 , n 020 , n 002 ) alapul. A módszer fő gondolata az, hogy az alapháromszög csúcsairól és normálisairól szóló információkat használjuk fel egy köbös Bezier-háromszög létrehozásához minden ilyen alapháromszöghez, valamint a Bezier-háromszögből tetszőleges számú háromszög létrehozásának képessége.
Egy lapos háromszöghez levezették az ennek alapján felépített görbe vonalú háromszög felületének matematikai modelljét, valamint a normálok eloszlásának matematikai modelljét a teljes görbe háromszögön belül. Ezek a modellek vagy függvények harmadik, illetve másodfokú polinomok. Mindegyik háromszög esetében ezek egymástól függetlenül léteznek.
Megjegyzés: Ez a cikk egy másodfokú normális eloszlásfüggvénnyel foglalkozik, de lehetőség van lineáris függvény használatára is, amely szintén jó eredményeket ad.
Itt u, v és w baricentrikus koordináták . u, v, w ≥ 0; w = 1 - u - v .
A b ijk együtthatók a következőképpen számíthatók ki:
Itt P k a k kezdeti csúcs koordinátáinak vektora, k= 1,3 .
N k az eredeti k csúcs normálisának koordinátáinak vektora, k= 1,3 .
Itt u, v és w baricentrikus koordináták . u, v, w ≥ 0; w = 1 - u - v .
Az n ijk együtthatók a következőképpen számíthatók ki:
Itt P k a k kezdeti csúcs koordinátáinak vektora, k= 1,3 .
N k az eredeti k csúcs normálisának koordinátáinak vektora, k= 1,3 .
Az eredeti lapos háromszög csúcsainak koordinátáinak, valamint az ezeken a csúcsokon lévő normális értékeknek a helyettesítésével az 1.1 és 1.2 modellekben meghatározott együtthatójú függvényeket kapunk. Az ilyen függvények minden párja a renderelt objektum egyetlen görbe háromszögét írja le.
A lapos háromszögekből álló eredeti objektum vizuális minőségének javítása érdekében a benne szereplő háromszögek görbe alakot kapnak, ami simábbá teszi az objektumot. Ezenkívül az eredeti háromszögeknél bizonyos szintű részletesség van beállítva. Minél magasabb a részletgazdagság, annál simábban néz ki a renderelt objektum. A részletességnek köszönhető, hogy a PN háromszögek mechanizmusa „beindul”.
Itt a részletezés egy háromszög felosztása minden él mentén ugyanannyi szegmensre, és egy él mentén minden szegmens egyenlő egymással. Az itt tárgyalt mechanizmus keretein belül szükséges a görbe vonalú háromszögek részletezése. Egy tetszőleges háromszög particionálására vonatkozó szabályok megalkotása során azonban absztrakt lapos háromszöggel dolgoznak, mivel csak a háromszögen belüli arányos kapcsolatok fontosak. A felosztás után egy ilyen háromszög sok kisebb háromszögből áll, amelyek egy szabályos rács.
A háromszög felosztása baricentrikus koordinátákkal történik . Ennek eredményeként minden "kis" háromszög megkapja a saját baricentrikus koordinátáit u, v és w , amelyek egyediek az őket határoló eredeti háromszögön belül.
Egy kezdeti lapos háromszögekből álló valós tárgymodellben mindegyik "kis" háromszögük pontosan egy "új kis" háromszögnek fog megfelelni (az eredeti lapos háromszög felülete fölé "emelve"), amelynek három csúcsa (és azok abszolút koordináták) és a saját három normálisa. Kiszámításuk az 1.1 és 1.2 modellekből külön-külön minden egyes kezdeti "nagy" háromszögre külön-külön meghatározott együtthatókkal rendelkező függvényeken keresztül történik. Az összes "kis" háromszög csúcsainak baricentrikus koordinátáit u, v és w ( w = 1 - u - v ), amelyeket a rajtuk kívüli kezdeti háromszöghez viszonyítva kapunk, felváltva behelyettesítjük ezekbe a függvényekbe. Ahogy fentebb említettük, ezeket a függvényeket minden eredeti lapos háromszöghez meg kell határozni. Ezek a függvények maguk is képletek és változatlanok maradnak. A görbe vonalú háromszög részletezése pontosan az u és v koordináták behelyettesítésével valósul meg ezekben a képletekben , mivel a görbe háromszög minden egyes pontjának baricentrikus koordinátái megegyeznek az eredeti "nagy" megfelelő pontjának baricentrikus koordinátáival. háromszög. Bármely „új kis” háromszög minden csúcsának helyettesítése eredményeként megkapjuk annak abszolút koordinátáit és normálisát, ami a későbbiekben lehetővé teszi az ilyen háromszögek „elküldését” megjelenítésre.
A részletességi szint értékét a következőképpen határozzuk meg. Ha az él két szegmensre van osztva, akkor a kiválasztott részletességi szint eggyel egyenlő. Ha az él három szegmensre van felosztva, akkor a részletességi szint kettő, és így tovább.
Az ábrán a bal oldali képet az eredeti, lapos háromszögekből álló tárgy árnyékolásával kaptuk, a Gouraud-modell szerint . A középen lévő képet a PN háromszögek mechanizmusával kaptuk, de itt NEM használunk külön függvényt a normálértékek kiszámításához. A jobb oldali képet pedig az ebben a cikkben bemutatott PN-háromszög-mechanizmussal kaptuk, ahol a normálértékeket másodlagosan, a koordinátaszámítási függvénytől függetlenül számítjuk ki.
Tekintettel arra, hogy a csúcsok és a normálok függvényei minden egyes eredeti lapos háromszögre egyszer kerülnek kiszámításra, függetlenül a részletezettségtől, jelentős memóriamegtakarítás érhető el.