2016-03-11 3 views
0

Итак, я пытаюсь создать простой динамический бесконечный ландшафт с использованием симплексного шума. До сих пор у меня был шум, который работал очень хорошо - однако у меня проблемы с рельефом, имеющим разрывы по краям. Сначала я подумал, что это связано с тем, что я не вызывал SetNeighbors на объектах Terrain, но добавление этого не улучшило.Unity Terrain Stitching Gaps

terrain.GetComponent<Terrain>().SetNeighbors(left, top, right, bottom); 

Эта проблема, как представляется, обусловлена ​​небольшими различиями в высоте между каждой позиции местности - но сделать это установить то же самое будет влиять на качество ландшафта (уменьшит, как зазубренный ландшафт может быть в некоторых случаях) и в целом кажется неэлегантным. Я просматриваю документы единства, пытаясь найти, как это решать, но еще ничего не найти.

Есть ли что-то, что мне не хватает? Или мой единственный вариант, чтобы поиграть с высотами на одной из сторон, чтобы соответствовать другой?

Спасибо, что прочитали, оценили как всегда.

Terrain image for reference

+0

Общее решение состоит в том, чтобы получить функцию шума, которая дает одинаковые высоты для одних и тех же позиций - тогда ребра сетчаты естественно без каких-либо ручных изменений. Как вы упомянули, ручное затухание будет выглядеть очень плохо и создать заметные швы. Я предлагаю искать (лучше?) Уроки/ресурсы для создания ландшафта, чтобы найти тот, который может создать бесконечный ландшафт. – 31eee384

ответ

1

пару вещей:

Во-первых, убедитесь, что вы устанавливаете SetNeighbors() на все объекты местности, а не только один.

Во-вторых, если ландшафт не совпадает точно, это означает, что ландшафты не правильно вычисляют свои данные или происходит некоторая ошибка с плавающей запятой. Тем не менее, у меня есть подозрение, что это первый, учитывая, что ручное изменение точек влияет на качество. Убедитесь, что вы знаете, что у ландшафтов есть n^2 + 1 балл, а также убедитесь, что точка запроса от вашей симплексной функции с вычисляется в мировом пространстве.

Если вы не можете понять это, отправьте свой код, и я посмотрю.

Кроме того, ваш ландшафт может выглядеть лучше, если вы использовали шумный (a.k.a facta) шум на вашей функции симплекс-шума, в зависимости от того, что вы ищете.

Cheers!

+1

Спасибо за ваш вклад, мне удалось исправить его, как только я определил ошибку. Масштабирующий знаменатель был установлен слишком высоким, что привело к незначительному сдвигу и противоречивым мировым координатам. Теперь я попробую октавный шум, спасибо! –

+0

привет @SamHolder .. рад, что он был исправлен, это действительно важно для TICK любой полезный ответ. это единственный способ удержать доску в чистоте, и для себя избегать умеренности. Люди вкладывают много времени, чтобы ответить. Они хотят, чтобы доски SO поддерживались в порядке. Беспорядок означает, что мы все не можем задавать вопросы, спасибо – Fattie