Могу ли я использовать реализацию трехмерного симплексного шума для создания шума на сферической поверхности?

Скажем, я хочу создать шум над сферой.

Я хочу сделать это, чтобы процедурно создать трехмерные «капли». И используйте эти капли для создания низкополигональных деревьев, примерно так:

введите описание изображения здесь

Могу ли я сделать это следующим образом?

  • Сначала определите сферу, которая состоит из определенного количества вершин, каждая из которых определяется известными координатами (x, y, z).
  • Затем сгенерируйте дополнительное значение энтропии (или шума) e следующим образом:

    var e = simplex.noise3d (x, y, z)

  • затем используйте скалярное умножение для смещения или выдавливания исходной точки в трехмерное пространство по значению энтропии e :

    point.position.multiplyScalar (e)

  • Затем, наконец, реконструируйте новую сетку из этих вновь вычисленных точек смещения.

Могу ли я определить сферу, состоящую из определенного количества вершин, каждая из которых определяется известными координатами (x, y, z), а затем сгенерировать значение энтропии или шума

Я рассматриваю этот подход, потому что он широко используется для создания сеток ландшафта с использованием двумерного шума на двухмерной плоскости, что приводит к трехмерной плоскости:

пример двумерного шума

Глядя на примеры, я понимаю эту концепцию генерации ландшафта с использованием двумерного шума следующим образом:

  • Вы определяете двумерную сетку точек, по сути, плоскость. Таким образом, каждая точка имеет две известные координаты и определяется в трехмерном пространстве как (X, Y = 0, Z). В этом случае Y представляет собой высоту, которая будет вычислена генератором шума.

  • Вы передаете координаты X и Z каждой точки в сетке в генератор симплексного шума, который возвращает значение шума Y.

    var point.y = simplex.noise2d (x, z);

  • Теперь наша сетка точек смещена по оси Y нашего трехмерного пространства, и мы можем создать из них естественно выглядящую сетку ландшафта.

Могу ли я использовать тот же подход для создания шума на сферической поверхности с помощью трехмерного шума. Это вообще хорошая идея? А есть способ попроще?

Я реализую это в WebGL и Three.js.


person matthiasdv    schedule 07.06.2015    source источник
comment
У меня есть пример смещения вершины шума Перлина, его можно увидеть ЗДЕСЬ. Другие эксперименты, которые я провел с шейдерами, можно найти ЗДЕСЬ   -  person 2pha    schedule 08.06.2015


Ответы (1)


Если вы хотите, чтобы что-то выглядело как дерево, вы должны использовать алгоритм роста дерева, чтобы сначала смоделировать шаблон ветвления дерева, а затем сделать поли внешнюю поверхность дерева. У разных типов деревьев есть так называемые «привычки» или хиральные паттерны, определяющие их рост. Одна статья, в которой описаны некоторые основные уравнения для моделирования выращивания ветвей / листьев:

http://www.math.washington.edu/~morrow/mcm/16647.pdf

person Tyler Durden    schedule 08.06.2015
comment
Мне удалось создать случайную геометрию, которую можно использовать для навесов. Этого должно хватить для низкополигональных приложений. Тем не менее, спасибо за бумажную ссылку, которая поможет сгенерировать ветки. - person matthiasdv; 09.06.2015