Каков «правильный» способ объединения диаграмм Вороного с шумом Перлина для генерации текстуры? - PullRequest
1 голос
/ 27 марта 2019

Я работаю над проектом, посвящённым процессуальной генерации рельефа. В настоящее время у меня есть 2 отдельные части, одна из которых генерирует мою диаграмму Вороного, а другая касается генерации всей местности. Ландшафт в настоящее время генерируется кусками, так как он слишком большой, чтобы создаваться сам по себе. Полигоны, которые генерируются моими алгоритмами Вороного, близки по размеру к фрагменту рельефа местности. Я хочу, чтобы для каждого полигона генерировался отдельный блок, так как я хочу, чтобы значения Perlin Noise определяли сгенерированные полигоны. В текущем имплементации мои куски Terrain имеют форму квадрата, поэтому я не могу вставить в них многоугольник. Как бы вы это сделали?

Сначала я пытался привести свою текстуру в форму многоугольника, но текстуры в единстве имеют ширину и высоту, так что это точно не сработало. Я также подумал о том, чтобы разделить каждый кусок Terrain на набор полигонов с одинаковыми свойствами, которые бы образовывали квадрат, что разрушает всю цель использования Вороного.

Я был бы рад включить мой код, но я не думаю, что в этом случае он является частично ценным.

Как примечание: моя реализация Вороного возвращает список объектов многоугольника с соответствующими угловыми точками, ребрами, центроидами и т. Д.

Заранее спасибо:)

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Большую часть времени, когда я видел алгоритмы Вороного при генерации ландшафта, они применяются к текстуре во время выполнения.Затем к этой текстуре можно добавить / умножить другие типы шума, чтобы создать карту высот для вашей процедурной местности.

Если у вас уже есть алгоритм Вороного, генерирующий геометрию, одним из вариантов является создание шейдера для вашей местности.это дискретизирует шум Перлина в координатах мирового пространства (таким образом, вы не столкнетесь с какими-либо проблемами с мозаикой в ​​вашей многоугольной сетке).Если шум должен использоваться в качестве карты высот, тесселяция может увеличить разрешение вашей сетки.Однако, если вы не использовали шейдеры до того, как вы сможете быстрее увидеть результаты, используя текстурный подход.И было бы бессмысленно делать половину шума местности в шейдере, если вы делаете другую половину в C #.

Поскольку эта тема может быть довольно широкой, я очень рекомендуюВидео Себастьяна Лиги о рельефе местности.https://www.youtube.com/watch?v=wbpMiKiSKm8&list=PLFt_AvWsXl0eBW2EiBtl_sxmDtSgZBxB3

0 голосов
/ 27 марта 2019

Почему вы хотите, чтобы ваши плитки местности были многоугольной формы?Если я правильно понимаю, вы не хотите, чтобы ваши плитки местности были квадратами, а полигоны, созданные с помощью алгоритма вороного.Никто не делает это на самом деле.Плитки ландшафта - это всегда квадраты, которые создаются и удаляются на основе виртуальной сетки и позиции игрока.

...