Recentemente ho iniziato a sviluppare il motore voxel. Quello di cui ho bisogno sono solo voxel colorati senza texture, ma in quantità molto grandi (molto più piccoli di Minecraft) - e la domanda è come disegnare la scena molto velocemente? Sto usando C#/xna ma questo a mio parere non è molto importante in questo caso, parliamo di casi generali. Guarda questi due giochi:Voxel Engine and Optimization
Soprattutto penso che il video numero 2 rappresenta grandi metodi di ottimizzazione (la mia carta di GFX inizia soffocamento solo a 192 x 192 x 64) Come sono stati raggiunti Questo?
cosa avrei avere nel motore:
- voxel colorati senza texture, ma ombreggiato
- molti, molti voxel, dire minima 512 x 512 x 128 per ottenere qualcosa di simile a video # 2
- ombre (ombre lisce sarà grande, ma questo non è necessario)
- opzionale: dinamico illuminazione (ad esempio da palle di fuoco volanti, che illuminano in prossimità di strutture voxel)
- framerate minimo 40 FPS
- telecamera avere 3 modi di libertà (movimento in asse x, spostare in asse y, muoversi in asse z), nessuna rotazione fotocamera è necessario un
- funzione infine opzionale può essere Profondità campo (sarà dolce ^^)
Cosa ottimizzazione ho già sanno:
- rimuovere voxel invisibili che risiede all'interno della struttura voxel (coperto fr om sei direzioni da altri voxel)
- rimuovere volti invisibili di voxel - a causa della fotocamera non hanno rotazione e sempre guardare di traverso in avanti come nei giochi TPP, quindi se dividiamo schermo da taglio verticale, voxel sinistra e voxel destra mostrerà solo 3 facce
- mantieni voxel nel dizionario invece che nell'array tridimensionale: saltare attraverso l'array di dimensioni 512 x 512 x 128 richiede millisecondi che è inaccettabile - ma dizionario int: colore dove int descrive impacchettato posizione 3D è molto più veloce
- utilizzare l'istanza dove applciable
- occlusione? (Come fare questo?)
- spazio di divisione/octtree (è buona idea?)
sarò molto grato se qualcuno mi dia un consiglio come migliorare esistenti ottimizzazioni elencati sopra o può condividere idee di nuovi miglioramenti. Grazie
Si noti che entrambi i video mostrano motori che non sembrano supportare la rotazione. Inoltre, il secondo video sta probabilmente usando i tabelloni per gli oggetti fuori fuoco piuttosto che gli oggetti voxel. – Skizz