В настоящее время я использую 3D Perlin Noise для генерации случайной местности в сочетании с марширующими кубами.
Кажется, моя проблема заключается в масштабировании функции шума, чтобы получить разумную высоту в моей местности. Если используется только одна октава, все точки относительно шума, очевидно, интерполируются, что приводит к довольно гладким данным. Однако, чтобы получить выступы / пещеры / неровную местность, я должен использовать несколько октав с разными амплитудами и / или масштабировать полученные значения до моей «максимальной» высоты, которую я хочу получить от карты.
Я мог бы что-то упустить, но, используя марширующие кубы с 3D-шумом перлина, я регулярно получаю плавающие куски ландшафта.
Любые идеи о том, как я мог бы исправить это или есть ли другие шумовые функции, которые я мог бы использовать, чтобы получить результаты, как я описываю? Я хочу холмы / долины / горы / озера / и т.д. Нет необходимости в плавающих битах, отделенных от остальной части карты. Я полагаю, что это та же проблема, что и у Minecraft, когда у него есть местность, которая время от времени всплывает в небе.
Спасибо за любую помощь, Mythics
может быть, уже слишком поздно, чтобы ответить, но я начинал сейчас с создания воксельных ландшафтов, с Perlin Noise, и я нашел способ создать ландшафт без этих плавающих фигур. Я думаю, что это может помочь вам. Итак, чтобы создать ландшафт, я сначала генерирую карту высот, а не считываю пиксели из этой карты высот. Теперь начинается интересная часть, я читаю значение «яркости» (на самом деле это оттенки серого) каждого пикселя на этой карте высот, и это дает мне высоту для этой конкретной части карты, а затем, чтобы создать ландшафт, я предполагаю, что эта карта высот моя местность, видимая сверху, поэтому, если значение пикселя в оттенках серого (после сопоставления с моим ландшафтом maxHeight) на этой карте высот, скажем, 30, это означает, что в этой конкретной точке моей местности я буду генерировать только 30 вокселей по оси Y, и это дает мне местность без плавающих частей. Если вам нужны пещеры и так далее, вы можете применить другой шум к оригиналу (под поверхностью), чтобы создать эти пещеры. Надеюсь, что это работает для вас.
источник