Entwickler-Ecke

Multimedia / Grafik - Sterne im Weltraum: 3D und Farbe


Sternkuccker - Di 17.11.09 21:05
Titel: Sterne im Weltraum: 3D und Farbe
Liebe Forenmitglieder,
ich habe ein Programm geschrieben, das in einer bestimmten Reihenfolge Sterne im Weltraum einfärbt. Das Programm selbst läuft gut, gibt die Daten aber bisher nur in Texform aus. Ich möchte das Ergebnis nun visualisieren, doch an dieser Stelle hören meine Delphi-Kenntnisse leider auf, da ich so etwas noch nicht gemacht habe.
Es handelt sich um einige tausend Punkte, für die jeweils x1, x2 und x3 Koordinaten vorliegen sowie ein Farbwert. Im Zeitablauf der Simulation (ca. 1 Minute) soll dieses Geschehen visualisiert werden.
Ideale Lösung wäre, ein Fenster zu haben, das man mit der Maus in allen 3 Achsen drehen kann, um einen Eindruck vom 3D-Geschehen zu bekommen. Darin sieht man dann die farbigen Sterne, die im Zeitablauf ihre Farbe ändern.
Wie gestaltet man sowas? Muss ich dafür tief in die Grafikprogrammierung einsteigen? Gibt es fertige Templates? Ich weiß z.B., dass einige Spiele-Engines als Open Source veröffentlicht wurden. Andererseits stelle ich mir mein Anliegen als sehr "basic" vor im Vergleich zu heutigen Spielen, sodass eine einfachere Lösung nahe liegt.

Ich bin dankbar für jeden Rat!
Freundliche Grüße
Michael


Gewuerzgurke - Mi 18.11.09 09:39

Du könntest mit einer PaintBox arbeiten aber erfahrungsgemäß ist das selbst für so einfache Animationen zu langsam.
Deshalb müsstest du schon mit DirectX oder OpenGL arbeiten - der größte Nachteil dabei ist, dass man teilweise von der Hardware abhängig ist, OpenGL soll nicht mehr auf Vista und Windows 7 laufen, DirectX geht nicht auf Linux...

Ich habe grafisch nur mit DirectX gearbeitet. Du kannst dir ja mal meinen Bildschirmschoner angucken, das geht auch in deine Richtung http://www.mitjastachowiak.de/?/Projects/Starfield
In der SimulatorFenster.pas steht der relevante Quelltext, in der procedure PEinblenden findest du zum Beispiel ein Paar Render-Einstellungen, die für dein Vorhaben nützlich sein können - wenn du schon etwas DirectX kannst. Auf http://www.delphidev.de/forum/viewforum.php?id=14 findest du DX-Header für Delphi und vermutlich auch ein Paar Einsteiger-Tutorials.

Wenn man's einmal verstanden hat, ist es eigentlich nicht schwer aber für den Einstieg braucht man schon etwas Geduld.


Martok - Mi 18.11.09 10:42

user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
Du könntest mit einer PaintBox arbeiten aber erfahrungsgemäß ist das selbst für so einfache Animationen zu langsam.

Das ist eher nicht das Problem... aber man müsste die Projektion selber berechnen. Sinnloser Aufwand und so.

user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
der größte Nachteil dabei ist, dass man teilweise von der Hardware abhängig ist

Bei so einfachen Sachen eher nicht. Mit OpenGL dürftest du den gleichen (zumindest Grafik)Code auf allem vom Smartphone bis Workstation ans laufen kriegen. Mit DirectX nicht, das ist klar.

user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
OpenGL soll nicht mehr auf Vista und Windows 7 laufen

Das ist Quatsch und wäre wirtschaftlicher Selbstmord für MS.

user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
Wenn man's einmal verstanden hat, ist es eigentlich nicht schwer aber für den Einstieg braucht man schon etwas Geduld.

Ich fand OpenGL einfach zu lernen, erst recht mit den wunderbaren Tutorials und Headern von DelphiGL [http://www.delphigl.com].

EDIT: noch was zum Thema.

Was du hier willst ist (als Stichworte) glBegin(GL_POINTS), glVertex3f und glColor3f; wegen der Punktmenge mindestens als DisplayList, ggf. direkt als VBO(Vertex Buffer Object) geladen. User-Interaction bzgl. Drehen, Zoomen etc. kann man mehr oder weniger aus den diversen Tutorials auf DGL raubkopieren ;)


Gewuerzgurke - Mi 18.11.09 20:34

Zitat:

>>OpenGL soll nicht mehr auf Vista und Windows 7 laufen

>Das ist Quatsch und wäre wirtschaftlicher Selbstmord für MS.

Dachte ich auch aber ich bin mir sehr sicher gehörtzuhaben, dass Hardwarebeschleunigung mit OpenGL auf Vista und Win7 sehr eingeschränkt ist :nixweiss:
Das währe dann vielleicht der Grund warum Creative für OpenAL auf Vista eine extra Anwendung braucht, die den CPU in die Höhe treibt :D - egal, das ist eine andere Geschichte.

Für dein Vorhaben, würde ich mich wohl tatsächlich an GL - Wollte ich auch schon längst gelernt haben - halten; damit bist du unabhängiger. DirectX macht nur für "komplexe Hochperformance-Anwendungen" auf Windows Sinn.


Sternkuccker - Do 19.11.09 11:39

Danke schonmal an alle! Ihr habt mir wohl einige richtige Stichworte genannt. Ich werde es in OpenGL realisieren. Programmiere momentan mit Lazarus und habe ein erstes Tutorial mit GLUT am Laufen. Jetzt heißt es wohl erstmal lesen und lernen...