Je développe un jeu de voxel, mais je pense que j'utilise la mauvaise technique. J'utilise actuellement des tuiles plates, pour faire des blocs, et je pense qu'il y a un moyen meilleur et plus efficace.
J'ai vu un jeu de voxels, qui a un terrain d'apparence naturelle. J'entends par là sans blocs. Le jeu a 4 * 4 * 4 blocs par mètre cube, et des blocs comme la saleté, le sable et la pierre, ont des bords arrondis et fondent ensemble (comme dans les jeux ordinaires). Voici une capture d'écran
Comment y parvient-on?
Réponses:
Ceci est réalisé en interpolant des rampes entre des cubes de hauteur différente.
Lorsque vous avez un paysage comme celui-ci (vu de côté)
vous ajouteriez des polygones pour que cela ressemble à ceci:
Un algorithme pour calculer ces rampes est l' algorithme des cubes de marche .
Lorsque vous voulez qu'il soit encore plus beau, n'utilisez pas seulement des polygones simples pour interpoler entre les cubes, utilisez des courbes de plusieurs polygones. Mais gardez à l'esprit que cela ajoutera beaucoup de polygones à votre scène, vous ne devez donc le faire que pour les cubes proches de la caméra.
la source
Il y a deux obstacles à surmonter pour obtenir une qualité similaire à celle de l'image, le premier est artistique et le second technique (mémoire, traitement). Je suppose d'abord que vous avez déjà résolu votre problème artistique, vous pouvez faire les modèles, l'art et les shaders, etc. (en partie parce que je ne peux pas répondre aux problèmes artistiques)
Le problème technique majeur est que lors de la voxélisation de ces modèles que vous avez créés avec un niveau de détail élevé, vous vous retrouverez avec un grand nombre de minuscules voxels. Le traitement et le rendu d'un grand nombre de voxels n'est pas anodin. La réponse à cela s'appelle Sparse Voxel Octrees
SVO vous donnera la possibilité de rendre des modèles très détaillés sans traiter tous les voxels, mais seulement ceux visibles. Notez que pour rendre le SVO, vous devrez utiliser le lancer de rayons plutôt que la technique de tramage habituelle.
Plus de détails sur SVO dans cet article
Voici un open-source avec mise en œuvre de la licence BSD de SVO https://code.google.com/p/efficient-sparse-voxel-octrees/
Voici une vidéo qui explique le rendu basé sur polygone vs SVO (avantages et inconvénients).
la source