Advertisement

Mouse Coordinates to World Coordinates

Started by January 24, 2001 07:06 AM
6 comments, last by PsYchOtroW 23 years, 9 months ago
Hi Everybody, can somebody help me to translate the Mouse Coordinates to World Coordinates, i don`t need the Z Value because every item i will place in my world will be at the same z value. I think that i have to use the View Camera but i don`t know how. Thanx Lutz Hören [ Power Productions ]
psYchOtroW
Aren`t there any Tutorials?????

Lutz Hören

[ Power Productions ]
psYchOtroW
Advertisement
Trying to do exactly the same thing myself at the moment.

glUnProject seems to be the way to go - it''ll reverse map a screen xyz coordinate to world coords using your current modelview and perspective matrices.

Haven''t quite got it working yet, though

Al.
me too - it''s not working
in the tutorial "object selecting" from Mr-GameMaker is a little part that explain how we can translate the mouse coord to word coord but for me it didn`t work so i search for more tutorials...

Lutz Hören

[ Power Productions ]
psYchOtroW
i posted this in another topic (it works)

glFlush();
POINT pt;
GetCursorPos(&pt);

GLint viewport[4];
GLdouble mvmatrix[16], projmatrix[16];
GLint realy; // OpenGL y coordinate position
GLdouble wx, wy, wz; // returned world x, y, z coords

glGetIntegerv (GL_VIEWPORT, viewport);
glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix);
glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);

// note viewport[3] is height of window in pixels

realy = viewport[3] - (GLint) pt.y - 1;

float depth;
glReadPixels(pt.x,realy,1,1,GL_DEPTH_COMPONENT, GL_FLOAT, &depth);

gluUnProject ((GLdouble) pt.x, (GLdouble) realy, depth, mvmatrix, projmatrix, viewport, &wx, &wy, &wz);

wx,wy,wz are the coordinates of the position under the mouse coord.

more info can be found in the faq http://www.frii.com/~martz/oglfaq/
also check out the glut distribution examples are bound to be in there


http://members.xoom.com/myBollux
Advertisement
also see my new post

http://members.xoom.com/myBollux
Since z is constant, a simple linear mapping will transform mouse coordinates to window coordinates.

(0,0)------------(x,0)
| |
| mouse |
| (MS GDI) |
| |
| |
(y,0)------------(x,y)

to

(0,y)------------(x,y)
| |
| OpenGL |
| Window |
| |
(0,0)------------(x,0)


xw = ax * xm + bx

Get the mouse/screen window client coordinates (x = cx, y = cy) and use two points (x coordinates) to write two equations in two unknowns and solve for ax (slope) and bx(intercept).

Do the same thing for y coordinates

yw = ay * ym + by


Then use the two straight line equations (linear mapping) to calculate (transform) the mouse coordinates to windows coordinates.

Joel

This topic is closed to new replies.

Advertisement