Как генерировать случайные континентальные многоугольники в Three. Js? - PullRequest
0 голосов
/ 11 апреля 2020

Я и группа пытаемся создать инструмент создания ландшафта / континента, предназначенный для создателей контента, чтобы использовать его как вдохновение, как более автономную версию представления континента Rimworld в начале worldgen. Это может потенциально использовать семена. Проблема в том, что из-за нашей неопытности с языком у нас возникают серьезные проблемы, когда мы пытаемся найти направление к тому, как заставить вещи работать так, как мы этого хотим. Текущий план состоит в том, чтобы разделить работу на несколько различных частей: земля, океан, окружающий землю, реквизит, появляющийся на земле, и, наконец, вещи в небе и камера. Но я буду держать прицел небольшим - моя работа - работать с землей, чтобы заставить ее генерировать острова или континенты разумной формы.

Вот репо, если вам нужно его увидеть: https://github.com/chaoszeroomega/IslandGenerator

Мы уже создали основу для программы, которая в настоящее время создает плоскую равнину с неровными обрывами из-за проблем, связанных с возможностью успешно связать шум Перлина алгоритм javascript файл для функции, которая должна была его реализовать. В то время как Perlin Noise можно использовать для создания холмов для программы, также существует вопрос об изменении его так, чтобы он применялся к форме массы земли снизу, так как для континента не имеет смысла просто иметь квадратную форму. Я не уверен, как заставить Three JS создавать «случайные формы», которые изгибались бы, как реальные континенты, или в разумном виде случайного распределения, и при этом я не очень хорошо осведомлен о различных алгоритмах или даже о том, как их реализовать. В то время как я пытался реверсировать код из других репозиториев для наших собственных целей, часто бывает довольно непонятно и трудно понять, как что-то на самом деле работает.

Суть проблемы в том, что я не уверен, как генерировать трехмерные многоугольники произвольной формы, используя в качестве основы Three JS. Я понимаю, как создавать фигуры, такие как basi c BoxGeometries, и масштабировать их, но я не знаю, как создавать фигуры с предполагаемым случайным эффектом, а затем применять алгоритм шума Перлина на верхней стороне сгенерированного многоугольника. для того, чтобы моделировать континентальный континентальный массив. Должен ли я просто создать группу сгенерированных геометрий (например, перекрывающиеся круговые многоугольники и прямоугольные призмы angular, чтобы имитировать форму континента), а затем объединить их вместе в один элемент me sh, который затем может иметь алгоритм шума Перлина применяется к верхней грани, чтобы создать холмы? Из-за моей неопытности с языком проблема довольно сильно пугает, потому что я даже не знаю, как начать разбирать проблему и подходить к ней, когда речь идет о реальном программировании, лежащем в ее основе.

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

...