Höhenkarte vs 3D Model Mesh

8

Ich arbeite derzeit an einem 3D-PC-Spiel (geschrieben in C ++ und DirectX 9.0) und versuche, den besten Weg zu finden, um Level-Daten im Speicher zu speichern.

Die Aktion des Spiels findet unter der Erde statt, sodass sich immer eine Decke über dem Spieler befindet. Der Boden ist ziemlich holprig und es gibt immer Dinge wie Stalagmiten. Die Ebenen sind klein und sehen meistens wie Korridore aus. Hier sind die Optionen, die ich bisher gefunden habe:

Zwei Höhenkarten, die entweder als Bitmap oder als Binär- / Textdatei auf der Festplatte gespeichert sind. Eine Höhenkarte für die Decke (oben), eine für den Boden.

ODER

Ein einzelnes 3D-Netz in einem 3D-Modellformat (z. B. .fbx, .x, .obj, was auch immer).

Wie soll ich mich der Datenspeicherung auf Ebene nähern? Was wäre meine beste Option in Bezug auf die Leistung? Ich habe auch einige Probleme, wenn es darum geht, eine Ebene zu texturieren, die über eine Höhenkarte geladen wurde. Die Verwendung eines 3D-Modells macht das Texturieren zum Kinderspiel.

Vielen Dank!


quelle

Antworten:

4

In Bezug auf die Leistung sollten beide Optionen gleichwertig sein, da früher oder später alles in ein Modell konvertiert wird.

Höhenkarten:
+ Einfach zu speichern und zu bearbeiten
+ Einfach zu berechnende Texturkoordinaten, wenn sie nicht vorberechnet sind -
Schlechte Texturierung auf steilen Oberflächen -
Benötigt Begleitmodelle für bessere Details -
Ermöglicht kein überlappendes Gelände (keine Überhänge).

Modelle:
+ Mehr Kontrolle über die horizontale Verschiebung
+ Überlappendes Gelände ist möglich
+ Maximale Kontrolle über Texturen -
Kollision ist etwas komplizierter -
Könnte etwas mehr Speicher auf der Festplatte verbrauchen

Nach meiner Erfahrung ist es am besten, eine etwas flache Höhenkarte für das Basisgelände und die Verwendungsmodelle für Dinge wie die Stalagmiten zu verwenden, und Sie können sogar sich wiederholende Modelle für solche Objekte verwenden (um Speicherplatz zu sparen).

Natürlich könnten Sie ein Vektorfeld verwenden, aber das ist im Grunde ein Modell mit einfacherer Texturierung.

Äpfel
quelle
1

Es könnte hilfreich sein, wenn Sie uns sagen, welches Genre das Spiel ist, was die Kamera sieht usw. Ich nehme an, Sie sprechen von einem FPS, bin mir aber nicht sicher.

Wie auch immer, hier ist ein Link zu einem Vortrag über das Terrain in Halo Wars, den ich interessant fand und der Ihnen vielleicht Ideen geben kann: http://www.gdcvault.com/play/1277/HALO-WARS-The-Terrain-of . Es befasst sich mit einigen der von Ihnen erwähnten Probleme und möglichen Lösungen.

maul
quelle
0

Sie müssen nicht unbedingt eine über die andere wählen, beide können effektiv sein, und es gibt keinen Grund, warum Sie beide nicht kombinieren können.

Wenn Sie Höhenkarten verwenden, würde ich persönlich ein Bitmap-Format wählen. Directx sollte in der Lage sein, das gesamte Laden der Bitmap für Sie durchzuführen und daraus eine Ressource zu machen, die Sie verwenden können. Wenn Sie eine Nur-Text-Datei verwenden, müssen Sie diese selbst analysieren. Dies gibt Ihnen natürlich mehr Freiheit bei der Interpretation der Datei und ist möglicherweise ein guter Ausgangspunkt, um das Experimentieren zu erleichtern.

Eine zu berücksichtigende Sache ist jedoch, dass Sie mit einer Höhenkarte eine feste Auflösung erhalten, sodass die von Ihnen erwähnten Stalagmiten möglicherweise schwer gut darzustellen sind, es sei denn, Sie erhöhen die Pixeldichte der gesamten Karte.

Im Allgemeinen würde ich sagen, dass eine Höhenkarte ein effektives Mittel zum Speichern Ihres Geländes ist, aber das Hinzufügen von Details wie Stalagmiten wäre bei Modellen viel flexibler.


quelle