Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

14.10.2003, 16:41

Kugel mit mehreren Texturen...

Hiho,

ich hab ein paar Fragen, wäre super wenn mir jemand links zu tutorials etc. die sich mit dem Thema beschäftigen posten kann... nen Beispiel lehn ich natürlich auch nicht ab...

1) Ich hab eine Weltkugel mit einer Textur der Erde... da die Weltkugel zentrales Element des Spiels ist muß die Textur auch beim Zoomen noch einigermaßen gut aussehen. Ich hab zum Testen eine 2048x1024 Textur genommen, aber es sieht immer noch sehr verwaschen aus... wie kann ich die glusphere mit mehreren Texturen versehen, so daß ich die Weltkugel z.B. aus 4 1024x512er Texturen zusammensetze? Will das machen weil meines wissens nach Grafikkarten nicht beliebig große Texturen verwenden können, oder sehe ich das falsch?

2) Ich habe eine Tag und eine Nacht-Textur der Erde. Ich wüde gerne im Schattenbereich der Erde die Nachttextur benutzen, im Tagbereich die Tagtextur... gibt es eine Möglichkeit irgendwie dynamisches Alpha-Blending zu benutzen? Dann leg ich einfach beide Texturen mit 2 spheren übereinander und mach die obere an den stellen transparent wo nacht sein soll... ok, is wohl nicht die Ideale Lösung... hat jemand da eine Idee?

3) Ich hab bei meinem Beispiel eine Atmosphäre simulieren wollen. Dazu habe ich mit ein bisschen Abstand noch eine Sphere generiert, die etwas größer ist als die eigentliche Erde. Diese hab ich mit einer bläulichen Textur belegt und diese dann mit blending mit den farben der erde gemerged (wie auch immer das im Fachjargon heißt... . Das Problem ist nun folgendes: Wenn ich den Weltraum als Hintergrund auf ein Quad texturiere, ist die ganze Erdgucke auch transparent...

Soo, wäre super wenn mir da jemand helfen könnte, bin noch recht neu auf dem gebiet, denke meine Erklärungsversuche werden einem Profi ein leichtes Schmunzeln aufs Gesicht zaubern... ich hoffe ihr wisst was gemeint ist...

Danke!

Benny

2

14.10.2003, 22:05

Hi!

Zu 1:
2048x1024 ??? Nicht gut für die Performance ;) Dass es verwaschen ausschaut, kann an 2 Dingen liegen: Entweder Du zoomst in die Textur rein, bis man eine Stecknadel auf der Erde erkennen kann, oder Du filterst falsch (einfach mal mit den verschiedenen Filteroptionen herumspielen).
Die Kugel mit mehreren Texturen zu mappen ist auf jeden Fall machbar, für ein Spiel ist das allerdings overkill (4 mal 1024x512'er Texturen belegen dann doch einiges an Speicher).

Zu 2:
Wenn Du für die Farbwerte der Vertices unterschiedliche Werte pro Vertex verwendest, dann werden die Farben ja über das Dreieck hinweg interpoliert (Farbverlauf). Theoretisch sollte das auch mit RGBA Farben(Alphawerten) funktionieren.

Zu 3:
Dieses Problem haben sogar kommerzielle Spiele. Es liegt meistens an der Renderreihenfolge (Im Z-Buffer steht nicht, ob der Pixel transparent ist). Deshalb muss man die Dreiecke vorher sortieren und je nach Transparenz rendern. (Allerdings kann es bei Dir auch an einem falschen Renderstate liegen).


mfg, Heiko
visit: www.poke53280.de

3

15.10.2003, 19:32

Vieleicht schreibst dir schnell einen eigenen Algorithmus um eine Sphere zu erzeugen. Dann haste auch mehr Spielraum.

Also ich würds so machen. Als erstes würd ich mir einen eigenen Algo schreiben, der die Vertice so berechnet als men man die Sphere aufklappt wie man es auch bei den Texturen macht. Dann kann ich ganz einfach mit der Formel "x + y * Zeilenbreite" jeden Vertex selektieren. Dann hat man es auch einfacher die Sphere in mehrere Sektionen zu unterteilen, von den Texturkoordinaten her.
Weil die Sphere bei dir ein Zentraler Punkt ist, würd ich noch meherere Detailstufen einbauen. Wenn man ganz weit weg ist benutzt man nur ein paar Vertice um die Sphere aufzubauen. Aus Performance technischen Gründen ist es wohl auch besser alles einfach mit einer 256x256 oder 128x128 Pixel Textur zu rendern.
Wenn man allerdings nah dran ist, sollte man ruhig große Texturen verwenden. Z.B. mehrere 256x256 oder auch 512x512 Texturen. Allerdings sollte man beachten das man gut die Hälfte der Texturen nicht sehen kann, weil sie sich auf der anderen Seite der Sphere befinden. Daher empfehle ich dir einen Normalen Vektor anzulegen, für jede Textur einen. Zeigt der Normalenvektor von dir weg sieht man die Textur von hinten. Ein Rendern dieser Textur ist also Sinnlos. Das macht sich dann besonders ab Texturen der Größe 512x512 und mehr bemerkbar. Wenn man dann noch näher dran ist sieht man vieleicht nur noch ein oder zwei Texturen und die anderen sind dann auserhalb des Sichtbereichs. Da sollte man ebenfalls das Culling durchführen. Dann kann man auch gern Texturen der Größe 1024x1024 und 2048x2048 verwenden. Dann dürfte man schon einzelne Städte sehen können, wenn die Sphere die Erde darstellt ;D

Das ganze wird dann zwar viel Speicher brauchen, aber bedenke das man Heutzutage allein min. 32MB VRAM hat plus AGP-Speicher. Die meisten haben sogar 64 und 128MB. Klar man sollte nicht verschwänderisch sein, aber knausern brauch man heutzutage auch nicht mehr.

Was dein Alpha Blending angeht. Da scheinst du die Renderreihenfolge nicht beachtet zu haben. Erst alle nicht Transparenten Objekte ganz Normal rendern, und die Transparenten Vertice nach der Z-Achse Sortiert rendern.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige