Perspektive in frühen Pseudo-3D-Spielen

7

Bitte schauen Sie sich den Screenshot unten vom alten klassischen Space Harrier an. Meine Frage betrifft die gekrümmte Perspektive auf dem Schachbrettboden. Es hat eine seltsam gekrümmte Geometrie (ich erinnere mich, dass ich dies in einigen alten Spielen / Demos gesehen habe). Ich erinnere mich ein wenig an einen Moire-Effekt, und ich denke, einiges davon (im Hintergrund) ist genau das - aber ich denke nicht, dass es die ganze Geschichte ist. Vergleichen Sie mit dem Screenshot aus der Sega-Version, der Moiré-Effekte in der Ferne zeigt, aber nicht die gleiche Krümmung.

Damit...

  • Warum die Krümmung?
  • Haben sie das absichtlich gemacht oder ist es ein Nebeneffekt irgendeiner Technik?
  • Wie wird es erreicht?

Space Harrier - C64 Space Harrier - Sega

UpTheCreek
quelle
Ihre Frage scheint darauf hinzudeuten, dass diese beiden Bilder nicht die gleiche Krümmung des Gitters in der Ebene aufweisen. Beide erzeugen jedoch genau den gleichen Effekt, soweit ich das beurteilen kann. Es ist nur so, dass im unteren Bild der Kamerawinkel etwas geringer ist.
Olhovsky
1
Ich glaube, dieser Effekt wurde auf dem Super-Nintendo "Modus 7" genannt: en.wikipedia.org/wiki/Mode_7, der Ihre dritte Frage beantworten könnte.
Thedaian
@Olhovsky - Ich bin damit einverstanden, dass es in beiden Bildern einen Moiré-Effekt gibt. Ich habe nur das Gefühl, dass im ersten ein zusätzlicher Effekt auftritt (die Krümmung ist im Vordergrund deutlich sichtbar). Vielleicht irre ich mich.
UpTheCreek
2
Das Ausmaß der Krümmung ändert sich, wenn sich Ihr Kamerawinkel ändert (weniger Krümmung in der Nähe, wenn sich die Kamera weiter vom Boden entfernt). Stellen Sie sich vor, Sie schauen direkt auf das Gitter. Dann würden Sie keine Krümmung in der Mitte sehen, und Sie würden Krümmung an den Rändern sehen. Es gibt jedoch eine andere Abtasttechnik, die im ersten Bild verwendet wird. Sie haben Recht. Das Aliasing von Kanten in der Nähe ist deutlich anders (nicht unbedingt besser) als im zweiten Bild. Ich weiß nicht, was für eine Art von Probenahme das ist. Ich bin immer noch zuversichtlich, dass der Unterschied in der Krümmung nur auf den Nockenwinkel zurückzuführen ist.
Olhovsky

Antworten:

6

Dies hat mit Mip-Mapping- Texturen zu tun . Diese Textur wurde nicht mip-zugeordnet. Siehe die Vorher- und Nachher-Mip-Zuordnung auf diesem Bild:

http://warsztat.gd/files/articles/texatlas/mip-map2.png

Es ist also ein Nebeneffekt des Spiels, Texturen in einem Winkel weit weg zu zeichnen. Mip-Mapping behebt dieses Problem. Um dies zu erreichen, müssen Sie kein Mip-Mapping verwenden.

MichaelHouse
quelle
Interessant, danke. Wenn Sie jedoch in Ihren beiden Beispielen einer der Diagonalen vom unteren Bildrand aus folgen, folgen beide einer vollständig geraden Linie (das c64-Bild folgt einer Kurve). Die Mip-Mapping-Version scheint weniger unter Interferenz- / Moiré- und Aliasing-Effekten zu leiden, aber die Geometrie sieht für mich in jedem Fall gleich aus. Ich bin noch nicht davon überzeugt, dass dies die vollständige Antwort ist.
UpTheCreek
Es ist nicht die vollständige Antwort, aber es ist ein Nebeneffekt. Es hat etwas mit dem Zeichnen einer Textur im Unendlichen zu tun. Wenn die Perspektive es in diesem Winkel und mit ihrer sehr begrenzten Rechenleistung, denke ich, haben sie etwas geschrieben, das gut genug wäre. Als solches müssten Sie den Effekt manuell über Shader erstellen.
Peter Ølsted
Nun, es wird schwierig sein, ein Beispiel für Mipmapping zu finden, das genau den gleichen Effekt zeigt. Der Einfluss der Rendering-Software / -Hardware wirkt sich auf das Endergebnis aus. Hier einige andere Beispiele für Mipmapping: Link Link
MichaelHouse
1
UpTheCreek: Tatsächlich folgen die Diagonalen NICHT einer geraden Linie. Betrachten Sie das Bild, das er verlinkt hat: warsztat.gd/files/articles/texatlas/mip-map2.png . Schauen Sie sich die Diagonalen in der Ferne an, sie zeigen dasselbe Verhalten wie die Bilder Ihrer Frage. Der Grund dafür, dass die Kurve weiter entfernt ist, liegt hauptsächlich darin, dass der Winkel der Kamera zur Ebene größer ist als der Winkel in den Bildern in Ihrer Frage.
Olhovsky
Ich bin mir sicher, dass es viele Test-Apps gibt, mit denen die Auswirkungen von Mip-Mapping gezeigt werden können. Versuchen Sie, einen zusammenzustellen und zu prüfen, ob Sie den gewünschten Look neu erstellen können.
MichaelHouse
6

Ich denke, es ist richtiger zu sagen, dass der Effekt, den Sie sehen, Aliasing heißt . Speziell ein Moiré-Muster .

Grundsätzlich gab es für die Geschwindigkeit eine naive Methode, um auszuwählen, welches Pixel aus einer Textur bei einem bestimmten Pixel auf dem Bildschirm gezeichnet werden soll, wenn die Kamera, von der Sie rendern, und die Krümmung, die Sie sehen, ein Nebeneffekt des Gittermusters ist.

Also nein, es war nicht beabsichtigt.

Mipmapping hilft, dieses Problem zu beheben und die Rendergeschwindigkeit zu verbessern (da das Auswählen benachbarter Pixel aus einer Textur mit niedrigerer Auflösung aufgrund der Cache-Kohärenz schneller ist als das Auswählen weit auseinander liegender Pixel in einer größeren Textur). Wie Sie jedoch anhand von Mipmap-Beispielen sehen können, sieht die Textur dadurch nicht "richtig" aus. Dafür benötigen Sie eine anisotrope Filterung .

Tetrad
quelle
Was bei dieser Antwort fehlt, ist, dass das obere Bild in der Frage keine einfache Punktabtastung verwendet. (Vergleichen Sie das Aliasing der
Gitterkanten