Actualmente estoy tratando de generar un Minecraft como el terreno voxel con 3D Simplex Noise y también quiero implementar cuevas.
Encontré el método de Perlin Worms en este hilo, que genera resultados realmente agradables. Sin embargo, no tengo idea de cómo generarlo por partes. ¿Es esto posible o hay alguna alternativa que produzca un gusano similar como la cueva trozo a trozo?
Editar: Este es el problema que no sé cómo resolver.
Edit2: este es el resultado de combinar el ruido multidractal ondulado 2D con un mapa de altura de ruido simplex. Todavía necesita algunos ajustes, pero este es más o menos el resultado que quería. Gracias a Byte56.
terrain
minecraft-modding
voxels
perlin-noise
user000user
fuente
fuente
Respuestas:
La mayoría de los algoritmos de ruido perlin le permitirán recuperar el valor de ruido en cualquier ubicación dada, con algo así
noise(x,y,z)
. Esto hace que sea bastante trivial generar ruido parte por parte. Todo lo que necesita hacer es pasar la posición global, en lugar de la posición fragmentaria.Como puede ver, estamos generando terreno para el fragmento, iterando sobre los límites del fragmento y verificando si esa posición global es sólida o no. Esta es probablemente la misma metodología que está utilizando para generar el terreno en general.
perlinNoise.get
toma una posición global y devuelve su densidad. ¿DóndeisSolid
sería una simple prueba para ver si el vóxel es "lo suficientemente denso" para calificar para sólido?perlinNoise.get
puede ser más complejo que un simple algoritmo de ruido. Puede tener controles basados en la profundidad del vóxel en su mundo. Por ejemplo, si el vóxel está por debajo de lo que ha decidido que es "nivel de suelo base absoluto", entonces puede usar el algoritmo de gusanos perlin para devolver una densidad, si está por encima de la base absoluta, puede usar una función de densidad normal para proporcionarle Terreno más variado. Sin embargo, recomendaría algunas mezclas entre los dos.Combinar diferentes funciones de ruido Perlin es algo con lo que tienes que jugar y ver qué funciona. Es mejor configurar su entorno para que pueda cambiar algunos valores e intercambiar en caliente el terreno sin necesidad de volver a cargar su juego. Feliz experimentando.
fuente
Creo que así es como funciona en Minecraft. Cada gusano tiene una longitud máxima (llamémoslo
M
). Las cabezas de cada gusano se calculan en función de la posición del fragmento. Cuando renderiza cada fragmento, debe verificar todos los fragmentos dentro de unM
radio y seguir a todos sus gusanos. No es ideal en términos de rendimiento, pero funciona.fuente