Kamera
Andyh beschreibt in den Aritikeln:
wie man eine Kamara realisiert.
Andyh:
Nachdem ich viel Zeit damit verbracht habe eine funktionierende Kamera zu bauen und es nun endlich geschafft habe, wollte ich diese Funktionalität auch anderen zur Verfügung stellen. Da mir schon viel geholfen wurde, kann ich so einen Teil meiner "Schuld" zurück zahlen.
Die folgend beschriebene Kamera kann sich um alle drei Achsen drehen und sich in allen Ebenen bewegen. Der Drehpunkt um den sich die Kamera dreht wird mit dem Aufruf der Prozedur PositionCamera festgelegt. Sollte man diesen Drehpunkt benötigen (z.B. zum anzeigen eines Koordinatenkreuzes, ...) so kann man auf die Property PointOfRotation zugreifen (read only).
Die Kamera kann bis zu zehn Positionen speichern und auch wieder herstellen. (SavePosition, RestorePosition)
Die Kamera kann sich selber zu jeder Zeit unter Beibehaltung der aktuellen Position senkrecht zur Welt ausrichten. (Adjust)
Um sicher zu sein, dass auch alle nötigen Definitionen und Funktionen zur Verfügung stehen habe ich einfach mal einen Großteil meiner Funktionssammlung beigefügt (Util.pas). Diese Funktionen/Prozeduren werden so oder in leicht abgeänderter Form wohl bei jedem OpenGL Programmierer existieren.
...
Nachdem ich bis jetzt glaubte, dass man mit der von mir erstellten Kurzanleitung auskommt, habe ich doch noch ein Beispielprogramm erstellt. Nach mehrmaligem Studium meiner Kurzanleitung bin ich nämlich zu dem Schluss gekommen, dass man mit diesem Programmierbeispiel nicht zu dem von mir beabsichtigten Ergebnis kommen kann. Das Beispielprogramm, welches die Funktionen der Kamera veranschaulicht, wurde mit Delphi 2005 entwickelt. Wenn Ihr über eine ältere Delphiversion verfügt nehmt einfach die DPR Datei oder erstellt ein neues Projekt mit Euerem Compiler und bindet die benötigten Dateien ein.
Ich habe noch einiges mehr an Code reingepackt als unbedint nötig, um der Sache optisch ein Mindestmaß an Anspruch zu verleihen. Deswegen können aus diesem Beispielprogramm noch die eine oder andere Komponente entnommen werden (wenn nicht schon vorhanden). Dies sind z.B. Komponenten für Licht, Material, zur Textdarstellung, eine Skybox und zur Handhabung von Grafikdateien (die ist allerdings nicht auf meinem Mist gewachsen). Zusätzlich habe ich noch den Memory Manager FastMM4 beigepackt und eingebunden. Mit diesem kann man sehr schön (besser als mit den von Delphi bereitgestellten Möglichkeiten) nicht freigegebene Resourcen aufspüren. Ich war überrascht was ich alles nicht freigegeben hatte, als ich den zum ersten mal eingesetzt habe.
Das Beispielprogramm findet Ihr unter [[http://files.delphigl.com/Download/kamera_heyroth.zip ]].
Aussehen sollte es nach dem Aufruf so:
...
Sollte es noch irgendwelche Fragen zu diesem Modul geben so stehe ich gerne zur Verfügung (AndyH).