I know there is a lot of resource with a lot of answers about this question, but there is something that i still don’t understand.
I am creating a 2D tile system. It’s a grid (x,y) and the resolution is defined by the level. Like google map for example or any tile system. Level is here to choose the resolution.
So, I have a scene, an orthographic camera, and one geometry (it’s a quad mesh) that i move to (0,0) to display the first tile, then to (512,0) for the second tile and so on. (My tiles are 512*512 pixels)
Everything works great ! And i can convert pixel to world coordinate and world coordinate easily (by normalizing between -1 and 1 and then unproject the vector to the camera)
But now, if i want to initialize my world (in world coordinate) with zoom = 2.
I do :
camera.zoom = 2
and i update the camera matrix.
The problem is this only works well if camera.zoom = 1. So, i need to compute the worldX, worldY which will work if my camera is at zoom = 2
And, for some reason, i also need to scale my whole scene, and apply transformations like shear.
If i do. that, when i compute pixel to worldCoordinate, it doesnt works at all
Is there something i am missing ?
I hope my message is understandable. If not, i will make some illustration about my problem
Thank you for your help.