Какова цель использования 4D OpenSimplex Noise вместо 2D Perlin Noise для создания циклического шума?

Пока я изучал способы создания циклического генеративного художественного GIF, я столкнулся с двумя разными способами создания шумовых петель.

  1. Пример кода Этьена Джейкоба в его tutorial использует 4D OpenSimplex Noise следующим образом.

    (float)noise.eval(scl * x, scl * y, R * cos(TWO_PI * t), R * sin(TWO_PI * t));

  2. Пример кода Даниэля Шиффмана в его руководстве использует 2D-шум Перлина следующим образом.

    шум(cos(a) + 1, sin(a) + 1);

Работа Голана Левина

Я понимаю, что оба достигают цикла, идя по кругу в шумовом пространстве, как показано выше. Но разница между ними мне непонятна. Какова цель выбора 4D OpenSimplex вместо 2D Perlin Noise для создания циклического шума?


person W268    schedule 02.01.2021    source источник


Ответы (1)


2D-шум может дать 1D-петлю. 4D-шум может дать либо 2D-плоскость, которая зацикливается в обоих направлениях (другой пример), либо незацикленную 2D-плоскость с зацикленной осью времени (этот пример). По сути, для создания одного зацикливающегося измерения требуется два незацикленных измерения.

В примере с 4D создается зацикленная линия 1D в каждой точке (x, y) изображения, но разница в том, что вы можете изменять эти (x, y) для создания 2D-изображения, которое само анимируется с течением времени. С зацикленной линией, созданной 2D-шумом, у вас есть только сама эта линия. (x, y) исходят из двух дополнительных измерений 4D-шума.

Кроме того, Перлин показывает много смещений на 45 и 90 градусов. В этом отношении Simplex намного лучше, и я разработал OpenSimplex, чтобы удовлетворить и это. Perlin отлично работает для зацикливания 1D-линии, но если вы используете 2D-шум для получения 2D-результата, вы увидите это смещение.

Однако я предлагаю вам теперь использовать OpenSimplex2 вместо OpenSimplex (бессовестный плагин), потому что он должен быть более однородным по пространству. особ. OpenSimplex2S, который является прямой заменой OpenSimplex 2014 года.

person KdotJPG    schedule 03.01.2021
comment
Спасибо за очень четкий ответ. Таким образом, 4D-шум может дать либо модель в форме сферы, которая зацикливается в обоих направлениях на своей поверхности, либо модель в форме пончика, которая имеет петлевое поперечное сечение 1D, которое также зацикливается, перемещаясь по кольцу (времени). Правильно ли я понимаю? - person W268; 03.01.2021
comment
Технически тот, который зацикливается в обоих направлениях, имеет форму тора (бублика), просто четырехмерный тор, в котором отсутствуют искажения, которые вы получаете от преобразования трехмерного тора в квадрат. Шум зацикливания 2D+time больше похож на бесконечный цилиндр, но со второй копией бесконечного направления, так что вы можете создать паттерн 2D-цикла вместо одномерного. - person KdotJPG; 03.01.2021
comment
Чтобы покрыть сферу шумом, все, что вам нужно, это трехмерный шум, чтобы отобразить каждую точку на сфере. - person KdotJPG; 03.01.2021