Скажем, я хочу создать шум над сферой.
Я хочу сделать это, чтобы процедурно создать трехмерные «капли». И используйте эти капли для создания низкополигональных деревьев, примерно так:
Могу ли я сделать это следующим образом?
- Сначала определите сферу, которая состоит из определенного количества вершин, каждая из которых определяется известными координатами (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.