OpenSimplex Значительно выше уровень детализации
Я новичок в мире поколения и алгоритмах, которые используются для них, поэтому я надеюсь, что кто-то может дать мне несколько полезных объяснений или код, или оба, или ссылки на некоторые ресурсы, которые я пропустил при поиске решения.
Как я могу получить более высокий уровень детализации с OpenSimplexNoise?
Я знаю, что в некоторых алгоритмах, таких как PerlinNoise, это можно сделать с частотой и сложением кратных октав. Итак, как я могу достичь такой цели с OpenSimplexNoise?
Вот что я уже получил:
private static final int WIDTH = 512;
private static final int HEIGHT = 512;
private static final double FEATURE_SIZE = 64;
public static void main(String[] args)
throws IOException {
OpenSimplexNoise noise = new OpenSimplexNoise(1233313l);
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_INDEXED);
for (int y = 0; y < HEIGHT; y++)
{
for (int x = 0; x < WIDTH; x++)
{
double value = noise.eval(x / FEATURE_SIZE, y / FEATURE_SIZE);
int rgb = 0x010101 * (int)((value + 1) * 127.5);
image.setRGB(x, y, rgb);
}
}
ImageIO.write(image, "png", new File("noise1.bmp"));
}
И как мне добиться этого, чтобы получить более ровные результаты для лесов и т. Д.
1 ответ
OpenSimplexNoise не предоставляет непосредственно описанную вами функциональность, поэтому вам придется предоставить ее самостоятельно. В основном вы неоднократно генерируете слой шума и добавляете его к конечному результату. Более конкретно:
- Количество октав контролируется количеством циклов.
- Амплитуда слоя контролируется путем умножения значений данного слоя на некоторое количество. Амплитуда обычно получается из октавного числа; Наиболее распространенным примером является использование
1/(2^n)
гдеn
это номер текущей октавы. - Частоту можно контролировать, регулируя интервал выборки. Что касается OpenSimplexNoise, вы можете сделать это, умножив
x y z
параметры на некоторое количество. Опять же, это, как правило, происходит от октавного числа, и наиболее распространенный пример mutliple2^n
,
Настройка количества октав, значений амплитуды и частоты - это больше искусство, чем наука, и она сильно зависит от вашей ситуации. Немного поэкспериментируйте и изучите, что другие использовали, чтобы найти то, что подходит для вашего проекта. Я получаю хорошие результаты, используя 6 октав со стандартной амплитудой и частотой, описанной выше.