Hello,
I want to implement picking into my app, now it works almost but the biggest problem is, that i have to click on a complete different position (than the object) to pick it.
Funny thing here: I’ve tested it for one of my rendered Meshes and with every new start, I cannot pick the same object from the same point as before. As I figured out, there are 3 positions (different y-axis) which are randomly used for being the pick-able object. To mention here is, that one of these 3 positions is the correct one, the one where the object is actually rendered.
My code is like following:
int selectBuf[] = new int[BUFSIZE];
selectBuffer = org.lwjgl.BufferUtils.createIntBuffer(BUFSIZE);
GL11.glSelectBuffer(selectBuffer);
GL11.glRenderMode(GL11.GL_SELECT);
GL11.glInitNames();
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPushMatrix();
GL11.glLoadIdentity();
//current viewport
GLU.gluPickMatrix(Mouse.getX(), Mouse.getY(), 5f, 5f, getViewport());
GLU.gluPerspective(30f, aspectRatio, 1f, 30f);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
// Rendering scene
.................................
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPopMatrix();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glFlush();
int numHits = GL11.glRenderMode(GL11.GL_RENDER);
processHits(numHits);
What can be to problem here?? Is it possible to test it somehow, I mean with that to actually render the object at the postion where it can be picked.
I really don’t see the problem, especially the perspective is exactly the same as in the normal render.