J'utilise actuellement 3D Perlin Noise pour générer un terrain aléatoire en combinaison avec Marching Cubes.
Mon problème semble résider dans la mise à l'échelle de la fonction de bruit pour obtenir des hauteurs raisonnables sur mon terrain. Si une seule octave est utilisée, tous les points par rapport au bruit sont évidemment interpolés, ce qui donne des données assez lisses. Cependant, pour obtenir des surplombs / grottes / terrain irrégulier, je dois utiliser plusieurs octaves avec des amplitudes variables et / ou mettre à l'échelle les valeurs résultantes à ma hauteur `` max '' que je veux de la carte.
Je manque peut-être quelque chose, mais en utilisant des cubes de marche avec du bruit perlin 3D, j'obtiens régulièrement des morceaux de terrain flottants.
Des idées sur la façon dont je pourrais corriger cela ou s'il y a d'autres fonctions de bruit que je pourrais utiliser pour obtenir des résultats comme je le décris? Je veux des collines / vallées / montagnes / lacs / etc. Pas besoin de bits flottants séparés du reste de la carte. Je crois que c'est un problème similaire à celui de Minecraft quand il a un terrain qui flotte juste dans le ciel de temps en temps lors de sa génération.
Merci pour toute aide, Mythics
la source
il est peut-être trop tard pour répondre, mais je commençais maintenant avec cette chose de génération de terrain voxel, avec Perlin Noise et j'ai trouvé un moyen de créer le terrain sans ces pièces flottantes. Je pense que cela peut vous aider. Donc, pour créer le terrain, je génère d'abord une carte de hauteur que je lis les pixels de cette carte de hauteur. Vient maintenant la partie intéressante, j'ai lu la valeur de "luminosité" (en fait la gamme de gris) de chaque pixel sur cette carte de hauteur et cela me donne la hauteur pour cette partie particulière de la carte, puis pour créer le terrain, je suppose que cette carte de hauteur est mon terrain vu de dessus, donc si la valeur en niveaux de gris d'un pixel (après avoir été mappé sur mon terrain "maxHeight") sur cette carte de hauteur est, disons 30, cela signifie que dans ce point spécifique de mon terrain, je ne générerai que 30 voxels sur l'axe y et cela me donnera un terrain sans parties flottantes. Si vous voulez des grottes et ainsi de suite, vous pouvez appliquer un autre bruit sur l'original (sous la surface) pour créer ces grottes. J'espère que cela fonctionne pour toi.
la source