mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-05-11 22:52:11 +02:00
94 lines
2.6 KiB
Plaintext
94 lines
2.6 KiB
Plaintext
|
|
------------------
|
|
|
|
- Model View Matrix
|
|
|
|
Objektumot (Egy objektum vertexit) a világba
|
|
|
|
- Projection Matrix:
|
|
|
|
Ha a camera mátrix identitás: x: -1, 1, y: -1, 1, z: -1, 1
|
|
ebből (is) következik:
|
|
|
|
x: -1, 1
|
|
y: -1, 1
|
|
z: -1, 1
|
|
|
|
kockába ami van azt rajzolja ki az opengl
|
|
|
|
azaz mninden vertexet úgy mozgat a camera world mátrix, hogy ebbe legyen bent (amikor látszik)
|
|
|
|
- Egér koordináták 3d világba átszámolása
|
|
|
|
Azaz a 3d világ koordinátát akarjuk megkapni képernyő koordinátákból.
|
|
|
|
Először a képernyő koordinátákat át kell számolni -1,1 -1,1 közé
|
|
Majd a camera mátrix műveletének az ellentettjét kell elvégezni -> inverz mátrix
|
|
|
|
És ha egyenest akarunk: Ugyanez még egyszer, csak a z-n elmozgatva valamennyivel -> két pont (Raycasting)
|
|
|
|
- Egér koordináta 2d-ben / Orthografikus kamerával:
|
|
|
|
Az előző módszer ugyanúgy működik 2dben
|
|
|
|
De sokszor egyszerűbben is kel lehet számolni kézzel, pl ui nál, ha tudjuk a koordináta renszert
|
|
ált direktbe át lehet számolni a képernyő koordinátákat
|
|
|
|
-------------------
|
|
|
|
Pixel Perfect rendering:
|
|
|
|
A koordináta rendszerünket pixelméretben adjuk meg, és mindent intekké kerekítünk, amikor csak lehet.
|
|
|
|
----------------------
|
|
|
|
UI
|
|
|
|
Fő kamerával rajzolva:
|
|
|
|
Mindíg oda van rakva a kamera elé rajzolás előtt.
|
|
|
|
Saját kamerával rajzolva:
|
|
|
|
Valamelyik sarok ki van kiáltva 0, 0 nak -> bal felső vagy alső ált.
|
|
|
|
Kamera rá van állítva, és a fő kamera rajzolása után ez a képre rá van renderelve.
|
|
|
|
----------------------
|
|
|
|
UI Koordináta rendszer
|
|
|
|
Low res uinál lehet pixel perfekten
|
|
|
|
De például lehet azt is mondani, hogy a magasság mindíg 100 egység legyen, és a szélességet változtatjuk a képarány szerint,
|
|
így gyakorlatilag képmagasság százalékban tudjuk elhelyezni az elemeket.
|
|
|
|
-------------------
|
|
|
|
3d/fps camera strafe
|
|
|
|
cross produkt -> vektoriális szorzat
|
|
|
|
up vektor + forward vektor
|
|
forward vektor -> ha azt mondjuk, hogy x+ fele néz a karakter/kamera, akkor a (1, 0, 0) vektort elforgatjuk a karakter/kamera
|
|
rotation vektorában tárolt fokokkal.
|
|
|
|
--------------------
|
|
|
|
Ütközés viszgálat
|
|
|
|
Sok módszer van.
|
|
|
|
pl:
|
|
|
|
Tilemapnál lehet viszgálni direkte a tile-kat, pl amikor a karaktert mozgatni akarjuk, és olyan tilére lépne, amire nem lehet akkor nem engedjük mozogni.
|
|
|
|
Itt az a gond, hogy változó fps-nél néha tavolabb áll meg a karaketer egy faltól. -> Csinálhatjuk több lépésben.
|
|
|
|
Mindkét módszernél másik probléma, hogy egy lépés ha túl nagy át lehet menni falakon. Pl Super Mario 64 speedrunok is használnak ilyeneket.
|
|
|
|
Elég nagy sebességnél, lehet több részre bontani etc.
|
|
|
|
|
|
|