A háromdimenziós grafikában mik azok a normálok és, hogyan kell kiszámolni azokat?
Például egy négyszög esetében.
Minden vertexhez tartozik egy normál ugye?
Mik azok a normálok?
Hogy kell helyesen kiszámolni azokat?
A wikin túl vannak bonyolítva a dolgok.
Azt már néztem és nem lett világos számomra.
Olyan magyarázat kéne ami egy egyszerű földi halandó megért.
Az a "gond", hogy ez egyáltalán nincs túlbonyolítva, sosem voltam annyira penge matekból, de ezt elég könnyen lehet érteni.
(Ennyi matektudás kell, ha valaki komolyabban akar 3d grafikával foglalkozni.)
Nem értem ami a weboldalon van.
Hülye voltam ide kérdést kiírni.
Egyébként ha szóban elmagyarázzák nekem akkor megértem de a képletekhez buta vagyok.
Nem látom át a matematikai összefüggéseket,sajnos én ilyen vagyok és ezért nem nagyon szeretem magamat de annyit tudok,hogy ha szavakba öntik,akkor sikerülhet nekem.
Tudom,hogy ha a nomrál vektor a felület síkjára merőleges.
a,b,c
e1 = b-a;
e2 = c-a;
nomal = e1.cross(e2); A cross vissza ad egy olyan vektort ami merőleges lesz mindkettőre.
Tudom,hogy a normálokkal lehet megszámolni az oldalakat(face) és azt is,hogy ezek merre néznek.
Két kérdésre akarok választ kapni.Jó volna ha megválaszolnátok de ne úgy,hogy linkeket küldtök.Vegyétek figyelembe,hogy nehéz felfogású vagyok.
Tudom,hogy a normálokkal lehet megszámolni az oldalakat(face) és azt is,hogy ezek merre néznek.
--
Ezen kívül még mire vannak a normálok?
Tudom,hogy a fényekhez is köze van de,hogyan van ez?
A fentebbi példám a sík felületek normáljánka kiszámítása és a simított normálokat hogyan kell kiszámolni?
Ne haragudj, de ha a képletekhez buta vagy, és nem érted a matematikai összefüggéseket, akkor nem 3D grafikával kéne foglalkoznod.
Valószínűleg nem ilyen választ szerettél volna, viszont ez az őszinte és helyes válasz.
A simított normálokat többféleképpen lehet, ha ismered a felület egyenletét (pl.gömb), akkor deriválással megkapható, de általában ez nincs meg és csak a háromszögek adatai vannak a birtokunkban, ekkor 1 háromszögre azzal a képlettel számolható amit írtál.
Ha a háromszögekre külön számolod, akkor nyilván nem lesz olyan sima az objektum, mert 2 egymás melletti háromszögnél nagy eltérések lehetnek, ezáltal látszani fog, hogy az objektum háromszögekből áll. simított normálokat akarsz, akkor az összes környező háromszög pontjainak a normálját összeadod, és annak a normalizált vektora lesz a pont normálja
A szerepe a fények kiszámításánál van, ez a vektor mondja meg, hogy mekkora dőlési szögben van a fényhez képest. Ha egy lapot majdnem oldalról világítunk, akkor máshogy fog kinézni, mintha felülről világítottuk volna.
Ez a számítás implementáció függő, a shaderek bevezetésével már a programozó maga is írhat saját számolást a fényre. Legáltalánosabb a diffuse (szórt fény) számítása, erre e következő képlet van:
diff = dot(L,N)
A fényvektor és a normálvektor dot productja megadja a köztük lévő szög koszinuszát, 0-1 közötti érték meghatározza, hogy mennyire felülről világítja a fény az adott háromszöget. Ha -1 és 0 között van akkor azt jelenti, hogy a fény alulról világít, úgyhogy azt le kell kezelni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!