Pregunta

Tengo un juego con el infinito terreno generada procedually. Estoy usando el ruido 1 / f para la altura (creo que esto es perlin ruido?). De todos modos se ve bien, pero no es muy jugable, ya que en realidad no tiene áreas planas. Sólo la disminución de la amplitud no funcionará ya que todavía quiero una gran variación en la altura. ¿Alguien sabe de un filtro que se puede aplicar al mapa de elevación para alentar a las zonas planas, manteniendo una gran variedad de alturas?

Escrito en C #

EDIT: Me he dado cuenta de que lo que yo quiero es que se conviertan en fuertes pendientes más pronunciada, y por gradientes planos se aplana. La necesidad del terreno no sea realista, sólo "diversión" para un FPS.

¿Fue útil?

Solución

Creo que es necesario utilizar una función de suavizado para deshacerse de la jaggedness del terreno, si es que parece ser su problema.

Sólo un vistazo a través de esta página, pero puede ser una guía decente: http://www.float4x4.net/index.php/2010/06/generating-realistic-and-playable-terrain-height-maps/

Otros consejos

No estoy seguro si esto ayudaría, pero que podría hacer que el alcance de su función se transforma en una superficie plana con una alta probabilidad. Por ejemplo todos los resultados entre 0,1 y 0,3 tienen una probabilidad del 80% de extremo como una superficie de 0,1. De esta manera usted anima superficies planas pero mantener la alta variabilidad que desea.

ruido simple no es suficiente para generar un buen aspecto del terreno. Es sólo uno de los pasos intermedios de una manera más complicado proceso. Es necesario para simular algunos fenómenos del mundo real: la temperatura, la erosión, la precipitación, ese tipo de cosas. Es un proceso CPU-pesado, por lo general, pero bien vale la pena el esfuerzo. Aquí hay algunos enlaces interesantes:

Mazmorra Liga - leer todos de la misma. Grandes cosas.

Artículos World generación en Las crónicas de Doryen:

(Puede descargar el generador también, pero está escrito en C ++)

Se necesita un "generador aleatorio maestro" que decidirá lo que es una nueva área debe ser similar, con una frecuencia de su elección. Para montañas eligen lo que ya tiene. Pisos elegir menos ruido.

Puede filtrar por filtro de mediana a continuación. se aplanar su superficie. Pero se va a destruir montañas. Esto está bien para áreas relativamente planas como huecos y mesetas. Si quieres montañas afiladas (con rápido y gran altura diff) se debe aplicar este filtro selectivamente.

Debe buscar más materiales ayuda especialmente en las texturas de procedimiento y el ruido. Los tres se relacionan mucho. Usted debe considerar el uso de más de una función de ruido con diferentes parámetros y combinarlos usando diferentes funciones u operadores.

Para ayudar a su caso, puede utilizar una función para generar ruido de alta frecuencia y luego se multiplica por el ruido de baja frecuencia. Esto dará lugar a picos donde el ruido de baja frecuencia está más cerca de 1 y pisos en los que es cercano a 0. Una especie de suavizado / algoritmo de erosión es demasiado frío. Sin embargo, todavía se necesita un montón de ensayo y error y puesta a punto de sus parámetros para obtener por lo menos resultados útiles.

Algunos terains más complejos pueden necesitar más de 10 funciones de ruido con mezcla alfa o alisado y tal. No creo que obtendrá bonito terreno de aplying filtro simple.

Lo que puede hacer para una solución fácil y mirando bien es evaluar la altura que recibe de su mapa de ruido con una función de curva personalizada.

Por ejemplo, puede hacer que sus puntos de mapa de ruido Curva desde 0,1-0,3 a 0,1-0,15 y luego de 0,3-1,0 a 0,15 a 1,0.

De esta manera usted todavía mantiene la rugosidad real del terreno pero que sea más plano.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top