When you click at the screen intuitively you would picture you clicking on certain objects. How can we obtain the information of such clicks? OpenGL offers a self-explanatory way of obtaining the Object Coordinates. This article has elaborated this problem gracefully.

However, we should note that *Object Coordinates* are different from *World Coordinates*. The former one is like the position within the object while the latter one is the position in the entire environment. For example, if you render two cubes in two different positions and suppose you use the method above and obtain the object coordinates, you are likely to find out that when you click at (almost) the same positions of the two cubes, what you get are (almost) the same coordinates, regardless of the relative distance of the two cubes. How can we find out the exact positions of the click, in the world coordinates?

The only thing to do is to modify the *modelview *matrix. Instead of obtaining the matrix from state variables, you should manually set it as an identity matrix so that it will not *roll back* to its object coordinates. The original code is something like:

glGetDoublev(GL_MODELVIEW_MATRIX, modelview);

And the modified code is something like:

for(int i=0; i<4; i++)
{
for(int j=0; j<4; j++)
{
if(i == j)
{
modelview[4*i+j] = 1.0;
}
else
{
modelview[4*i+j] = 0.0;
}
}
}

Then what you get would be world coordinates.

### Like this:

Like Loading...

*Related*

## About Xiang 'Anthony' Chen

Making an Impact in Your Life

## Discussion

## No comments yet.