Daniel Jung
- Forum-Beiträge: 4
11.05.2013, 20:49:32 via Website
11.05.2013 20:49:32 via Website
Hallo Community,
ich sitze derzeit an folgendem Problem: Ich arbeite unter OpenGL und möchte auf Touchevents reagieren. Dazu versuche ich seit einiger Zeit, die Koordinaten, die bei dem Touchevent übergeben werden, in die Weltkoordinaten zu übersetzen. Leider bin ich in Sachen Matrizen nicht ganz so fit, daher brauche ich eure Hilfe. Ich benutze die Funktion gluUnProject, um an einen Strahl ranzukommen, wo der Nutzer geklickt hat, um danach damit eine Ebene zu schneiden, und an die Koordinate in 3D zu gelangen. Ich arbeite derzeit noch in 2D, das macht das ganze theoretisch noch einfacher. Mein Code bisher sieht so aus:
1) Was muss ich als ModelMatrix da eigentlich reinstecken?
2) Was krieg ich überhaupt genau als Ergebnis raus? Was ist das, was dann in der Matrix eye[] steht?
3) Wie komm ich dann im Endeffekt an mein Ergebnis? ^^
Über eure Hilfe würde ich mich sehr freuen
MfG
ich sitze derzeit an folgendem Problem: Ich arbeite unter OpenGL und möchte auf Touchevents reagieren. Dazu versuche ich seit einiger Zeit, die Koordinaten, die bei dem Touchevent übergeben werden, in die Weltkoordinaten zu übersetzen. Leider bin ich in Sachen Matrizen nicht ganz so fit, daher brauche ich eure Hilfe. Ich benutze die Funktion gluUnProject, um an einen Strahl ranzukommen, wo der Nutzer geklickt hat, um danach damit eine Ebene zu schneiden, und an die Koordinate in 3D zu gelangen. Ich arbeite derzeit noch in 2D, das macht das ganze theoretisch noch einfacher. Mein Code bisher sieht so aus:
1public float[] GetWorldCoordinates(float x, float ys){
2 float y = (float)(this.getHeight())-ys;
3 float eye[] = new float[16]; //hier wird das ergebnis von gluUnProject espeichert
4 int view[] = new int[16];
5 Matrix.setIdentityM(mModelMatrix, 0);
6 Matrix.translateM(mModelMatrix, 0, 0.0f, 0.0f, 0.0f);
7 float cur[] = new float[16];
8 Matrix.multiplyMM(cur, 0, mViewMatrix, 0, mModelMatrix, 0);
9 GLES20.glGetIntegerv(GLES20.GL_VIEWPORT, view, 0);
10 GLU.gluUnProject(x, y, 0.0f, cur, 0, mProjMatrix, 0, view, 0, eye, 0);
11 }
Meine Fragen dazu sind jetzt:2 float y = (float)(this.getHeight())-ys;
3 float eye[] = new float[16]; //hier wird das ergebnis von gluUnProject espeichert
4 int view[] = new int[16];
5 Matrix.setIdentityM(mModelMatrix, 0);
6 Matrix.translateM(mModelMatrix, 0, 0.0f, 0.0f, 0.0f);
7 float cur[] = new float[16];
8 Matrix.multiplyMM(cur, 0, mViewMatrix, 0, mModelMatrix, 0);
9 GLES20.glGetIntegerv(GLES20.GL_VIEWPORT, view, 0);
10 GLU.gluUnProject(x, y, 0.0f, cur, 0, mProjMatrix, 0, view, 0, eye, 0);
11 }
1) Was muss ich als ModelMatrix da eigentlich reinstecken?
2) Was krieg ich überhaupt genau als Ergebnis raus? Was ist das, was dann in der Matrix eye[] steht?
3) Wie komm ich dann im Endeffekt an mein Ergebnis? ^^
Über eure Hilfe würde ich mich sehr freuen
MfG
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.