Kamera: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Der Kateogrie Technik oder Algorithmus zugeordnet)
(Links zu Homepage haben sich geändert, habe ich angepasst)
 
(22 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Andyh beschreibt in den Aritikeln:
+
Andyh beschreibt in den Artikeln:
 
*[[Kamera (1)]]
 
*[[Kamera (1)]]
 
*[[Kamera (2)]]
 
*[[Kamera (2)]]
Zeile 5: Zeile 5:
 
wie man eine Kamara realisiert.
 
wie man eine Kamara realisiert.
  
Andyh:
+
{{ZitatVon|Andyh|  
{{Zitat|
 
 
Nachdem ich viel Zeit damit verbracht habe eine funktionierende Kamera
 
Nachdem ich viel Zeit damit verbracht habe eine funktionierende Kamera
 
zu bauen und es nun endlich geschafft habe, wollte ich diese Funktionalität
 
zu bauen und es nun endlich geschafft habe, wollte ich diese Funktionalität
Zeile 12: Zeile 11:
 
Da mir schon viel geholfen wurde, kann ich so einen Teil meiner "Schuld"
 
Da mir schon viel geholfen wurde, kann ich so einen Teil meiner "Schuld"
 
zurück zahlen.
 
zurück zahlen.
 
+
}}
 
Die folgend beschriebene Kamera kann sich um alle drei Achsen drehen und sich
 
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
+
in allen Ebenen bewegen. Der Drehpunkt um den sich die Kamera dreht wird mit
dem Aufruf der Prozedur PositionCamera festgelegt. Sollte man diesen Dreh-
+
dem Aufruf der Prozedur PositionCamera festgelegt. Sollte man diesen Drehpunkt
punkt benötigen (z.B. zum anzeigen eines Koordinatenkreuzes, ...) so kann man
+
benötigen (z.B. zum anzeigen eines Koordinatenkreuzes, ...) so kann man auf
auf die property PointOfRotation zugreifen (read only).
+
die Property PointOfRotation zugreifen (read only).
  
 
Die Kamera kann bis zu zehn Positionen speichern und auch wieder herstellen.
 
Die Kamera kann bis zu zehn Positionen speichern und auch wieder herstellen.
Zeile 28: Zeile 27:
 
Um sicher zu sein, dass auch alle nötigen Definitionen und Funktionen zur  
 
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
 
Verfügung stehen habe ich einfach mal einen Großteil meiner Funktionssammlung
beigefügt (OpenGLUtil.pas). Diese Funktionen/Prozeduren werden so oder in leicht
+
beigefügt (Util.pas). Diese Funktionen/Prozeduren werden so oder in leicht
 
abgeänderter Form wohl bei jedem OpenGL Programmierer existieren.
 
abgeänderter Form wohl bei jedem OpenGL Programmierer existieren.
  
Sollte es noch irgendwelche Fragen zu diesem Modul geben so stehe ich gerne
+
...
zur Verfügung (Andyh).}}
+
 
 +
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.
 +
 
 +
{{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:
 +
 
 +
[[Bild: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 [http://www.heyroth.biz/main.html?src=%2F#2,5 Kamerabeispiel] oder [http://www.heyroth.biz/main.html?src=%2F#2,6 Spiel] an.
 +
 
 +
Sollte es noch irgendwelche Fragen zu diesen Modulen geben, so stehe ich gerne
 +
zur Verfügung (Andree Heyroth, Alias: AndyH).
  
 
[[Kategorie:Technik_oder_Algorithmus]]
 
[[Kategorie:Technik_oder_Algorithmus]]

Aktuelle Version vom 24. Juli 2010, 07:39 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).