Как сделать ландшафт в unity

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Как я могу сделать чрезвычайно огромные территории в Unity? Кажется, я могу установить ширину и длину для больших значений. Но разрешение карты высот достигает только 4097, а разрешение деталей - только до 4048.

Используйте заранее рассчитанные низкополигональные модели для LoD на дальнем ландшафте, если только вы не возражаете против небольшого расстояния обзора. Кроме того, если вам нужна карта высот местности для далекой местности (например, перемещение NPC или другое моделирование), создайте вариант ландшафта с низким или переменным разрешением, чтобы сохранить его в памяти; не используйте полные данные местности для этого. Это может быть сделано автоматически при загрузке игры, но обычно лучше создать инструмент, который создает эти предварительно сгенерированные данные во время сборки или пакета.

Наконец: чтобы избежать проблем с точностью с плавающей запятой, вам придется перемещать всю сцену каждый раз, когда ваша основная камера перемещается далеко от (0,0f, 0,0f, 0,0f).

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

Вы также можете знать, что начиная с Unity3D ~ 3.0, вы не можете перемещать предметы (читать местности и предметы) слишком далеко (например, +/- 100000 шагов IIRC), так что это повлияет на максимальный размер вашего мира.

В любом случае, я использую это в своей онлайн-игре RPG (за исключением того, что я использую Unity3D только для дизайна уровней, а не для реальной игры).

Просто потому, что мне любопытно, хотели бы вы поделиться какой-нибудь информацией о вашей игре (например, о продвижении, типе, графике, стиле и т. Д.)?

Мы реализовали огромные ландшафты в Unity5, обработав данные SRTM для всей Земли в карты высот для TerrainData объектов с различными уровнями детализации [1]. Есть несколько вещей для рассмотрения:

Сами края карт высот должны перекрываться как минимум на одну выборку, и вам необходимо соответствующим образом расположить свою местность. Terrain.SetNeighbors не будет соединять сетку, только учитывать различные уровни детализации, выполняемые Unity.

Вам обязательно нужно 2 ^ n + 1 выборка высоты на TerrainData объект, в противном случае Unity просто назначит высоту 0 неустановленным частям.

Введение в модуль редактирования ландшафта Unity Landspace Auto Material

LAM - это набор инструментов для редактирования сложных ландшафтов и растений. Он добавляет некоторые функции, которых нет во встроенном редакторе ландшафта Unity. Дается краткое введение в его использование.



Первый - создать ландшафт. После импорта плагина сначала найдите пресет с именем Forest в каталоге Assets / Plugins / LandscapeAutoMaterial / Prefab, создайте ландшафт через GameObject> 3D Object> Terrain из префаба, запустите его, чтобы увидеть эффект, вы найдете По умолчанию вся местность покрыта травой, если она вам не нужна, вы можете удалить ее в представлении Иерархия; на вновь созданном ландшафте мы увидим три скрипта, как показано на рисунке ниже. Два из них будут представлены ниже.


Первый скрипт называется LAMTerrainTool, который в основном используется для установки текстуры поверхности ландшафта. В Inspactor мы можем увидеть информацию о его текстуре. Скрипт может автоматически выбирать подходящие текстуры в соответствии с высотой и уклоном ландшафта, чтобы сформировать настоящую гору и другие сцены.Конечно, мы также можем настроить параметры микширования на панели, чтобы достичь наших собственных удовлетворительных результатов.


С ландшафтом естественно будут добавлены растения.Плагин предоставляет множество моделей деревьев, камней, травы и т. Д., Управляемых скриптом LAMDetailsAutoPainter. С помощью кнопки Paint внизу мы можем раскрашивать выбранные растения на местности и одновременно контролировать их плотность, размер и т. Д. Конечно, вы также можете выполнять соответствующие операции в инструменте MulityFoliage Terrian, который поставляется с Unity, что очень удобно.


Существует также более важный скрипт SetLayerCullDistances, который используется для установки визуального расстояния каждого слоя. Если оно превышает его, оно не будет отображаться. Это очень важно для Grass с большим количеством слоев. Конечно, вы обнаружите, что после настройки нет никакого эффекта (в основном, трава). В это время вам нужно найти материал, используемый моделью, включая параметр DistanteFadeEnd, который можно нормально использовать после настройки.

xakuda 26 дек 2011, 17:21

Для проекта мне понадобилось перенести реальный ландшафт в unity и вот что я нашёл по этому поводу.
Но есть пару проблем. Не смог нормально перевести в raw и в 3d max я тоже нуб.

Вопрос: весь файл в raw переводится нормально а вот кусочек с глюками. Объясните как кадрироваться правильно.

Нам понадобится Google SketchUp
Жмём на выбираем квадрат и жмём захват. И так захватываем нужную область.
Вот что у нас получилось

Экспортируем в 3d max и запекаем heigt map.
Как это сделать выложу позже если понадобится.

Изображение

Вопрос: как объединить 4 меша в одном я не знаю. Поэтому у меня выходит так.

Объясните как объединить в один меш.

Могу написать то что нашёл.

xakuda 02 янв 2012, 15:49

jenqa29 25 янв 2012, 11:59

xakuda писал(а): Для проекта мне понадобилось перенести реальный ландшафт в unity и вот что я нашёл по этому поводу.
Но есть пару проблем. Не смог нормально перевести в raw и в 3d max я тоже нуб.

Вопрос: весь файл в raw переводится нормально а вот кусочек с глюками. Объясните как кадрироваться правильно.

Нам понадобится Google SketchUp
Жмём на выбираем квадрат и жмём захват. И так захватываем нужную область.
Вот что у нас получилось

Экспортируем в 3d max и запекаем heigt map.
Как это сделать выложу позже если понадобится.

Изображение

Вопрос: как объединить 4 меша в одном я не знаю. Поэтому у меня выходит так.

Объясните как объединить в один меш.

Способ классный, но только ограничение одним квадратом никчему =( и надпись поверед by google. В 3д максе никогда не работал, как соединять меши не знаю, но нашел видео

Могу написать то что нашёл.

Действительно ничего конкретного нету, возможно както поможет чтото типо этого?

вообще нашел видео

выглядит интересно, но где взять такие плагины )) хз.

зы. мне нужно какимто образом перевести хотябы этот участок в юнити =)

Изображение

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

jetyb 05 фев 2012, 15:08

Если хотите сделать максимально приближенную к спутниковым данным землю - не советую пользоваться .raw . Перевод высот в этот формат вносит погрешности; если вы используете 8 - битные raw или grayscale bitmap карты, то на хранение высоты каждой точки будет уходить всего 1 байт. Соответственно погрешность составит (yMax - yMin)/255 (yMax и yMin - максимальная и минимальная высоты местности). Причем, как правило, программы при создании .raw используют максимальную разницу высот не по выделенному фрагменту, а по всей загруженной вами области. 16 - битные же raw-ы слабораспространены, и с ними дружит мало программ.
К тому же, если вам нужна карта высот по сетке, отличающейся от имеющихся данных шагом и сдвигом, то данные придется интерполировать. Как именно будут строить новые карты высот сторонние программы, и вообще, возможно ли точное задание карт в них - совершенно непонятно.

Лучше всего из спутниковых данных составить свои карты высот и загрузить их в terrain через terrainData.SetHeights(). Так процесс получения данных будет совершенно прозрачным, и вам не придется вникать в принципы работы сторонних программ.

Сделать это можно так:
Как написано в первом способе, через Google Earth добыть srtm - архив и открыть находящийся там файл через блокнот.
Выглядеть будет дико - 6000 строк, каждая из 6000 чисел. Но принцип хранения данных по виду файла там понять можно.
Соответственно делом техники будет создание читающей оттуда данные и составляющей нужные карты высот программы (лучше это сделать через сторонние приложения, сама unity для этого подходит как отвертка для забивания гвоздей). Сохраните полученный массив данных, в unity напишите свой скрипт, который открывает полученный файл и по нему задает высоты.

jenqa29 25 фев 2012, 11:05

jetyb писал(а): Если хотите сделать максимально приближенную к спутниковым данным землю - не советую пользоваться .raw . Перевод высот в этот формат вносит погрешности; если вы используете 8 - битные raw или grayscale bitmap карты, то на хранение высоты каждой точки будет уходить всего 1 байт. Соответственно погрешность составит (yMax - yMin)/255 (yMax и yMin - максимальная и минимальная высоты местности). Причем, как правило, программы при создании .raw используют максимальную разницу высот не по выделенному фрагменту, а по всей загруженной вами области. 16 - битные же raw-ы слабораспространены, и с ними дружит мало программ.
К тому же, если вам нужна карта высот по сетке, отличающейся от имеющихся данных шагом и сдвигом, то данные придется интерполировать. Как именно будут строить новые карты высот сторонние программы, и вообще, возможно ли точное задание карт в них - совершенно непонятно.

Лучше всего из спутниковых данных составить свои карты высот и загрузить их в terrain через terrainData.SetHeights(). Так процесс получения данных будет совершенно прозрачным, и вам не придется вникать в принципы работы сторонних программ.

Сделать это можно так:
Как написано в первом способе, через Google Earth добыть srtm - архив и открыть находящийся там файл через блокнот.
Выглядеть будет дико - 6000 строк, каждая из 6000 чисел. Но принцип хранения данных по виду файла там понять можно.
Соответственно делом техники будет создание читающей оттуда данные и составляющей нужные карты высот программы (лучше это сделать через сторонние приложения, сама unity для этого подходит как отвертка для забивания гвоздей). Сохраните полученный массив данных, в unity напишите свой скрипт, который открывает полученный файл и по нему задает высоты.

спасибо. ) но вопрос решил через autocad, работает норм

Torus 17 апр 2013, 14:19

Изображение

О вышеизложенных способах не знал ! Лично сам использовал архивы strm (есть на торрентах). Загружал в global_mapper, определял длины сторон нужного куска местности (поскольку расстояния в минутах для широты и долготы получаются разные). Карту высот сохранял в bmp (8 bit). В Photoshop-е менял разрешение (длину х ширину) на адекватное. Кадрировал необходимый кусок. В googleearth находил необходимые координаты - далее делал скрины - сшивал, получал нужный кусок местности соответствующий карте высот. Далее в - Unity дело техники. По глобальной текстуре наносил деревья дороги и т.д и т.п. Ну вобщем,- это кому интересно !,

Sergey Tenditniy про используемые им методы создания своих выдающихся модульных игровых окружений в Unity.

Перевод статьи с портала 80 level


Добрый день, меня зовут Сергей, я родом из Украины, но последние 3 года живу в красивой стране Словении.

Идея


Желание сделать такой городок появилось у меня в прошлом году, когда мы с моей женой путешествовали по Эльзасу во Франции. Это очень красивая область этой страны, с большим количеством живописных городков и местечек. Я был в восторге от красоты и уникального стиля, которые там меня окружали.

Именно тогда меня посетила идея сделать что-то подобное в виртуальной среде, ведь если люди с удовольствием посещают такие места в реальности, то и виртуальное путешествие будет кому- то интересно.

Основной моей задачей было правильно передать атмосферу и настроение, возникающие, когда человек попадает в такую обстановку: яркие цвета, изогнутые формы. Нужно было даже усилить возникающие ощущения, используя мультипликационный стиль при создании окружения такого городка.


Также мне было интересно попытаться создать что-то в новом для меня стиле, так как ранее я создавал более реалистичные модели. Хотелось понять, что я смогу сделать, работая в стиле мультфильма.


Сначала я не предполагал продавать этот проект на площадке Unity Asset Store. Чуть позже я пришел к выводу, что правильнее будет создать целостное игровое окружение, а не просто сцену для красивого рендера. Мне хочется чтобы люди могли использовать созданное мной в своих собственных проектах.

Основные фото–референсы, сделанные мной во Франции:


Моделинг

Первые скриншоты по ходу этапов работы:


Основные этапы рабочего процесса:

1. В самом начале, после экспериментального подбора разных вариантов, я создал только первые два домика. Когда получились нужные формы и изгибы, я расположил эти домики на карте с простым освещением – мне хотелось увидеть, как они смотрятся вместе, это нужно было для планирования композиции будущего городка.

2. Далее я добавил имеющимся домикам больше деталей и создал несколько новых.

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

4. Добавлен окончательный набор растительности. Проведена чистовая проработка детализации домиков. Настроено освещение и пост-процессинг. Уже практически готов финальный вид части моего городка. Это послужило мне стилевым и цветовым референсом при проработке остальных улиц и ассетов.

Для этого проекта я решил создать часть домиков на основе одного меша, не используя модульности их структуры. А вторую часть домиков я сделал полностью модульными, чтобы их можно было сложить из отдельных составных частей. Такой подход нужен был из-за того, что я выставил этот городок на продажу, и хотелось чтобы, покупатели имели выбор – пользоваться уже готовыми моделями или собрать их из модульных составных частей (двери, окна, стены и т.п.)


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

На рисунке вы видите, как он выглядит, и из каких элементов собран:


Все элементы:



Поликаунт:



Создаем ассеты

Этот процесс одновременно прост и сложен. Но это важнейшая часть нашей работы. Основная задача – найти как можно больше референсов, всегда легче воссоздать что-либо уже существующее в реальном мире, просто используйте свое воображение и креативность и соберите всё воедино.


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

Растительность


Растительность создавалась очень просто. Ничего нового:

1. Первым делом я создал высокополигональный лист.

2. Использовал запекание нормалей и прозрачность.

3. Затем немного изменил его и с помощью клонирования создал всю ветку.

4. Для создания дерева использовал сферы, затем добавил ранее созданные ветки.

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


Для оптимизации всем листьям можно задать одинаковую текстуру. Нужно обеспечить разнообразие цветов использованием vertex color для листьев, сделать их немного более красными или желтыми.

Подобным образом я создал всю растительность, начиная от самой маленькой 3d веточки. Так, можно легко создавать кустарники и даже плющи.


Текстурирование

Я старался обойтись минимумом текстур. Я использовал только текстуры с тайлингом для работы с этим городком (для текстур растительности тайлинг не применялся), при этом не применялось каких либо редких или уникальных изображений.

Были использованы пять основных текстур для создания окружения: бетон, древесина, металл, черепица и листва.

Эти 5 текстур использованы на 95% поверхности того, что вы перед собой видите. Также я использовал текстуры в градациях серого для возможности добавления цвета с использованием vertex color в Unity, всё разнообразие цветов, грязь и потертости древесины я добавил, используя функционал vertex color texture blending с использованием vertex alpha. Я использовал специальный шейдер, созданный в Shader forge, он дал мне возможность смешения с использованием vertex alpha и одновременно overlay vertex color поверх текстур с использованием градаций серого.


На этом изображении вы видите, что я использовал только 4 материала для оформления домиков (древесина, бетон, черепица, стекло), но так, как я использовал vertex color – композиция выглядит интересной и достаточно разнообразной. Один цвет на изображении это один материал в игре.


Все разнообразие цвета создано с использованием vertex color, так каждый из этих домов в сцене может иметь уникальное сочетание цветов, одновременно, это очень не требовательно к ресурсам.

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

Этот стильный вид – результат использования полноцветных и насыщенных текстур, изогнутой геометрии объектов и пост-процессинга.

Инструменты

На первых этапах работы я применил vertex color в Maya, чтобы получить базовые цвета для домиков. А в среде Unity использовал инструмент vertex paint tool для добавления цветов. Из всего разнообразия я выбрал free face paint, при этом можно добавлять цвет сразу на весь полигон и это быстрее чем на каждый вертекс по отдельности. Если у Вас есть шейдер поддерживающий vertex color или смешение текстур, то можно прямо в сцене Unity очень быстро изменить общий вид ваших ассетов.

Вы можете посмотреть, как я это реализовал на этих изображениях:



Освещение

Моя задача была передать ощущение солнечного летнего дня. При этом городок также хорошо смотрится при лунном свете ночи. Может быть однажды я реализую ночную версию со звездами на небе и желтым светом открытых окон.

Я использовал только real-time направленный свет в этой сцене. Для всего непрямого освещения использовались стандартные средства Unity.

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

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

Также нужно наметить разделение заднего плана от переднего используя стандартный туман Unity. Ощущение солнечного дня создает контраст между затененными и освещенными зонами.

Все остальное сделано с помощью пост-эффектов.

Пост-процессинг

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

И могу сказать что самое значительное влияние оказывает обыкновенный Color Grading, все остальные эффекты по сравнению с ним не так явно видны и поэтому, если потребуется оптимизация их можно отключить.

Заключение

В общем, я могу сказать, что такой подход вполне приемлем для игрового продакшн процесса. Так, как использование текстур с тайлингом и vertex color позволяет реализовывать большие пространства игрового окружения с привлечением относительно небольших ресурсов.

С соответствующей настройкой уровня детализации (LOD) можно получить большое количество элементов детализации переднего плана, а также упростить их для использования на заднем плане. Основные малоразмерные элементы в нашем проекте это растительность, но учитывая то, что при ее создании мы использовали один материал и она состоит из плоских элементов, то правильное использование static batching в Unity сэкономит нам миллионы используемых тут полигонов.

Я не могу точно указать количество часов, потраченное на создание этого окружения, так как занимался им в свободное время после полного рабочего дня. Но, я думаю это более 200 часов в процессе работы от идеи до готового проекта окружения.

Ландшафт в unity смотреть последние обновления за сегодня на YouPlay.

Уроки Unity / Как сделать ландшафт (terrain)

Уроки Unity / Как сделать ландшафт (terrain)

Как создать землю в unity 2019-2020

Как создать землю в unity 2019-2020

В этом видео я покажу как создать землю в unity 2019.3 и объясню главные настройки при создании террейна и ландшата в unity.

Создавайте красивые ландшафты в UNITY 2019 - Новые инструменты для создания террейна

Создавайте красивые ландшафты в UNITY 2019 - Новые инструменты для создания террейна

Ландшафт в Unity,terrain in Unity

Ландшафт в Unity,terrain in Unity

Unity terrain. Как создавать ландшафт в unity3d.

Unity terrain. Как создавать ландшафт в unity3d.

Кратко о том, как создавать terrain, изменять его ландшафт и накладывать текстуры.

Основы работы с ландшафтом, с использованием стандартного террейна Юнити и без него. Плагин MeshBrush: 🤍 Сообщество для разработчиков игр: 🤍 В этом видео мы попытаемся сделать красивый и качественный ландшафт в Unity3D. Для этого нам понадобятся плагины и немного смекалки. А ещё желание! Левел дизайн в юнити с нуля. Ландшафт

Unity - Ландшафт в Unity

Unity - Ландшафт в Unity

Terrain в Unity Канал RDragon - Изучение программирования и игр Плейлисты с видео: 🤍

Сотворение мира. Создаём 3D-локацию в Unity. Часть 1. Заготовка ландшафта и рисование текстурами

Сотворение мира. Создаём 3D-локацию в Unity. Часть 1. Заготовка ландшафта и рисование текстурами

Читайте также: