------------------ - 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.