Domanda

Sono riuscito a implementare l'algoritmo dei cubi in marcia in C#. Fino ad ora ho provato l'algoritmo per rendere una sfera. È facile perché la funzione di densità non è molto complessa da codificare.

Ma ora voglio convincere l'algoritmo per andare oltre e rendere alcuni terreni interessanti per i giochi. Quindi avrei bisogno di funzioni di densità adeguate per questo compito. La prima cosa che mi viene alla testa è un rumore volumetrico di Perlin. Va bene, ma sto cercando un terreno senza forme convesse, intendo, senza grotte e geometrie simili al momento.

Ok, so che per questo una semplice mappa di altezza può fare il lavoro, ma voglio un terreno generato dal voxel. Che tipo di funzione di densità o pseudocodice avrei bisogno di implementarli?

È stato utile?

Soluzione

Puoi facilmente convertire una mappa di altezza in terreno voxel. Ogni pixel nella tua mamap di altezza corrisponde a una colonna di voxel nel tuo mondo voxel. Per un determinato pixel nella mappa di altezza leggi l'altezza. Quindi iterare su ciascun voxel nella colonna corrispondente e impostarlo su "solido" se è inferiore all'altezza di riferimento o "vuota" se è più dell'altezza di riferimento.

Ecco alcuni codice di esempio usando il Polivox biblioteca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top