Rendern von Galaxien

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
GrinderFX
Beiträge: 11
Registriert: 30.08.2001, 00:00
Wohnort: Berlin

Rendern von Galaxien

Beitrag von GrinderFX »

Hi.
Ich versuche gerade ein selbst erstelltes Universum in 3D zu zeichnen.
Planeten und Sonnen usw. machen wenig Probleme allerdings habe ich schwierigkeiten Galaxien, Gaswolken und Cluster zu rendern.
Ziel ist es nicht dies möglichst realistisch zu machen sondern sie sollen ungefähr wie das hier aussehen:

Bild

Bild

Da man um diese rumfliegen kann, müssen diese irgendwie 3D gerändert werden ohne dabei massiv an performance zu verbrauchen. Das Ganze soll ziemlich simple gehalten werden.

Hat jemand eine Idee oder einen Ansatz?
Matze
Moderator
Beiträge: 107
Registriert: 26.02.2009, 18:28

Re: Rendern von Galaxien

Beitrag von Matze »

Ich kann Dir bei Deinem Problem zwar nicht konkret helfen, aber ich würde mir an Deiner Stelle nochmal überlegen, ob es wirklich Sinn macht, dass man um Sternencluster und Galaxien "herumfliegen" kann. Galaxien, wie die auf Deinen Screenshots sind Millionen oder Milliarden von Lichtjahren entfernt. Rein vom Logischen her kann man da nicht mal eben einfach so drumherumfliegen. Wenn es Dir um einen gewissen Grad an Realismus geht, solltest Du diese beiden Dinge vielleicht eher als unereichbare Hintergrundobjekte implementieren. Mir ist zumindest kein Spiel oder Astronomieprogramm bekannt, bei dem das nicht so gelöst wurde.

Wenn Du dennoch nicht darauf verzichten kannst, würde ich ansonsten für sowas vielleicht ein kleines Partikelsystem schreiben. Wenn Du den Emitter und die Particle-Shapes clever designst, kommst Du da schon mit relativ wenigen Partikeln aus, was wiederum günstig für die Performance ist.
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Rendern von Galaxien

Beitrag von Krishty »

Das Wichtigste dürfte sein, dass es ohne Sortierung funktioniert, also nur additiv überblendet. Indem du negative Werte ausgibst, kannst du vllt die Abdunklung durch Nebel annähern, ohne multiplikatives Blending und damit Sortierung einführen zu müssen.

Dann würde ich einfach ein paar Galaxien ausmodellieren, doppelseitig rendern und die Textur mit dem Skalarprodukt zwischen Betrachterrichtung und Polygonnormale multiplizieren – dass man es mit Sprites zu tun hat fällt einem schließlich nur auf, wenn man flach drauf schaut. So werden flache Polygone unsichtbar und solange man möglichst drei senkrecht zueinander stehende Polygone an jeder Stelle des Arms hat sieht es schön plastisch aus.

Die Modellierung wäre also: Ein Viereck für die Draufsicht auf die Galaxie, dann jeder Arm entlang seiner Ausbreitungsrichtung als Polygonwand und daran entlang fünf bis zehn Querschnitte.

@Matze: Wenn es um Realismus ginge, sollte man den Spieler einfach nach dem Anblick von zwei oder drei Sternschnuppen auf der Erde verrecken lassen (ohne Blick auf den Himmel).

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Matze
Moderator
Beiträge: 107
Registriert: 26.02.2009, 18:28

Re: Rendern von Galaxien

Beitrag von Matze »

Krishty hat geschrieben:@Matze: Wenn es um Realismus ginge, sollte man den Spieler einfach nach dem Anblick von zwei oder drei Sternschnuppen auf der Erde verrecken lassen (ohne Blick auf den Himmel).
Ich verstehe zwar nicht so ganz, was Du damit meinst, aber das was Du sonst sagst klingt auch ganz brauchbar. :D
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Rendern von Galaxien

Beitrag von Krishty »

Matze hat geschrieben:
Krishty hat geschrieben:@Matze: Wenn es um Realismus ginge, sollte man den Spieler einfach nach dem Anblick von zwei oder drei Sternschnuppen auf der Erde verrecken lassen (ohne Blick auf den Himmel).
Ich verstehe zwar nicht so ganz, was Du damit meinst, aber das was Du sonst sagst klingt auch ganz brauchbar. :D
Relativistische Effekte sind Spielverderber. Physikalischer Realismus kann so ziemlich jede Science Fiction demontieren. Und bedeutet, dass eh niemand von uns das, was uns Fernsehen und Spiele präsentieren, jemals in Wirklichkeit sehen wird, sondern der gewöhnliche Mensch – falls er überhaupt mal zum Himmel aufblickt und dann auch noch das Glück hat, dass der nicht lichtverschmutzt ist – vom Universum niemals mehr als ein paar schimmernde Punkte und eine Mondsichel sehen wird. Oder, falls er zum richtigen Zeitpunkt geboren wurde, vllt auch mal eine Sonnenfinsternis in fünf der vierzig millionen Minuten, die er lebt. Aus der Sicht des Künstlers also zum Teufel mit dem ganzen Kram.

Natürlich nur, weil der OP schon gesagt hat, dass er es nicht möglichst realistisch haben will. In einem eigenen Projekt würde ich natürlich von der Farbverschiebung in die Mikrowellen bis zur Relativität der Gleichzeitigkeit alles auffahren … aber das würde dann wohl auch nicht mehr Science Fiction werden ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Despotist
Establishment
Beiträge: 394
Registriert: 19.02.2008, 16:33

Re: Rendern von Galaxien

Beitrag von Despotist »

Ich an deiner Stelle würde einfach für jeden Stern einen farbigen Vertex erzeugen und dann rendern. Wenn du die Vertices geschickt plazierst bekommst du schon die Form einer Galaxie hin.
BTW gibt es ja verschiedene Galaxietypen (spiral mit verschiedenen Armzahlen, elliptisch usw) so dass du dir vielelicht eine einfachere Form suchen kannst.

Für dieses Unterfangen ist es fast unumgänglich das ganze prozedural zur Laufzeit zur erzeugen. Ich hab mal ein paar Links aus meiner Sammlung rausgesucht:
http://jongware.com/galaxy1.html
http://www.diardsoftware.com/
http://www.infinity-universe.com
Du kannst auch selber mal nach procedural universe googeln da gibt es viele die sich damit beschäftigen.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Rendern von Galaxien

Beitrag von kimmi »

Wie in den vorherigen Posts schon angedeutet würde auch ich versuchen, die Galaxie als Partikel darzustellen. Damit die Sonnen noch schön aussehen, sie als Billboxes implementieren und vielleicht noch das Ganze in eine Hierarchie verpacken. Da du in der Regel nur schwer an einer Galaxie vorbeifliegst, braucht die dann nicht so oft upgedatet zu werden. Und zum Updaten hast du dann ja den Zusammenhang durch den Tree. Aus der ferne renderst du das dann auf eine texture, wenn du näher ran gehst, implementierst du das als Partikel-Haufen.

Gruß Kimmi
GrinderFX
Beiträge: 11
Registriert: 30.08.2001, 00:00
Wohnort: Berlin

Re: Rendern von Galaxien

Beitrag von GrinderFX »

Hi. Danke für die Tipps.
Ich muss mir aber erstmal genau ansehen was ihr mir vorgeschlagen habt. Das mit den Spites ist ein netter Ansatz aber hat auch viele nachteile und damit meine ich nicht nur das Fake3D.

Mit dem Drumrumfliegen habe ich mich ungünstig ausgedrückt. Es soll eigentlich eine 3D Karte eines Universums werden die gedreht werden kann.

Mein favourit ist es auch die Galaxien als Partikel darzustellen, da man somit relativ einfach die größe, das Aussehen und die Farben wählen kann. Bis jetzt habe ich nur meine Sonnen als Partikel erstellt, jedoch hab ich absolut keinen Plan eine Galaxie auf diese Weise hinzukriegen.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Rendern von Galaxien

Beitrag von kimmi »

Generier dir doch so etwas wie federn zwischen den Planeten, um die Anziehung zu simulieren. Alternativ könntest ud auch einfach schauen, wie man Strudel berechnet und die Galaxie als solche vorzuberechnen. Das Drehen des Körpers sollte dann relativ simpel sein.

Gruß Kimmi
Antworten