The Screen-to-Weltproblem auf dem iPhon e
Bildschirm-zu-Welt-Koordinaten-Konvertierung in OpenGLES eine einfache Aufgabe?
Ich habe ein 3D-Modell (CUBE) in einem EAGLView gemacht und ich möchte in der Lage sein zu erkennen, wenn ich in der Mitte eines bestimmten Gesicht berühre (Von jedem Orientierungswinkel) des Würfels. Klingt ziemlich einfach, aber es ist nicht ...
Das Problem:
Wie kann ich genau Bildschirm-Koordinaten (Berührungspunkt) zu Weltkoordinaten (eine Position in OpenGL 3D-Raum) beziehen? Sicher, die Umwandlung eines bestimmten Punktes in einen "Prozentsatz" der Bildschirm-/Weltachse scheint die logische Lösung zu sein, aber es treten Probleme auf, wenn ich den 3D-Raum vergrößern oder verkleinern muss. Hinweis: Drehen & Zoomen in und aus dem 3D-Raum wird die Beziehung der 2D-Bildschirmkoordinaten mit den 3D-Welt Koordinaten ändern ... Außerdem müssen Sie "Abstand" zwischen dem Blickpunkt und Objekte im 3D-Raum berücksichtigen . Dies mag zunächst als eine "leichte Aufgabe" erscheinen, aber das ändert sich, wenn Sie die Anforderungen tatsächlich untersuchen. Und ich habe keine Beispiele dafür gefunden, dass Leute das auf dem iPhone machen. Wie wird das normalerweise gemacht?
Eine ‚einfache‘ Aufgabe ?:
Sicher, man könnte die Aufgabe des Schreibens eine API verpflichten sich als Mittler zwischen Bildschirm und Welt zu handeln, aber die Aufgabe würde einen solchen Rahmen zu schaffen, um einige ernsthafte erfordern Design und würde wahrscheinlich Zeit nehmen zu tun - nicht etwas, das one-bemannt in 4 Stunden sein kann ... Und 4 Stunden passiert, meine Frist sein.
Die Frage:
- Was sind einige der einfachsten Möglichkeiten, um wissen, ob ich bestimmte Orte im 3D-Raum in der iPhone OpenGL ES Welt berührt?
AFAIK Das ist kein triviales Problem, es sei denn, Sie haben es vorher gelöst oder es ist bereits Unterstützung in Ihre Umgebung integriert (was nicht der Fall zu sein scheint). Ich weiß, es sieht einfacher aus als es ist, wir hatten dieselbe Diskussion mit meinen Kollegen. – zoul