Beschreibung : glCamerAH ist eine freie OpenGL-Kamera nach MPL-Lizenz, die einfach in Projekte integriert werden kann. Von der im Wiki beschriebenen Kamera von Andree inspiriert, habe ich eine solche nach einem etwas anderen Konzept neu aufgesetzt. Insbesondere findet die Unit VectorGeometry aus GLScene weite Anwendung. Die ModelView-Matrix wird als Cameramatrix in glCamerAH geführt und verarbeitet. Neben der Cameraposition (PointofCamera) und dem Viewpunkt (PointofView) gibt es ein Rotationspunkt (PointofRotation), um den gedreht wird. Der Punkt ist unabgängig und kann verschoben werden. Optional kann der Perspectiv- und Ortho-Modus von der Kamera verwaltet werden. Dadurch wird es möglich, den Fensterzoom (+/-) zu nutzen. Ebenfalls ist eine ArcBall-Rotation eingefügt.
Entwickelt wurde die Kamera mit Delphi 2009, andere Delphi-/Pascal-Versionen wurden nicht getestet. Sollte es dort nicht laufen, bitte ich um Nachricht, um es auch für die Versionen anpassen zu können. Es werden die Fremdkomponenten VectorTypes und VectorGeometry der "neuen" GLScene genutzt, die aber im Zip enthalten sind. Also GLScene selbst o.ä. muß nicht vorhanden sein. (Allerdings muß selbstverständlich dglopengl zugänglich sein.)
Features : - Rotation um X und Y-Achse - Rotation um die einzelnen Achsen - Rotationsspeed - Move in X und Y-Richtung und in die Tiefe - Movespeed - Verschieben des Rotationpunktes (oder nicht) - Verwalten der Perspectiv-Modi - Ausgleich der Verzerrung (Höhe, Breite des Fensters) z.B. beim Resize - mehrfacher Fensterzoom (+/-) - Setzen der Ansichten auf XY, XZ, ... - ArcBall-Rotation - afterRotation für ArcBall, eine Nachlauf des Balls wie bei Google-Earth - Cursor-Icons - alle Units der benötigten Komponenten beginnen mit CamerAH - Selection mit PickingMatrix, rmSelection - ColorPicking, rmColorPick - FillLevel - Indentity für Camera- und Projectionsmatrix CM_Identity, PM_Identity - afterRotationSensitivity, es wird die Geschwidigkeit gemessen und ab dem Grenzwert "afterRotationSensitivity" läuft das afterRotation oder nicht - kompatibel zu Turbo Delphi (mit Dank an Wölfchen)
Ein afterRotation erzeugt ein Nachlauf, wenn man bei der ArcBall-Rotation die Maus los läßt. So wie bei Google-Earth. Naja noch nicht ganz so gut, aber sehr gut brauchbar. Die Dämpfung ist einstellbar. Von ihr die Dauer des Nachlaufs abhängig. Ebenso kann man afterRotation ein- bzw ausschalten.
Einige ordentliche Icons für den Cursor habe ich erstellt. Wenn jetzt ein Rotationsmodus gesetzt wird, wird auf dem Renderfeld (Panel, Form) ein spezieller Cursor erscheinen.
Alle als Komponenten benötigte Units beginnen jetzt mit CamerAH....pas. Das sollte vorerst zur Übersicht beitragen.
Ich würde nochmals darum bitten, sich die CamerAH anzugucken, um mir einen Kommentar zu hinterlassen. Danke..
FillLevel Mit dem FillLevel kann relativ einfach die Szene zentral klein oder groß gezoomt werden.
rmSelection Selection mit der PickingMatrix. Der Teil dieser Selection, die die Kamera ausführen kann. Es kann die Tiefe eingestellt werden, in der nach dem ersten Treffer noch zusätzlich Objekte selektiert werden. Dazu wird TList und die TList.Sort genutzt, die ggf in älteren Delphiversionen angepaßt werden muß.
rmColorPick ColorPicking gibt die Farbe unter dem gedrückten Mauscursor zurück. Das kann zur Selektion mit dem Colorpicking genutzt werden.
Verbesserung der Nachrotation bei de Arcball-Rotation. Der Nachlauf beginnt erst, wenn ein gewisser Schwung gegeben wird, sonst setzt er nicht ein. Das ist angenehmer zu händeln. Der Nachlauf ist jetzt schon mit dem von GoogleEarth zu vergleichen.
Bugfix am 17.10.2011: TRect wurde in der CamerAHGeometry nicht gefunden. Ich habe nun Types eingefügt, was unter Delphi vorhanden ist. In dem Beispielprogramm waren einige Units in uses deklariert, die nicht benötigt wurden. Die sind jetzt entfernt. Dank an Wölfchen.
kleine Änderung am 23.10.2011: mit dieser kleinen Änderung sollte die CamerAH auch zu der ehemals freien Version von Turbo Delphi kompatibel sein. Wölfchen hat mir das bestätigt .
Mitglieder in diesem Forum: 0 Mitglieder und 117 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.