Autor Beitrag
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Do 22.05.08 00:05 
Hallo zusammen!

/me hat vor einiger Zeit angefangen sich mit OpenGL zu beschäftigen. Und als "Testprojekt" ist TPatternMotion entstanden.
Da ich mittlerweile den Spaß am Weiterentwickeln verloren habe, das Projekt aber IMHO zu gut ist, um im ewigen Daten-Nirwana oder als Leiche auf meiner Festplatte zu enden, stelle ich den kompletten Quelltext der OpenSource-Gemeinde zur Verfügung. Vielleicht kann ja jemand was mit dem (z.T. recht bescheidenen :oops: ) Quelltext anfangen, unter Umständen findet sich sogar jemand, der die Komponente weiterentwickeln würde.

Naja, wirklich viel gibt es dazu nicht zu sagen außer, dass das eine Apple-like CoverFlow-Komponente für Delphi ist. Die Bedienung ist größtenteils intuitiv. Wenn TPatternMotion den Focus hat kann man mit:
* den Pfeiltasten durch die Patterns "switchen"
* mit W, E, R, A, S, D, F, Y, X & C die Kamera bewegen (einfach mal drücken und ausprobieren); Q versetzt die Kamera in den Ursprungszustand
* mit P den "3D-Modus" umschalten
* mit O alle Patterns um 180° drehen
* mit I das aktuelle Pattern um 180° drehen
* mit gedrückter linker Maustaste die Kamera in der X & Y-Achse bewegen
* mit gedrückter rechter Maustaste die Kamera drehen
* wenn beide Maustasten gedrückt sind die Kamera in der Z-Achse bewegen


Das Demo-Projekt sollte die Bedienung eigentlich deutlich machen.
Bei Fragen zum Quellcode stehe ich gerne Rede und Antwort (bitte hier im Thread, nicht via PN, damit alle was davon haben).

Screenshot, Quellcode und eine Demo-Echse befinden sich im Anhang.

Viel Spaß damit!

Grüße
Michael


Moderiert von user profile iconNarses: Topic aus Freeware Projekte verschoben am Di 01.07.2008 um 09:53
Einloggen, um Attachments anzusehen!
_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]


Zuletzt bearbeitet von Dunkel am Di 01.07.08 02:12, insgesamt 4-mal bearbeitet
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Do 22.05.08 08:32 
Ist schön geworden...
Allerdings: Das deutsche Wort ist "Maus" nicht "Mouse"... und "Mousetaste" finde ich irgendwie unschön...
Und vielleicht solltest du, wenn man durch einen Doppelklick das Pattern gedreht hat und dann um nächsten/vorherigen wechselt, das alte wieder richtigrum drehen...

Ansonsten toll...

_________________
1405006117752879898543142606244511569936384000000000.
Dunkel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Mo 30.06.08 23:41 
user profile iconWolle92 hat folgendes geschrieben:
Allerdings: Das deutsche Wort ist "Maus" nicht "Mouse"... und "Mousetaste" finde ich irgendwie unschön...

Na, wenn das das größte Problem ist... ich finde Denglisch wirklich manchmal schön. :wink:

So, ist nun OpenSource; macht was draus!

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: Di 01.07.08 01:46 
Also wenn ich deine Demo starte bekomme ich einen Fehler, dass das Pixelformat ungültig sei.
Auf der Komponente ist dann nichts zu sehen.
Der Fehler kommt auch wenn ich ein Bild hinzufügen will.
Dunkel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Di 01.07.08 01:53 
user profile iconFabian E. hat folgendes geschrieben:
Also wenn ich deine Demo starte bekomme ich einen Fehler, dass das Pixelformat ungültig sei.
Auf der Komponente ist dann nichts zu sehen.
Der Fehler kommt auch wenn ich ein Bild hinzufügen will.

Der Fehler ist mir auch schon auf anderen Systemen begegnet. Das Pixelformat von OpenGL ist hardgecodet; einfach im Sourcecode entsprechend Deinen Einstellungen ändern, dann sollte es laufen.

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 01.07.08 15:17 
user profile iconFabian E. hat folgendes geschrieben:
Also wenn ich deine Demo starte bekomme ich einen Fehler, dass das Pixelformat ungültig sei.
Auf der Komponente ist dann nichts zu sehen.
Der Fehler kommt auch wenn ich ein Bild hinzufügen will.

Das passiert bei mir auch. Und es ist eigentlich ganz einfach, ihn zu beheben:

Lösche in der Methode TPatternMotion.InitOGL der Unit "PatternMotion" die Zeile SetDCPixelFormat(fOGLDC);. Ich verstehe sowieso nicht so ganz, zu was die benötigt wird. Ich initialisiere den RenderingContext in OpenGL immer ohne diese Anweisung.

Zum Programm: Sieht nicht schlecht aus, die Grafik ist schön. Aber es läuft bei mir ziemlich langsam (ich hab auch einen schlechten Prozessor). Gut wäre deshalb, wenn du die FPS in die Bewegung mit einbauen würdest, so dass es zwar ruckelt, jedoch nicht unendlich langsam wird. Außerdem reagiert nichts mehr, wenn er gerade eine Aktion durchführt.

Grüße,
Yogu
Dunkel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Di 01.07.08 18:14 
user profile iconYogu hat folgendes geschrieben:
Zum Programm: Sieht nicht schlecht aus, die Grafik ist schön. Aber es läuft bei mir ziemlich langsam (ich hab auch einen schlechten Prozessor). Gut wäre deshalb, wenn du die FPS in die Bewegung mit einbauen würdest, so dass es zwar ruckelt, jedoch nicht unendlich langsam wird.

Das war mitunter einer der Gründe für meine nachlassende Motivation an diesem Projekt weiter zu arbeiten.

Time-Based-Movement ist implementiert. Funktioniert auch, zumindest manchmal. In TPatternMotion ist das via QueryPerformanceCounter gelöst; vor jeder Animation wird geschaut, wie lange ein Render-Durchgang im Durchschnitt benötigt. Anhand desen sollten dann alle Bewegungen auf verschieden schnellen Systemen gleich schnell ablaufen; wenn auch auf langsamen Systemen abgehackt.
Mehrkern-Prozessoren und das dynamische Takten der Prozessorkerne funken aber extrem dazwischen. Auf meinem Desktop-PC mit Core2Duo-Prozessor (SpeedStep deaktiviert) funktioniert es wunderbar, auf meinem Laptop mit Mobil-Core2Dou (SpeedStep aktiviert) funktioniert es schlecht bis garnicht.

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Dunkel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: So 06.07.08 21:12 
user profile iconApollo hat folgendes geschrieben:
Hi Dunkel :wave: ,

hab mir mal dein Appel cover fly (PatternMotion) angesehen und finde es Klasse :zustimm: .
Du hast gepostet es sei eine Komponente (die ich gerne unter Delphi 2005 instaliren möchte) und
soweit ich weiß brauchen Komponenten doch eine *.dpk Datei um Installiert zu werden. :?!?:

Bei deiner ist aber keine dabei. Wie kann ich sie dann Installieren?

Bitte hilf mir :flehan:

mfg Apollo


Hallo Apollo!

Ja, das Package musst Du selber erstellen.
Einfach in Delphi ein neues Package anlegen (Datei - Neu - Package).
Dann in der Projektverwaltung (Rechtsklick - Hinzufügen... - Durchsuchen) die PaternMotion.pas und aus dem extUnits-Verzeichnis alle .pas-Dateien hinzufügen.
Dann das Package kompilieren (Rechtsklick - Compilieren) und installieren (Rechtsklick - Installieren).
Wenn alles gut gegangen ist sollte eine Meldung erscheinen, dass TPatternMotion hinzugefügt worden ist. Nun sollte die Komponente auch in der Komponentenleiste erscheinen.

Alternativ kannst Du TPatternMotion aber auch zur Laufzeit erstellen, nimm Dir ein Beispiel an meinem Demo-Projekt.

Grüße
Michael


P.S.
user profile iconDunkel hat folgendes geschrieben:
Bei Fragen zum Quellcode stehe ich gerne Rede und Antwort (bitte hier im Thread, nicht via PN, damit alle was davon haben).
:roll:

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Apollo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Windows 7
Delphi 3 Prof., Delphi 2005
BeitragVerfasst: So 06.07.08 21:53 
Super, vielen Dank :D
Das mit dem "nich via PN" muss ich überlesen haben :autsch: :gruebel:

Werd ich gleich Morgen ausprobieren

mfg Apollo

_________________
Im Zweifelsfall immer das Richtige tun
Apollo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Windows 7
Delphi 3 Prof., Delphi 2005
BeitragVerfasst: Mo 07.07.08 10:09 
Habst so gemacht wie beschrieben und bin vollkommen zufrieden. Klasse Komponente :D
Und die Installation is super easy :zustimm:

_________________
Im Zweifelsfall immer das Richtige tun
Dunkel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Mo 07.07.08 20:34 
Das hört man doch gerne. :D

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Octron
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 31.10.08 12:42 
P.S.
user profile iconDunkel hat folgendes geschrieben:
Bei Fragen zum Quellcode stehe ich gerne Rede und Antwort (bitte hier im Thread, nicht via PN, damit alle was davon haben).


Ist schon ein paar Tage her, wie ich gesehen habe, dennoch...

Hallo, ich bin eher durch Zufall auf diese Komponente gestoßen.
Hab' sie mal ausprobiert und folgendes festgestellt:

Im Gegensatz zur kompilierten Demo sind bei Eigencompilierung immer
wieder gänzlich schwarze Bilder im Flow zu sehen.
Nach dem ersten schwarzen Bild folgt in regelmäßigen Abständen
(etwa jedes vierte Bild) wieder ein schwarzes.

Trotz Studiums des Sources, kann ich keine Ungereimtheiten feststellen.
Hat jemand eine Idee woher dieser Darstellungsfehler kommen könnte?

Mfg. Octron
Dunkel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Fr 31.10.08 16:02 
Hallo!

Hab ich es richtig verstanden, dass, wenn Du mit der kompilierten Echse Bilder lädst, diese angezeigt werden? Wenn die dort auch schwarz angezeigt werden, ist unter Umständen das Dateiformat nicht kompatibel.

Die Echse ist aus dem hier hochgeladenen Code mit Delphi 2007 kompiliert, welche Delphi-Version benutzt Du?

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Octron
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 04.11.08 20:29 
user profile iconDunkel hat folgendes geschrieben Zum zitierten Posting springen:
Hallo!

Hab ich es richtig verstanden, dass, wenn Du mit der kompilierten Echse Bilder lädst, diese angezeigt werden? Wenn die dort auch schwarz angezeigt werden, ist unter Umständen das Dateiformat nicht kompatibel.

Die Echse ist aus dem hier hochgeladenen Code mit Delphi 2007 kompiliert, welche Delphi-Version benutzt Du?



Hallo,

ich benutze Delphi_6 und das Problem tritt nur auf wenn Delphi, sprich die IDE läuft.
Ich kann mir das zwar nicht erklären, aber mit diesem kleinen Manko kann ich leben.

Ich betrachte mein Problem somit als gelöst, vielen Dank.

MfG Octron