Mappa altezza vs mesh modello 3D


8

Attualmente sto lavorando a un gioco per PC 3D (scritto in C ++ e DirectX 9.0) e sto cercando di trovare il modo migliore per archiviare i dati di livello in memoria.

L'azione del gioco si svolge sotto terra, quindi c'è sempre un soffitto sopra il giocatore. Il terreno è piuttosto accidentato e ci sono cose come le stalagmiti presenti in ogni momento. I livelli sono di piccole dimensioni e per lo più sembrano corridoi. Ecco le opzioni che sono riuscito a trovare finora:

Due mappe di altezza memorizzate sul disco rigido come bitmap o file binario / di testo. Una mappa di altezza per il soffitto (in alto), una per il suolo.

O

Una singola mesh 3D in un formato modello 3D (diciamo, .fbx, .x, .obj qualunque).

Come devo avvicinarmi alla memorizzazione dei dati a livello? Quale sarebbe la mia migliore opzione, parlando in termini di prestazioni? Ho anche qualche problema quando si tratta di strutturare un livello caricato tramite una mappa di altezza; l'utilizzo di un modello 3D semplifica le trame.

Grazie!

Risposte:


4

Per quanto riguarda le prestazioni, entrambe le opzioni dovrebbero essere equivalenti poiché tutto sarà convertito prima o poi in un modello.

Mappe altimetriche:
+ Facile da memorizzare e modificare
+ Facile da calcolare le coordinate delle trame se non sono precalcolate
-Profondità di trama su superfici ripide
-Necessità di modelli di accompagnamento per un migliore dettaglio
-Non consente sovrapposizioni del terreno (senza sporgenze).

Modelli:
+ Maggiore controllo sullo spostamento orizzontale
+ Possibile sovrapposizione del terreno
+ Massimo controllo sulle trame - La
collisione è un po 'più complicata -
Potrebbe consumare un po' più di memoria sul disco

Nella mia esperienza, è meglio usare una mappa di altezza piuttosto piatta per il terreno di base e i modelli di utilizzo per cose come le stalagmiti, e puoi anche usare modelli ripetitivi per tali oggetti (per risparmiare memoria).

Ovviamente, potresti usare un campo vettoriale, ma fondamentalmente è un modello con texture più semplici.


1

Potrebbe esserti utile se ci dicessi che genere di gioco è, cosa vede la telecamera, ecc. Suppongo tu stia parlando di un FPS ma non ne sono sicuro.

Ad ogni modo, ecco un link a un discorso sul terreno di Halo Wars che ho trovato interessante e che potrebbe darti idee: http://www.gdcvault.com/play/1277/HALO-WARS-The-Terrain-of . Si occupa di alcuni dei problemi e delle possibili soluzioni menzionate.


0

Non devi necessariamente scegliere l'uno sull'altro, entrambi possono essere efficaci e non c'è motivo per cui non puoi combinare i due.

Se usi le mappe di altezza, sceglierei personalmente un formato bitmap. Directx dovrebbe essere in grado di eseguire tutto il caricamento della bitmap per te e trasformarlo in una risorsa che puoi utilizzare. Se usi un file di testo semplice, dovrai analizzarlo da solo. Questo ovviamente ti dà un po 'più di libertà nell'interpretazione del file e potrebbe essere un buon punto di partenza per consentire una sperimentazione più semplice.

Una cosa da considerare però è che una heightmap ti lascerà con una risoluzione fissa, quindi le stalagmiti che menzioni potrebbero essere difficili da rappresentare bene, a meno che tu non aumenti la densità di pixel dell'intera mappa.

In generale, direi che una heightmap è un mezzo efficace per memorizzare il tuo terreno, ma l'aggiunta di dettagli come le stalagmiti sarebbe molto più flessibile con i modelli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.