PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umrechnen von 2D Koordinaten nach 3D(OpenGL)


Gast
2008-12-10, 02:59:39
Hi,
ich programmiere gerade etwas in OpenGL und will User Interaktion ermoeglichen. Ich will, wenn der User die Maus bewegt, ein Zielkreuz darstellen. Das Problem ist, dass ich beim bewegen der Maus einen 2D Punkt bekomme. Wie kann ich diesen moeglichst einfach in einen 3D Punkt umrechnen?

ScottManDeath
2008-12-10, 04:07:16
gluUnproject

Gast
2008-12-10, 23:44:48
thx klappt wunderbar

Gast
2009-01-06, 05:03:23
Ich hab ein ähnlichliches Problem. GluUnProject macht nicht ganz, was ich will.

CVector3 GetOGLPos(int x, int y)
{
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY, winZ;
GLdouble posX, posY, posZ;

glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
glGetDoublev( GL_PROJECTION_MATRIX, projection );
glGetIntegerv( GL_VIEWPORT, viewport );

winX = (float)x;
winY = (float)viewport[3] - (float)y;
glReadPixels( x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );

gluUnProject( winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);

return CVector3(posX, posY, posZ);
}


Mein Viewport: 0,0,400,400
GluPerspective: 60,1,1,10000
gluLookAt: 10,10,30,11,10,31,0,1,0

Mein Problem ist, dass ich sehr hohe Zahlenwerte bekommen, wenn ich die Maus bewege. Bei dem Punkt 240,47 erhalte ich 6036.16 , 4426.44,7693.04.
Woran liegt das?