guter 3d-Starfield Effekt

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Ayman

Betreff: guter 3d-Starfield Effekt

BeitragMo, Aug 15, 2005 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich suche derzeit nach einer Methode einen _schnellen_ und _schicken_ Starfield Effekt zu programmieren. Ich brauche es für einen 3D-Space-Shooter mit voller Beweglichkeit des Spielersschiffes. Wer sowas irgendwo mal gut implementiert gesehen hat oder gar etwas eigenes vorzuzeigen hat, mag sich bitte melden.

Im Detail ...
Wer mit Starfield nichts anzufangen weiß, der mag sich mal seinen Windows Bildschirmschoner gleichen Namens ansehen.
Dessen Problem ist jedoch, dass die Sterne als Pixel gezeichnet werden, was keine saubere Bewegung erlaubt. Die Sterne springen zu sehr. Gleiches gilt für die Helligkeitsverstärkung bei herankommenden Sternen. Diese werden sprunghaft heller. Das Ganze nutzt wohl auch nicht die 3D-Fähigkeiten heutiger Grafikkarten.

Die Alternative sind offensichtlich Sprites (Quads) oder gar schlichte Triangles, die stets zur Kamera ausgerichtet sind. Ich habe sowas in B3D schon fertig, ist auch recht flott ...

( Einschub - Beginn

Der Raumwürfel um die Kamera wird in 3 x 9 Unterwürfel unterteilt (3D-Version der Moore-Umgebung), von denen jeder mit der gleichen Menge von Sternen-Sprites zufällig gefüllt wird. All diese Sprites haben zunächst fixe Positionen unabhänigig von der Kamera, d.h. Parent(Sprite) = 0.

Wenn sich nun die Kamera in irgend eine Richtung bewegt, so verlässt sie alsbald den inneren der 27 Raumwürfel in einen von 6 Nachbarraumwürfeln (3D-Neumann-Umgebung: vor, zurück, links, rechts, oben , unten). Je nach dem in welchen Nachbarraumwürfel die Kamera bewegt wurde, müssen nun alle Sterne (Sprites) der 9 Raumwürfel, die gerade _hinter_ der Kamera liegen, nach vorn verschoben werden, sodass der neue Aufenthalt der Kamera wiederum im Zentralkubus der 27 Raumkuben liegt.

Äh, ich hoffe, das war halbwegs verständlich.

Einschub - Ende )


..., sieht aber nicht so dolle aus. Als Sternbilder nehme ich kleine schattierte Kugelbilder, die zum Rand hin schwärzer und damit auch transparanter werden. Das Problem ist nur, dass die Dinger zu groß werden, wenn sie nah vor die Kamera geraten. Möglicherweise ist das nur ein Tuning-Problem, aber ich hab jetzt schon so lange getuned und es sieht halt immer noch mies aus *heul* Crying or Very sad

Wer mag mir mit Tipps weiterhelfen?

Guude
Ayman

P.S. Braucht's ein Screenshot, damit ihr mein Problem versteht? Wenn ja, gebt bitte Laut und ich lad irgendwo einen hoch.
uomini cercano uomini
  • Zuletzt bearbeitet von Ayman am So, Aug 21, 2005 16:30, insgesamt 2-mal bearbeitet
 

MegaTefyt

BeitragMo, Aug 15, 2005 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennst du Star Wing bzw. Star Fox für SNES? Dort wurde bei den Space-Leveln auch eine Art Starfield Simulation benutzt, um den Flugeffekt im Weltall zu simulieren. Recht primitiv, aber es wirkt so wie es soll. Wink

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 16, 2005 5:14
Antworten mit Zitat
Benutzer-Profile anzeigen
...Nur mal so ganz nebenbei bemerkt. Sternenbewegungen sind im Flug eines Raumschiffes nicht sichtbar 'bewegt', da die Fluggeschwindigkeit des Raumschiffes zu gering ist. Es ist unrealistisch Sternenbewegungen darzustellen, zugleich aber nähere Objekte wie Planeten und Gesteinsbrocken 'langsam' am Bildschirm vorbei fliegen zu lassen. Sterne gehören gaaaaaanz weit weg entfernt, als Bitmap in einem riesigem Cube zB. Der Cube wird dann von innen mit sternen, Galaxien, Sternennebeln usw. gezeichnen in welchem dann die Levelgeschehenisse gespielt werden.

Son Starfieldeffekt kann man machen, wenn man Staub und andere Partikel darstellen will.

Willst du das?

Sternenbewegungen kannst du dann machen wenn dein Raumschiff auch sowas wie die Lichtgeschwindigkeit erreichen soll. Dann könnte man auch Sternenbewegungen am Bildschirm vorbei fliegen sehen. Die Blauverschiebung dann aber bitte nicht vergessen.

Justus

BeitragDi, Aug 16, 2005 10:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, man braucht ja nicht überall 100%igen Realismus zu haben... Viele SpaceShooter würden nur halb so viel Spaß machen, wenn sie realistisch wären Wink

Jan_

Ehemaliger Admin

BeitragDi, Aug 16, 2005 10:42
Antworten mit Zitat
Benutzer-Profile anzeigen
mache einfach, Weltraumfliegen, die dann immer so auf die scheibe und "Platsch"
--> scheibenwicher!
between angels and insects

Alfadur

BeitragDi, Aug 16, 2005 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
nur weil der windows bildschirmschoner grottenschlecht ist, heißt das nicht das man in 2d keine smoothe bewegung und smooth fadende farben hinbekommt. das geht sehr wohl und ist auch noch kinderleicht...
A Cray is the only computer that runs an endless loop in less than four hours.

Firstdeathmaker

BeitragDi, Aug 16, 2005 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Ayman: Lass die Sprites doch abhängig von der Entfernung zur Kamera ausfaden, also mit Entityalpha verschwinden. Hab letztens auch so etwas versucht, kannte aber die Moore-Umgebung noch nicht. Da hab ich es mit einer virtuellen Kugel versucht, wenn Sprites diese verlassen haben wurden sie auf die andere Seite verschoben, aber das war alles auf die Dauer zu ungenau. Mal schauen, vielleicht finde ich demnächst mal Zeit einen neuen Versuch mit der Würfelumgebung zu starten.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Dreamora

BeitragDi, Aug 16, 2005 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfache Methode die sehr ist:

Mehrere Zylinder *besser eine Pyramide mit runder Grundfläche* erzeugen die einen verschieden grossen Durchmesser haben. Diese dann umdrehen so dass sie nach innen schauen und mit einer "Starfield" Textur belegen. Die Textur muss entweder alpha oder masked sein, damit man durchsieht.


Für den Effekt selbst muss die Röhre in die gleiche Richtung wie der Spieler schauen. Danach einfach die Textur auf dem Zylinder in Richtung Spieler verschieben, je nach Zylinder mit einem anderen Speed, damit ein "näher - weiter" entfernt Gefühl entsteht. Das ergibt ohne wirklichen Rechenaufwand sehr eindrückliche Starfieldeffekte.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Firstdeathmaker

BeitragDi, Aug 16, 2005 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht das auch realistisch aus wenn man mit dem Raumschiff Kurven fliegt?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Dreamora

BeitragDi, Aug 16, 2005 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie sieht es denn realistisch aus, wenn man das macht?
Bei Unterlichtgeschwindigkeit braucht man noch kein Starfield ausser dem Hintergrund auf einem Würfel und "richtige Planeten" wenn sie näher dran sind ... und bei überlicht gibts keine wirklichen Kurven mehr Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Firstdeathmaker

BeitragMi, Aug 17, 2005 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Na, ich brauch eigentlich eher was für Sternenstaub, also Partikel die am Raumschiff vorbeiziehen damit man ein Geschwindigkeitsgefühl bekommt. Deshalb werde ich wohl auch weiterhin mit Partikeln die im Raum direkt verschoben werden experementieren. Aber die Lösungsidee ist wirklich nicht schlecht für einen Starfield-Effekt ohne Kurven.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Ayman

BeitragFr, Aug 19, 2005 10:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Zunächst mal vielen Dank an alle, die mir hier geantwortet haben!

@Alle:
Mein "Starfield"-Modul heisst LibDirt.bb - womit ich erklären möchte, dass es mir tatsächlich um Staubpartikel oder eben schlicht Dreck geht, der im All an dir vorbeihuscht, wenn du mit Unterlicht ummanand düst. Die Beleuchtung scheint von irgend einem Stern in der Nähe zu kommen, de facto arbeite ich aber mit EntityFx <dreckSprite>, 1.
Ziel ist es eine nahe Umgebung zu schaffen, an deren Verhalten der Spieler leichter einen Bezug zu seiner aktuellen Bewegung ablesen kann - sei es Translation oder Rotation.

@MegaTefyt: Nee, ich hab keine SNES und kenne die Dinger leider auch nicht.

@hectic: Ganz deiner Meinung, siehe @Alle.

@Justus: Jau! Drum siedle ich mein Prog auch in der Kategorie " 3D-Space-Shooter" an und nicht bei "Simulation" Smile

@Jan_: Klingt nach einem brauchbaren Next-Version-Feature Wink

@Alfadur: Aha, dann lass doch mal hören ...

@Firstdeathmaker: Das klingt nach 'ner guten Idee. Aber nicht für die Ferne, sondern für die Nähe, denn da habe ich die Probleme. Bedeutet natürlich einige EntityDistance -Berechnungen mehr - um genau zu sein: für alle Dreckpartikel im Innersten meiner 27 Raumwürfel. Ich probiers mal aus und melde mich dann wieder.

@Dreamora: Nicht schlecht, aber wie Firstdeathmaker schon anmerkte problematisch bei Kurven.

Galaxien, Nebel, Asteroidenfelder und Sonnen hab ich derzeit als Sprites in einiger Entfernung zur Kamera plaziert, sodass man schon merkt, wenn man näher kommt. Kommt man einem Asteroidenfeld etwa sehr nahe, so wird der _eine_ Sprite (mit vielen Klecksen) langsam ausgeblendet und statt dessen an gleicher Stelle ein Feld vieler Einzelsprites dargestellt. Fliegt man wirklich in so ein Feld herein, dann fade ich diese Sprites im Nahbereich erneut aus und ersetze sie durch echte 3D-Asteroiden. Das ganze habsch mir vom Spiel Freelancer abgeschaut.
Das ganze erfordert natürlich einigen Aufwand und macht das Game nicht eben schneller, sieht aber annehmbar aus. Meine interne 3D-Karte eines Raumsektors ist entsprechend in viele Zonen eingeteilt.
uomini cercano uomini

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group