Come rendere voxel dall'aspetto naturale


11

Sto sviluppando un gioco voxel, ma penso di usare la tecnica sbagliata. Attualmente uso piastrelle piatte, per realizzare blocchi, e penso che esista un modo migliore e più efficiente.

Ho visto un gioco di voxel, che ha un terreno dall'aspetto naturale. Con questo intendo non blocchi. Il gioco ha 4 * 4 * 4 blocchi per metro cubo e blocchi come terra, sabbia e pietra, hanno bordi arrotondati e si fondono insieme (come nei giochi ordinari). Ecco uno screenshot inserisci qui la descrizione dell'immagine

Come si ottiene questo risultato?



sai di che gioco si tratta? come puoi essere sicuro che si tratti di voxel? Ok, l'ho trovato da solo, il gioco si chiama Blockscape: indiedb.com/games/blockscape
Babis

C'è un blog su procworld.blogspot.com che contiene ogni sorta di post dettagliati sul blog su come è stato creato il suo motore voxel. I post risalgono a diversi anni da quando il motore era in tenera età fino ad oggi quando è attualmente in licenza per Everquest Next.
stokastic

Risposte:


14

Ciò si ottiene interpolando rampe tra cubi di diversa altezza.

Quando hai uno scenario come questo (visto di lato)

  #
 ####   ##
############

aggiungeresti poligoni per farlo apparire così:

 /#\
/####\ /##\
############

Un algoritmo per calcolare queste rampe è l' algoritmo dei cubi in marcia .

Quando vuoi che sia ancora più bello, non solo usare singoli poligoni per interpolare tra i cubi, usa le curve di più poligoni. Ma tieni presente che aggiungerà molti poligoni alla tua scena, quindi dovresti farlo solo per quei cubi che sono vicini alla videocamera.


Grazie! Conosci un posto che spiega come farlo in OpenGL, libreria di giochi Java leggera? Modifica: E se conosci una buona tecnica su come aggiungere il rilevamento delle collisioni per il terreno in marcia, anche questo sarebbe apprezzato.
KaareZ,

@KaareZ Siamo spiacenti, non ho mai lavorato con LWJGL.
Philipp,

@Philipp potresti essere interessato a questa risposta

1
Oppure puoi saltare del tutto il cubo in marcia e andare al molto più interessante frankpetterson.com/publications/dualcontour/dualcontour.pdf meno complicato puoi anche semplicemente aggiungere la fonction del rumore come offset al vertice del pezzo finale. Hai ancora il blocco ma ora hanno la proprietà delle dolci colline non essendo strettamente allineati nella linea retta atrict ... combinando il doppio contouring e questo per un risultato ancora più interessante (con un modificatore sull'offset del vertice per controllare una generazione più o meno organica) .
user29244

forum.unity3d.com/attachments/captura-jpg.23795 ecco un'immagine di "rolling block" (offset applicato come spostamento verticale) Ecco più foto ma con spostamento applicato su ogni direzione forum.unity3d.com/attachments/t1- jpg.23871 forum.unity3d.com/attachments/t2-jpg.23872 vimeo.com/27976287
user29244

6

Ci sono due ostacoli che devi affrontare per ottenere una qualità simile a quella dell'immagine, la prima è artistica e la seconda è tecnica (memoria, elaborazione). Per prima cosa suppongo che tu abbia già risolto il tuo problema artistico, puoi creare modelli, arte e shader ecc. (In parte perché non posso rispondere a problemi artistici)

Il principale problema tecnico è che quando voelelizzi quei modelli che hai creato con un alto livello di dettaglio, finirai con un numero enorme di piccoli voxel. L'elaborazione e il rendering di un numero enorme di voxel non è banale. La risposta a questo si chiama Sparse Voxel Octrees

SVO ti darà la possibilità di renderizzare modelli altamente dettagliati senza elaborare tutti i voxel, ma solo quelli visibili. Nota che per renderizzare SVO dovrai usare il ray-casting piuttosto che la solita tecnica di rasterizzazione.

Maggiori dettagli su SVO in questo documento

Ecco un'implementazione open source con licenza BSD di SVO https://code.google.com/p/efficient-sparse-voxel-octrees/

Ecco un video che spiega il rendering poligonale vs SVO (pro e contro).


Questo è bellissimo! Inoltre, dai un'occhiata a sauerbraten.org , utilizza una tecnica simile (ma non implementa cubi in marcia, quella parte è lasciata al progettista di livelli)
Kroltan,
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.