Mi fán terem a backface culling?
OpenGL-be próbálkozgatok. A vágási algoritmusokkal kísérletezek, és ennél megakadtam. Ugye ez az algoritmus azt csinálná, hogy ha az adott háromszögnek a normál vektora és a kamera irányvektora által közbezárt szög nagyobb mint 90 fok, akkor azt a háromszöget el lehet dobni.
A háromszög normálvektorát az N=(r2-r1)*(r3+r1) képlettel számoltam ki.
A két vektor által bezárt szöget, a vektorok skaláris szorzatának a képletével számoltattam ki.
Oda figyeltem hogy a háromszögek pontjait óramutató járásával ellentétesen lehessen bejárni.
Valamit rosszul csináltam vagy kifelejtettem? Mert ez nem akar működni. Azért nem engedélyezem a hátsólap kivágást az OpenGL-be, mert az valamiért nem akart normálisan működni nekem. Meg ebből többet tanulhatok.
A normálvektor az N = (p2 - p1) x (p3 - p1),
ahol x cross product.
OpenGL-ben engedélyezned kell:
glEnable(GL_CULL_FACE)
glCullFace(GL_FRONT) // GL_BACK, GL_FRONT_AND_BACK
glGetIntegerv(GL_CULL_FACE_MODE, &mode);
if (mode == GL_FRONT) cout<<"it works"
hasonló eredményt kell kapnod:
bocs, a linkelt képen elírtam a címet
az ott nyilván front-face culling, hogy látszódjon az eredmény
Jaj. Hogy az X az keresztszorzást jelent. Látszik mennyire vagyok otthol még a matematikába.
Köszönöm a válaszokat.
"Azért nem engedélyezem a hátsólap kivágást az OpenGL-be, mert az valamiért nem akart normálisan működni nekem."
Winding order jól volt beállítva, csak mert nem mindegy melyik számít hátsónak. [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!