2015-10-23 3 views
1

Хорошо, я работаю над маленькой игрой здесь, на Java, и использую this Simplex Noise generator, который я нашел в Интернете. Проблема, с которой я столкнулся, заключается в следующем: Я генерируя мир моей игры, как так:Преобразование 2D симплекс-шума в 1D?

int width = 100; 
int height = 100; 
world = new int[width * height]; 

SimplexNoise noise = new SimplexNoise(); 
for (int i = 0; i < world.length; i++) { 
    int x = i % width; // what are the coordinates from i ? 
    int y = i/width ; 


    int frequency = 15; 


    float h = (float) noise.noise((float) x/frequency, (float) y/frequency); 

     if (h >= -1 && h <= 0) { 
       world[x + y * width] = 0; // air tile 

     } 
     else if (h > 0 && h <= 1) { 
       world[x + y * width] = 1; // test tile 

     } 

     } 

, которые вполне очевидно, дает мне 2D шум. Конечный результат выглядит следующим образом: look

Насколько я понимаю шум, 2D-шум для игр сверху вниз. Тем, над которым я работаю, это скроллер (например, Terraria, Starbound, Crea и другие). Поэтому мне нужен terragen, чтобы дать мне самый верхний слой местности, google говорит мне, что это 1D-шум, поэтому вот вопрос: как преобразовать этот 2D-шум в ландшафтный 1D-шум?

+0

Вы можете нарисовать изображение того, что хотите? Возможно, вам нужно что-то вроде [1D Perlin Noise]? (https://raw.githubusercontent.com/kaini/noise/master/doc/perlin_1d.png – caulitomaz

+0

Yup, это именно то, что я хотел бы. @caulitomaz – Makerimages

+0

Возможно, вам не нужно преобразовывать его в 1D, просто reimplement 1D Simplex/Perlin noise вместо 2D. Пожалуйста, обратитесь к: http://stackoverflow.com/questions/8798771/perlin-noise-for-1d – caulitomaz

ответ

0

Просто сделайте снимок высоты = 1. Готово :)

Смежные вопросы