I am trying to implement panning and zomming in OpenGL, which I did ok, but problem. I want to pan while keeping the click 3d point under the mouse while I mouse the mouse, and zooming, I want the 3d click point to also stay under the mouse when using the mouse wheel to zoom.
Does anyone have some suggestions or pseudo-code for this simple (but yet complicated for me) thing? I have a raycast function that gives me the 3d point under the mouse, but I have no clue how to apply this to what I'm trying to do!
ok, I found a way for the zoom. I use camOrg += camDir*Delta; but for panning while keeping the clicked point under the mouse, I just can't figure it out! please help :wacko:
It reads a bit as though you missunderstand the problem behind what you want to do. Or... I don't get what you mean
camOrg += camDir*Delta; reads as if you move the camera foreward. This is not the same as zooming. I would say that for zooming you would typically adjust the projection matrix rather than moving the camera. This means that while zooming your camera stays in one place. Therefore if your mouse position is not exactly along the center you can not zoom and keep the mouse in relative distance to the center of your screen. When you zoom, everything will move towards the outer egdes of your screen (exept the exact center). Think of a sniper in a FPS. You don't have to move the player while you zoom in with the scope. You could reorient the camera to the point that you click and then zoom in.
As for the panning there is also a problem with your idea. Panning is essentialy a rotation around the up vector. You could make a 360 Degree rotation. It is impossible to keep the mouse click in possition while rotating like that. Maybe you need to be more specific about what you try to achieve.
For the zoom thing, yes, I move the camera in the direction of the point I clicked on, and it works great. I mean, it looks like it zoom, so it's good enough for me, it' only for my OBJ viewer, not for a game.
Panning, I want to move left/right/up/down the 2D screen, not rotate. But I want to keep the 3D clicked point (or the object) under the mouse while I drag the mouse, so you can predict how much to drag the mouse to have the scene moved to where you want it.