Jump to content

Geistergleise


BahnLand

Empfohlene Beiträge

Geistergleise
=============

Hallo Neo und Gemeinde,

wenn ich die Ereignissteuerung für meine Gotthard-Anlage fertiggestellt habe (wird noch ein Weilchen dauern), habe ich vor, ein paar Videos davon zu machen, wo ich insbesondere auch die Teleskop-Eigenschaft (Zoom) der Benutzer-definierten Kamera einsetzen möchte. Im Vorfeld hierzu habe ich ein paar Versuche gemacht und bin dabei auf "seltsame Geistergleise" gestoßen, die nur bei starkem Zoom, aber nicht mit der "freien Kamera" sichtbar sind.

_geistergleise_01.jpg
_geistergleise_02.jpg
_geistergleise_03.jpg
"Geistergleise" durchschneiden Loks und Wagen oder schweben davor

Ich habe daraufhin ein paar Versuche angestellt und bin zu der Vermutung gelangt, dass es sich hierbei um das "Z-Buffer-Problem" handelt, das Neo bereits in diesem Beitrag angesprochen hat.

Hierbei kommt es aufgrund einer wohl nicht mehr möglichen korrekten Unterscheidung zwischen verdecktem und verdeckendem Objekt zu Vertauschungen in der Darstellung, die sehr schnell offensichtlich werden, wenn man das verdeckende Objekt (das hier als verdeckt angezeigt wird) ausblendet.

_geistergleise_04.jpg
Die schwebend wirkenden Gleise müssten eigentlich hinter dem Bahnsteig und unter den Fahrgestellen der Fahrzeuge dargestellt (links) oder von dem Triebwagen (rechts) verdeckt werden.

_geistergleise_05.jpg
Die Ausblendung des Bahnsteigs und des Triebwagens zeigt, wo die Gleise eigentlich liegen. An der (falschen) Überdeckung der Fahrwerke (links) hat sich durch die Ausblendung der Bahnsteige nichts geändert. Rechts liegt das "vorher schwebende" Gleis nun ebenfalls an der "richtigen Stelle". Aber auch die Weichen (am rechten Bildrand) werden nicht korrekt dargestellt (es fehlen die Schienen der nicht eingestellten Weichenpfade).

Ursache für die hier gezeigten Darstellungsfehler ist die nach Neo's Beitrag wohl die Beschränkung der "Reichweite" des Z-Buffers auf etwa 5000 mm.

Die habe ich in meinem Beispiel weit überschritten. Der Abstand zwischen der Kamera, etwas südlich von Göschenen positioniert (das folgende Bild zeigt einen Ausschnitt mit Standard-Blickwinkel 30°), ...

_geistergleise_06b.jpg

... und dem Gepäckwagen des "Preußenzuges" in Bildmitte als "Zielpunkt" im Bahnhof Gurtnellen (gleiche Kamera-Position, aber Blickwinkel 1°) beträgt nämlich etwa 17000 mm.

_geistergleise_07.jpg

Nähert man sich mit der Kamera sukzessive dem "Zielpunkt Gepäckwagen", so beginnt das Phänomen ab einer Entfernung von 9800 mm langsam zu verschwinden, bis es bei einer Entfernung von 8000 mm für alle dazwischen liegenden Objekte ganz verschwunden ist.

_geistergleise_08.jpg

Die weiter als der Gepäckwagen von der Kamera entfernten Objekte (wie z.B. die Dächer der dahinter stehenden Häuser oder die Güterwagen des Dampfzuges rechts oben) sind weiterhin betroffen. Erst wenn man die Kamera noch weiter heran schiebt, werden auch die "hinteren" Objekte "sauber" dargestellt.

_geistergleise_09.jpg

Hierzu nun ein paar Fragen an Neo:

  1. Ist die Obergrenze von 5000 mm für den Z-Buffer von Dir festgelegt oder ist dies eine Hardware-Beschränkung aller oder einiger gängiger Grafikkarten?
  2. Falls von Dir festgelegt: Könntest Du dieses Obergrenze erhöhen - oder was spricht dagegen?
    In Anbetracht der Tatsache, dass bei den Standard-Maßen der U-Form-Bodenplatte (Außenmaße 4500 mm x 3000 mm) die Diagonale (5400 mm) die Z-Buffer-Obergrenze bereits deutlich überschreitet, halte ich diese Grenze als viel zu niedrig eingestellt (falls im Programm definiert).   
  3. Gibt es eventuell noch eine andere Möglichkeit, das Auftreten dieses Phänomens bei "Tele-Aufnahmen" zu vermeiden?

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo BahnLand,

ich selber konnte das Problem bisher bei deiner Anlage nicht reproduzieren. Vielleicht ist es dir möglich, das Verhalten in einer Beispielanlage mit nur wenigen Objekten zu reproduzieren. Daher kann ich im Moment nur Mutmaßungen anstellen. Für mich sieht das schon nach einem Z-Buffer-Problem aus, allerdings hat das technische Gründe. Die 5000 mm sind von mir willkürlich gesetzt, trotzdem hängen sie damit zusammen. Die Grafikkarte hat nur eine maximale Bittiefe für den Z-Buffer. Dieser liegt mindestens bei 16 Bit und maximal bei 32 Bit. Alle Objekte müssen also nun in diesen Bereich passen. Je größer die maximale Sichtweite, desto mehr Tiefen müssen in den Bereich passen, weshalb es schneller zu Überlagerungen kommen kann. Das Vergrößern der 5000 mm wäre daher kontraproduktiv, der umgedrehte Fall wäre besser, indem man die Sichtweite reduziert und somit mehr "Auflösung" im Z-Buffer für weniger Tiefenwerte bekommt.

Konkrete Aussagen kann ich aber wie gesagt erst nach einer Reproduktion machen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

das Phänomen lässt sich auch mit einer "Mini-Anlage" mit einer "normal-großen" Anlagen-Platte (300 cm x 300 cm) nachstellen.

_demobild_2k.jpg

In den nachfolgenden Bildern habe ich bei verschiedenen Kamera-Positionen die einzelnen Details markiert (die Position der Bodenplatte ist (0,0,0), die Position der Lok als von der Kamera zu verfolgendes Objekt ist auf ganzzahlige Werte gerundet (1270, 1434, 14)):

Bild 1 (Kamera-Position (-1000, -1000, 1500) und damit Entfernung zur Lok 3645 mm)
_demobild_1mk.jpg

Bild 2 (Kamera-Position (-2000, -2000, 2000) und damit Entfernung zur Lok 5141 mm)
_demobild_2mk.jpg

Bild 3 (Kamera-Position (-600, -800, 1500) und damit Entfernung zur Lok 3270 mm)
_demobild_3mk.jpg

Die grünen Markierungen kennzeichnen verschwundene Teile der Drehgestelle von Lok und Wagen.
Die violetten Markierungen kennzeichnen im Gleisverlauf sichtbare "Schienenstöße".
Die roten Markierungen zeigen Abdeckungen von Schienen der nicht ausgewählten Fahrwege der Weichen durch das Schotterbet des ausgewählten Fahrwegs.

Das Phänomen tritt grundsätzlich nur bei Gleisen mit sich überlappenden Fahrwegen auf (Weichen, Kreuzungsweichen, ...) und verstärkt sich mit Zunahme der Entfernung zwischen Benutzer-definierter Kamera und dem Verfolgungs-Objekt. Es ist (wenn auch nur leicht) aber auch schon bei Entfernungen weit unter 5000 mm (der Grenze für den Z-Buffer) erkennbar. Ein Indiz für das Auftreten des Phänomens ist die Sichtbarkeit von "Schienenstößen", die durch eine "falsche" Überlappung von Schienen und Schotterbett hervorgerufen wird.

Die Demo-Anlage und die oben gezeigten Bilder (sowohl mit als auch ohne Markierungen im Großformat 1920x757 Pixel) sind im beiliegenden ZIP-Paket enthalten.

Viele Grüße
BahnLand

 

Geister-demo.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo BahnLand,

danke für das Beispiel, dort tritt der Fehler auch bei mir sofort auf. Ursache ist wie vermutet der Z-Buffer in Kombination mit Weichen, denn dort findet eine zusätzliche Steuerung des Z-Buffers statt, damit die aktive Spur immer über den anderen Spuren liegt. Das funktioniert aber nur begrenzt und führt zu solchen Fehlern.

Das Problem wird sich in Zukunft von alleine lösen. Die neuen Gleise verwenden eine andere Darstellungslogik, die nicht von diesem Problem betroffen ist.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...