Terrain basé sur une carte d'altitude avec une route

12

Quelle est la meilleure façon de mettre en œuvre une fonction de détail, comme une route, sur un terrain basé sur une carte d'altitude?

entrez la description de l'image ici

Mise à jour: C'est un peu difficile à voir dans l'image, mais la route descend du haut de la carrière pour faire sa base.

Adam Kane
la source

Réponses:

14

Ce qui est génial avec les images, c'est qu'elles intègrent généralement jusqu'à 4 canaux (rouge, vert, bleu et alpha). Comme une carte de hauteur n'a besoin que d'une dimension, vous pouvez simplement utiliser le canal rouge pour stocker les informations de hauteur (vous avez toujours 256 niveaux pour la hauteur), puis utiliser d'autres canaux à d'autres fins (comme utiliser le canal vert pour cartographier les routes , canal bleu pour eau / humidité) etc ...

De cette façon, vous pouvez vous assurer que lorsque vous construisez votre terrain, les zones où une route doit être construite apparaîtront plates au lieu de suivre le gradient de hauteur.

XGouchet
la source
1
Est-il possible d'utiliser une image HDRI, afin que les nombres flottants puissent être utilisés pour stocker des informations de hauteur plus précises?
Quazi Irfan
1
L'image HDRI n'est pas un format de fichier mais un concept, mais oui, vous pouvez utiliser des formats de fichier spécifiques pour permettre plus de précision. Cela dépendra principalement de votre matériel / logiciel, mais il existe une image flottante RG que vous pouvez stocker sur 32 ou 64 bits. Mais quel que soit le format, si vous utilisez plus de bits par canal, vous pouvez toujours convertir les valeurs int en nombre à virgule flottante comme ceci: f = (v / 256.0) où f est votre flottant, v la valeur int actuelle
XGouchet
Est-ce une bonne idée de stocker tous les objets statiques d'une carte sur une carte (en hauteur)? comme la végétation, le feuillage, la maison? ou des pointeurs sur lesquels un autre objet sera placé? ou une autre façon existe?
Quazi Irfan
Je ne stockerais pas l'emplacement exact, mais peut-être juste une information sur la densité, puis je générerais les données (végétation, maison, etc.) à partir des informations sur la densité. Mais le meilleur moyen est de placer ces objets à la main et de les enregistrer à l'aide d'un fichier de données binaires ou d'un fichier de description xml
XGouchet
1
@iamcreasy, bien sûr, vous pouvez utiliser la carte de hauteur pour que votre maison touche le sol, mais vous devez décrire à quoi ressemble le modèle de la maison (murs, portes, meubles à l'intérieur), qui ne peut pas être décrit en pixels. De plus, les informations sur les pixels ne vous donneront pas une orientation précise, donc vos maisons seront toutes alignées (ce qui ne semblera pas naturel ou "joli").
XGouchet
1

La façon dont je le fais est de séparer le heightmap (j'utilise des flotteurs par exemple, 513 * 513) et le splatmap (le "control-texture") qui a souvent besoin d'une plus grande résolution (j'utilise 32 bits bmps, 512x512).

La carte de hauteur crée le maillage (le terrain, les triangles).

La carte de contrôle s'étend sur tout le terrain et chacune de ses couches (RGBA) indique à quel point Stone, Dirt, Road etc. devraient être visibles sur le terrain.

De cette façon, vous pouvez utiliser un éditeur pour a) créer le terrain et b) peindre le terrain (avec Rock, Dirt, Road etc.)

Faites une brève analyse sur «Peinture heightmap», «heightmap splatmap» et autres pour une explication plus approfondie ou téléchargez par exemple Unity3D pour voir comment cela pourrait fonctionner dans la «réalité».

Valmond
la source