Qual è la premessa di base della tecnologia come si trova in Oblivion (e altri giochi, ne sono sicuro, non ho giocato abbastanza per sapere), in cui gli oggetti da lontano sono vagamente mostrati quando li vedi da lontano? Ad esempio, una grande torre è a un miglio di distanza e si vede il vago rettangolo di esso che spunta dall'orizzonte ... Ovviamente una scena 3D gigante non può essere interamente renderizzata, e so che nel caso di heightmaps ci sono solo algoritmi di approssimazione che vengono utilizzati per ridurre la qualità della mappa dell'altezza più lontano dalla fotocamera, ma per oggetti specifici, qual è il modo migliore per mostrarli?Rendering di oggetti 3D distanti [giochi]
Stavo pensando forse a una tecnica di pre-rendering, in cui scegli punti specifici attorno al paesaggio e poi fai un programma che disegna tutti i modelli heightmap e 3D attorno a quel punto e scatta una foto. Ci vorrebbero diverse foto, e poi quando il giocatore è vicino a quel punto, le immagini verrebbero usate come skybox.
Un'altra tecnica più ovvia è quella di archiviare modelli 3D veramente approssimativi, ma come fa il sistema di rendering 3D a scegliere specificamente di rendere il modello approssimativo dell'edificio e non i modelli approssimativi di altri meno significativi (e probabilmente non visibili) da quella distanza) oggetti? Come memorizzerai qualcosa del genere insieme al tuo heightmap? Forse in base alla progettazione, solo alcuni di questi punti di riferimento significativi e quindi è sufficiente archiviarli in un file di dimensioni ridotte, e su ciascun fotogramma vengono visualizzati quelli che sono a meno di x molto lontani?
Sono consapevole che la serie Halo sceglie di dividere il gioco in livelli e quindi ogni livello ha uno skybox diverso fatto a mano. Questo è un po 'quello che stavo cercando nel primo suggerimento, ma non ne sono sicuro. Immagino che sto solo cercando di raccogliere altre idee o affinamenti o problemi nelle mie idee, così da poter scegliere quali prototipi con il mio tempo e conoscenza limitati.
Un altro argomento correlato è come visualizzare le montagne a una certa distanza, dato che sarebbero parte della heightmap e non i modelli 3D su di essa, quindi non sarebbero in grado di avere una versione approssimativa e la heightmap l'algoritmo di approssimazione potrebbe rovinare la montagna da una distanza molto lontana come quella (supponendo che proverai anche ad approssimare e renderizzare una geometria così distante, che probabilmente non vorresti). Punti bonus se lo copri anche nella tua risposta. :)
Grazie!
P.S. Sto usando OpenGL. Sto solo cercando i concetti di base, ma se scegli di pubblicare un codice di esempio, usa le funzioni ei termini OpenGL! :)
EDIT: Grazie per le risposte! A scopo di documentazione ecco un'altra risorsa che ho trovato: Capitolo 4.9 in Game Programming Gems 2 riguarda il concetto di rendering di paesaggi lontani su skybox: http://books.google.com/books?id=1-NfBElV97IC&lpg=PA416&ots=SOpnfijZly&dq=render%20distant%20to%20skybox&pg=PA416 (sfortunatamente quell'anteprima è solo la prima pagina del capitolo ... I'll devo prendere quel libro dalla biblioteca della mia università non appena torno ad agosto)
Anche dopo aver letto queste cose, sono ancora dell'opinione che il LOD sia per oggetti che sono ad una distanza ancora ragionevolmente vicina. Se gli oggetti non hanno nemmeno un pixel grande, ma li stai ancora alimentando con la scheda grafica, stai semplicemente sprecando energia, sia usando il LOD che non. E questo sarebbe il caso di tutto tranne che degli oggetti distanti più grandi in assoluto; alcuni edifici alti e alcune montagne, nella maggior parte dei casi, ma i piccoli modelli di dettaglio (cespugli, persino alberi, rocce, qualunque altro scenario ...) non sarebbero visibili da una tale distanza. Quindi mi piace la tecnica render to skybox, e quando arrivo a questo bridge, è così che lo attraverserò; e mi assicurerò di usare il LOD per tutti i modelli, semplicemente non renderò tale distanza.
Sono, comunque, pensando più alle linee di un gioco di Oblivion, quindi la risposta potrebbe dipendere dal genere di gioco.
Penso che il tuo punto di vista del campo visivo sia leggermente poco preciso. FOV di solito si riferisce all'angolo della "macchina fotografica" che stai guardando attraverso.Il punto in cui si tagliano oggetti lontani è noto come "Piano di ritaglio lontano" –
@NeilN, hai ragione; Modificheremo la risposta –