Kamera: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
Zeile 36: Zeile 36:
 
Ich habe noch einiges mehr an Code reingepackt als unbedingt 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.
 
Ich habe noch einiges mehr an Code reingepackt als unbedingt 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 Download]. Dieses Programm habe ich am 26.12.2007 aktualisiert um die Steuerung per Tastatur und Maus zu vereinfachen. Die bisher in den das Modul benutzenden Methoden KeyDown, KeyUp, ModeDown, MouseUp  usw. nötigen Tätigkeiten habe ich in Kameramethoden ausgelagert. Dadurch kann mit einem einzigen Aufruf dieser Methode(n) die nötige Arbeit abgerufen werden.
+
{{ArchivLink|file=kamera_heyroth‎‎|text=Das Beispielprogramm findet Ihr hier}}. Dieses Programm habe ich am 26.12.2007 aktualisiert um die Steuerung per Tastatur und Maus zu vereinfachen. Die bisher in den das Modul benutzenden Methoden KeyDown, KeyUp, ModeDown, MouseUp  usw. nötigen Tätigkeiten habe ich in Kameramethoden ausgelagert. Dadurch kann mit einem einzigen Aufruf dieser Methode(n) die nötige Arbeit abgerufen werden.
  
 
Aussehen sollte es nach dem Aufruf so:
 
Aussehen sollte es nach dem Aufruf so:

Version vom 26. Dezember 2009, 01:42 Uhr

Andyh beschreibt in den Artikeln:

wie man eine Kamara realisiert.

Zitat: 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.

...

Bisher glaubte ich, dass man mit der von mir erstellten Kurzanleitung auskommt, habe jetzt aber 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 unbedingt 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 hier File.jpg. Dieses Programm habe ich am 26.12.2007 aktualisiert um die Steuerung per Tastatur und Maus zu vereinfachen. Die bisher in den das Modul benutzenden Methoden KeyDown, KeyUp, ModeDown, MouseUp usw. nötigen Tätigkeiten habe ich in Kameramethoden ausgelagert. Dadurch kann mit einem einzigen Aufruf dieser Methode(n) die nötige Arbeit abgerufen werden.

Aussehen sollte es nach dem Aufruf so:

CameraExample.jpg

...

Ein weiteres Projekt habe ich auf meiner Homepage veröffentlicht. Es ist ein simples Spiel, welches mit verschiedenen Kameraeinstellungen arbeitet. Dadurch kann man einiges über die Kamera erfahren. Die letzten Entwicklungen sind nur hier eingeflossen. Das Projekt auf dieser Seite werde ich nicht mehr aktualisieren. Wollt Ihr also den neuesten Source Code, dann schaut Euch auf meiner Homepage entweder das neueste Kamerabeispiel oder Spiel an.

Sollte es noch irgendwelche Fragen zu diesen Modulen geben, so stehe ich gerne zur Verfügung (Andree Heyroth, Alias: AndyH).