Эта статья включает список ссылок , связанных материалов или внешних ссылок , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Октябрь 2024 ) |
Шум моделирования — это функция , которая создает векторное поле без дивергенции . Этот сигнал может использоваться в художественных симуляциях с целью повышения восприятия дополнительных деталей.
Функцию можно вычислить в трех измерениях, разделив пространство на регулярную решетчатую сетку. С каждым краем связано случайное значение, указывающее вращательный компонент материала, вращающегося вокруг края. Следуя за вращением материала в стороны и из сторон, можно быстро суммировать поток, проходящий через каждую грань решетки. Значения потока на гранях решетки затем интерполируются для создания значения поля для всех позиций.
Шум Перлина — самая ранняя форма решеточного шума, которая стала очень популярной в компьютерной графике . Шум Перлина не подходит для моделирования, поскольку он не является свободным от расхождений.
Шумы на основе решеток, такие как шум моделирования и шум Перлина, часто вычисляются на разных частотах и суммируются для формирования фрактальных сигналов с ограниченной полосой пропускания .
Другие подходы, разработанные позже, используют тождества векторного исчисления для создания полей, свободных от расхождения, такие как «Curl-Noise», предложенный Робертом Бридсоном, и «Divergence-Free Noise» Ивана ДеВольфа. Они часто требуют расчета градиентов шума решетки, которые иногда не всегда доступны. Наивная реализация вызывала бы функцию шума решетки несколько раз для расчета ее градиента, что приводило бы к большему объему вычислений, чем строго необходимо. В отличие от этих шумов, шум моделирования имеет геометрическое обоснование в дополнение к своим математическим свойствам. Он имитирует вихри, рассеянные в пространстве, для создания своей приятной эстетики.
Векторные поля создаются следующим образом: для каждой точки (x,y,z) в пространстве создается векторное поле G , каждый компонент x, y и z векторного поля (Gx, Gy, Gz) определяется трехмерной функцией шума Перлина или симплекса с параметрами x, y и z. Частная производная Gx, Gy и Gz по x, y и z получается с градиентом шума Перлина или симплекса с помощью конечных разностей неявного вычисления внутри симплексного шума.
Частные производные используются для вычисления F как ротора G, заданного формулой
Этот метод основан на том факте, что ротор градиента скалярного поля равен нулю, и тождество, которое раскрывает дивергенцию векторного произведения двух векторов A и B как разность скалярных произведений каждого вектора с ротором другого:
что означает, что если ротор обоих векторных полей равен нулю, то дивергенция произведения двух векторов, которые являются градиентами скалярных полей, также равна нулю. Это приводит к векторному полю без дивергенции по построению, вызывающему только две шумовые функции для создания скалярных полей.
Векторное поле создается следующим образом: вычисляются два скалярных поля и используются трехмерные функции Перлина или симплексные шумовые функции, затем вычисляются градиенты A и B каждого из этих полей, перекрестное произведение A и B дает векторное поле, свободное от дивергенции.
Вектор поля создается на основе замкнутой и дифференцируемой неявной поверхности S = F (x,y,z) = 0. Для каждой точки пространства, часто снаружи или вблизи поверхности, мы получаем вектор g , который нормален к поверхности, это градиент S или частные производные по x, y и z, этот вектор не является унитарным, но мы можем получить унитарную нормаль n, разделив каждую компоненту точки на величину градиента g . Вне поверхности все эти нормали направлены от поверхности.
После этого мы вычисляем скалярное значение p для этой точки пространства, используя 3D-функцию Перлина или симплексную функцию шума. Теперь мы создаем векторное поле V = p n , направленное наружу поверхности. Ротор этого векторного поля задает направление в каждой точке пространства, куда должны двигаться частицы.
По построению этот вектор SDN будет указывать в касательном направлении к изоповерхности на уровне знакового расстояния до исходной поверхности и может использоваться для ограничения движений частиц, чтобы они оставались на этой поверхности.