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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 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(); GLU.gluPickMatrix(Mouse.getX(), Mouse.getY(), 5f, 5f, getViewport()); GLU.gluPerspective(30f, aspectRatio, 1f, 30f); GL11.glMatrixMode(GL11.GL_MODELVIEW);
.................................
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.