Conozco algunos algoritmos para construir un mapa de elevación de un planeta, pero la mayoría de ellos no tienen en cuenta los aspectos subterráneos del planeta (cuevas, túneles, ...).
¿Hay algún algoritmo para encargarse de esto? ¿Se usan solo después de que se haya creado un mapa de elevación inicial o podrían usarse conjuntamente para crear una red de cuevas/túneles de manera más eficiente?
¡Cualquier puntero a descripciones de algoritmos, encuestas o bibliotecas de trabajo es bienvenido!
Este tipo de cosas se pueden "modificar" muy fácilmente, no hay necesidad de simular el mundo y la erosión, ya que te preocupas más por que las cosas se vean bien.
Hay un ejemplo simple aquí: http://hub.jmonkeyengine.org/forum/topic/how-to-approach-random-cubic-cave-generation/
Algoritmo básico:
- comience con un punto aleatorio y un radio aleatorio utilizando algún factor de escala.
- calcular un número aleatorio de ramas de una longitud aleatoria y un ancho aleatorio en función del factor de escala
- cree puntos al final de esas ramas con un tamaño aleatorio y un factor de escala basado en el factor de escala local
- recurrir a una profundidad máxima
Aquí hay un artículo largo y muy informativo de GPU Gems que habla sobre la generación de terreno de procedimiento:
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch01.html
Los detalles son demasiado largos para incluirlos en esta respuesta, pero la idea principal es que combina diferentes funciones de ruido para generar dinámica y procedimentalmente un terreno como este:
Es posible que pueda usar un autómata celular para simular la formación de cuevas, no en el sentido simple del Juego de la vida de Conway, sino programando el autómata para simular la tierra de densidades variables que se colocan aleatoriamente en una cuadrícula 2D o 3D, fluido, que podría ser agua o magma, y aire.
Estableciendo las reglas correctamente, el agua vendría desde arriba en intervalos y áreas aleatorias y erosionaría la tierra, debilitando cada celda hasta desaparecer, o podría causar la deposición de rocas en espacios vacíos (estalactitas y estalagmitas). Si tuviera una simulación 3D, también podría agregar gravedad, lo que requeriría que el agua siempre se moviera horizontalmente o cuesta abajo, a menos que la tasa de flujo estuviera restringida en algún punto (en cuyo punto podría subir río arriba del bloqueo), o a menos que se calentara lo suficiente. .
La gravedad también podría usarse para determinar los colapsos: si se le pide a la tierra insuficientemente fuerte que abarque una distancia demasiado grande sin soporte, colapsaría.
El magma vendría desde abajo, originándose en un punto caliente, cuya intensidad y posición de calor máximo puede variar con el tiempo, y el magma podría solidificarse para formar roca dura, o hundirse nuevamente para dejar cavidades (dependiendo del tipo de punto caliente y/o o factores aleatorios), y también calentaría el agua, haciéndola subir.
Esto no sería necesariamente rápido de programar, y no sería particularmente rápido de ejecutar, pero si se hace correctamente, podría producir resultados muy realistas.
DonyorM
perror
DonyorM
Chad
perror
trichoplax está en Codidact ahora
Neil Slater
invitar