Mond verschwindet

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Omenaton_2

Betreff: Mond verschwindet

BeitragMo, Nov 09, 2009 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !

Ich habe in meinem Weltraum RPG ein Problem mit großen Himmelskörpern wenn der Spieler sich sehr weit von denen entfernt.

Erstmal paar Kurzinformationen zum Hintergrund :

Bei mir entspechen 5 BlitzBasic 3D Koordinaten Einheiten 1 meter.

Ein Sektor ist 17km x 17km groß. Wichtig ist also nur, daß innerhalb diesen Grenzen alles was in sichtbar sein soll auch richtig sichtbar ist. (Nicht ganz, aber nehmen wir mal so an.)

Ich habe alle Objekte die ich im Weltraum darstelle in 3 Kategorien eingeordnet : kleine Objekte, normal große Objekte und riesige Objekte.
Die kleinen lasse ich mit AutoFade bei (glaube ich) 2000 m ausfaden, die normal großen bei 3000 m.
Die riesigen Objekte (Monde) niemals.

Mit den kleinen und mit den normal großen Objekten gibt es auch keine Probleme, mit dem Mond (der als never fade out eingestellt ist) aber schon.

Der Mond verschwindet zwischen 5500m und 7000m doch, aber nicht mit schönem Ausfaden, sondern mit leicht zackigen Konturen, als ob es durch die Skybox langsam abgeschnitten werden würde, als ob der Mond langsam außerhalb des Skyboxes verschwinden würde.

Ich habe natürlich gleich gedacht, ich skaliere die Skybox einfach viel größer, dann müßte diese Fehlerquelle ausgeschaltet sein.
Das geht aber nicht so wie es mir wünsche, weil nach meiner Feststellung die Skybox nur auf das maximal 20 000 fache vergrößert werden kann (was 4000m entspricht). Wenn ich die größer skaliere, wird sie gar nicht oder nur stückchenweise dargestellt.

Woran kann hier das Problem genau liegen und was wäre die beste Lösung ? Kann es eventuell so ein Z-Buffer Fehlberechnung wegen zu großer Entfernung sein ?

Oder soll ich vielleicht die Skybox nicht so groß skalieren, sondern schon von vornherein riesen groß als Mesh erstellen ? Oder führt das zum selben Problem ?

NightPhoenix

BeitragMo, Nov 09, 2009 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
CameraRange erhöhen
beachte dabei CameraFog falls du es benutzt.

Und setze die Skybox mit EntityPick so dass sie immer als erstes gezeichnet wird. Erst dann den Rest der Welt. So kannst du die Skybox auch extrem klein skalieren und es wird niemals ein Objekt dahinter verschwinden.

Bsp: EntityOrder SkyBox,1000
 

Omenaton_2

Betreff: Problem gelöst

BeitragMo, Nov 09, 2009 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle und kompetente Antwort.
Der CameraRange war zu niedrig eingestellt. Ich habe ihn nun auf 100000 eingestellt und jetzt bleibt der Mond immer schön sichtbar.
 

Krischan

BeitragMo, Nov 09, 2009 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
100000? Du solltest nicht zu hohe Ranges verwenden, sonst fangen Deine Objekte an zu zittern. Das hat mit der Genauigkeit der Nachkommastellen zu tun. Wenn überhaupt maximal 65535, aber eher so im Bereich 1...10000. Und Du solltest Dich dann mal mit "Housekeeping" oder LOD beschäftigen.

Nibor

BeitragMo, Nov 09, 2009 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie genau das ist hängt soweit ich weiß von dem Quotienten rangeMax/rangeMin ab. Je größer der ist, desto ungenauer. Wenn rangeMin z.B. bei 10 ist, kann rangeMax auch 10 mal größer sein als bei 1 und die Genauigkeit bleibt gleich.
Also würde 100000/10 genauso gehen wie 10000/1.
http://www.blitzforum.de/showcase/203/
 

Omenaton_2

BeitragMo, Nov 09, 2009 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Vergißt aber nicht, daß ich fast alle Objekte schon bei 15 000 Einheiten ausblende. Lediglich 2-3 Monde oder Planetoiden werden aus größerer Entfernung noch gezeichnet. Der Mond zumindest den ich drin habe sieht auch auf vom Rand der Sektor aus gesehen gut aus.

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Nov 09, 2009 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Als alternative wollte ich nochmal erwähnen, dass man das ganze auch mit zwei Kameras machen könnte, wo dann die Camerarange der zweiten da anfängt wo die der ersten aufhört.
Dann würdest du bei der zweiten einfach nur noch die Objekte rendern, die man immer sehen soll, egal wie groß die Entfernung und die dann eventuell sogar mit verminderten Details, da man auf die Entfernung ja eh kaum noch was erkennen kann. Gothic 3 macht das zum Beispiel(vereinfacht gesagt) so, dass ab einer bestimmen Entfernung keine Objekte sondern nur noch ein vereinfachtes Terrain-Mesh und Lowpoly-Bäume gezeichnet werden.

Das ist zwar unschön anzusehen wenn schlecht gemacht, kann aber für einen unglaublich großen Weitblick sorgen. Smile
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

ToeB

BeitragDi, Nov 10, 2009 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Außerdem finde ich die Maßeinheit 5units = 1Meter zu groß gewählt. Nimm liber 1unit = 1meter. Da hast du keine umrechnungs schwierigkeiten und außerdem sind die Objecte auch net so weit weg (5* näher ^^)

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Krischan

BeitragDi, Nov 10, 2009 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nibor hat Folgendes geschrieben:
Wie genau das ist hängt soweit ich weiß von dem Quotienten rangeMax/rangeMin ab. Je größer der ist, desto ungenauer. Wenn rangeMin z.B. bei 10 ist, kann rangeMax auch 10 mal größer sein als bei 1 und die Genauigkeit bleibt gleich.
Also würde 100000/10 genauso gehen wie 10000/1.


Stimmt, im Zweifel würde ich sogar empfehlen max. 1:10000 (oder 0.1:1000 oder 0.01:100, also Faktor Maxrange/Minrange sollte 10000 ergeben, es gehen bestimmt auch grössere Werte aber so ists einfacher zu rechnen). Man sollte auch in den wenigsten Fällen mehr als 10000 Units brauchen (bei 1BU=1M sind das schon 10km). Und beim Weltraum sprengen die Dimensionen/Distanzen sowieso jede Zahl in Blitz3D, da muss man das gleich anders darstellen/rechnen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group