2016-10-16 13 views
0

У меня есть алгоритм шума perlin и алгоритм opensimplex шума, который возвращает double, основанный на значениях X и Y. Я разработки программного обеспечения, и я хотел бы знать, как:Make Perlin Noise Scaleable

  • Отмасштабируйте Перлин шума с 0-1 двойным значением
  • позволяют строить Перлин в различных разрешениях (т.е. 1024, 2048), но по-прежнему поддерживать масштаб, но добавьте дополнительные детали.
  • Разрешить пользователю изменять размер мира, который также влияет на шкале

Мой текущий код для этого:

double scale = ((((Double) parameters.get(SCALE).getValue() * 10) + 0.25) * ProjectSettings.WORLD_SIZE)/((double) resolution/1000); 
double x = 0; 
double y = 0; 
OpenSimplexNoise noise = new OpenSimplexNoise((Long) parameters.get(SEED).getValue()); 
for(int n = 0; n < resolution; n++) { 
    x += scale; 
    for(int m = 0; m < resolution; m++) { 
     y += scale; 
     values[n][m] = noise.generateOpenSimplexNoise(x, y, (Double) parameters.get(PERSISTENCE).getValue(), (Integer) parameters.get(OCTAVES).getValue()); 
    } 
} 

ответ

-1

Если вы хотите изменить разрешение шума изображения Перлин, изменить высоту и с значениями в ваших циклах. Для масштабирования вам необходимо умножить первый и/или второй аргументы метода шума Perlin на некоторую переменную, которая изменяется, когда вам нужно масштабировать. Значение времени может быть хорошо подходит для этого. См. Пример кода ниже.

time += 0.01; 
// Change height and width values to change resolution 
for(int y = 0; y < height; y++){ 
    for(int x = 0; x < width; x++){ 
     double dx = (double) x/MainWindow.height; 
     double dy = (double) y/MainWindow.height; 

     // Perlin noise method call 
     // In order to scale, you have to multiply current values 
     // by time or other variable, which change would cause the zoom. 
     double noise = noise(dx * time, dy * time); 
    } 
} 

Эти серии учебники могут помочь вам достичь вашей цели:

https://www.youtube.com/playlist?list=PLA2Wxg-e7vbA1LC15uXM0s8p5Nhse_rNn.

В конце учебника 3 вы можете сделать масштаб и переместить анимацию. Вы можете пропустить второй учебник, если вы не хотите изучать механизм шума Perlin. Я надеюсь, что это помогает.