Jump to content

Начало работы в движке 2.19.0.1 - террейн, ландшафт, дороги. Любовь и ненависть.


photo

Recommended Posts

Posted

В очередной раз для разнообразия решил поработать с движком после долгого перерыва. Любовь к чистой картинке из коробки не забыта, уже вышло несколько новых подверсий, что-то даже сделали из старых косяков, поэтому да, самое время освежить навыки и держать себя в курсе. И тут, началось... То из-за чего я его не навижу. Боль и страдания. 

Этот пост создан для того чтобы:

1) Помочь новичкам насколько это возможно и подготовить их к тому что их ждет буквально сразу.

2) Помочь разработчикам понять что они делают не так.

 

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

Открываем лаунчер, к нему вопросов нет. Интерфейс на премию мирового искусства не тянет, но разобраться не составляет труда. Создаем проект, нас встречает стартовая сцена от которой мурашки по коже (ну это для тех кто в теме как этого сложно добиться, а тут сразу мысль - и такое из коробки). Ок. Дальше она нам не нужна, оставляем её для тестов, идем в File, создаем world для основной работы. Теперь нас встречает пустой мир в котором есть только камера, солнце, и что-то ещё. Первым делом нам надо сделать конечно же ландшафт по которому надо будет бродить. Идем в туториал, а так же в видео и вроде ничего сложного. В окошке World Nodes нажимаем ПКМ (да простят меня иностранцы за сокращение), выбираем  Landscape, далее LandscapeTerrain и создаем террейн. И первая затычка. LandscapeLayerMap не двигается, на месте курсора мышки знак перечеркнутый кружочек. Зачем? Ну вот так сделано. В общем, тыкаем где нибудь, обнуляем координаты. Далее в окне World Nodes идем в ObjectLandscapeTerrain, сейчас он сам раскрывается, что уже неплохо, потом в LandscapeLayerMap и нас встречает куцый интерфейс с какими-то настройками и кнопкой редактирования кисти. Настройки интуитивно понятны если вы хоть раз работали с рельефом. Но что делать дальше? Затык. Идем в тутор, а там оказывается надо отредактировать кисть, а для этого создать новый файл с LandscapeLayerMap. Причем создается LandscapeLayerMap в открытой у вас в окне Asset Browser папке. Гениально?! Я конечно всё понимаю, но это я понять не могу. Океей. Идем дальше!

Итак вы создали LandscapeLayerMap, причем каким-то чудом в нужной папке, а не той которая в аналах ресурсов которые вы смотрели до этого и происходит ровно ничего. В окошке Active tool появляются кисти и видимо то что ими можно редактировать. Выдохнули. Выбираем кисть, начинаем рисовать рельеф, попутно думая как же это просто. Немного увлеклись, проходит час, что-то неплохое вырисовывается, но пора бы уже и закрасить это всё. Тыкаем на Albedo и... Ничего? Тыкаем Mask, тоже ничего. ЗАТЫК. Идем в тутор. А оказывается, надо добавить текстуру в маску, чтобы ей можно было рисовать. Ну точно, как просто. Идем в движок... И где её добавлять? Перетыкиваем всё что попадается, смотрим ещё раз тутор, снова перетыкиваем и ничего. А оказывается, добавляется она не в Active tool, и даже не в LandscapeLayerMap, а в ObjectLandscapeTerrain, в окошке Details. Но не просто добавляется, а надо тыкнуть на Mask, тыкнуть на +, потом появится у Mask дочерний объект detail_0, там надо надо задать материал с нужной текстурой, который тоже надо ещё создать! Честно, я аплодировал стоя когда это всё прошел. Таких оваций не срывали даже разработчики первой версии Андроид. Да, и не забудьте открывать нужные папки при создании материала. Здесь я первый раз за день я закрыл движок. 

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

А делать оказалось можно многое, а именно использовать карты высот которые тоже используются как маски. Тут я зауважал ребят. Но если в этот момент вы себе представили невообразимые рельефы за пару кликов мышки и уже в нетерпении рветесь это реализовать, то спокойно. В этом движке спешить нельзя. Итак тыкаем на LandscapeLayerMap, идем в Import Setting что в окне Node, там в Data Filling переключаемся на From Tileset, спускаемся в HeightMap, кидаем карту высот, нажимаем Apply и вот у вас создан рельеф из картинки которую можно сделать в обычном графическом редакторе! Поверили?! Как бы не так. Надо реимпортировать Дату. реимпортируем нажимая после Apply, Reimport Data и... Можете попрощаться со всем что вы рисовали час (или больше) до этого кисточкой, но зато у вас теперь рельеф из карты высот. Гениально?! Определенно да, такой подставы я не ожидал даже от дяди Васи который работал электриком на подстанции. В общем я решил не испытывать судьбу дальше и оставил всё до следующего дня, чего и вам советую ибо нервы ещё будут нужны.

Резюмируя то что выше, можно отметить что если учесть все нюансы, то работа с картами высот оказалось настолько простой что я простил всё что выше испытал, главное почаще создавайте резервные копии LandscapeLayerMap. Правда, у меня решило отключиться автоматическое сглаживание, а без него карта высот из формата того же png, это рельеф из Египетских пирамид, но как оказалось сглаживание кисточкой работает просто на ура. Кроме того, основной рельеф можно задать картой высот, а допиливать его кисточкой и вместе всё это прекрасно работает. Добавление новых кисточек так же понятно интуитивно и позволяет использовать любую текстуру в проекте. Широкие настройки так же приятно порадовали. Спокойно сделал кисточку размером 10*10 км и всё это не обрабатывалось 1 час за один клик. Так же можно создать ещё один LandscapeLayerMap и работать с ним отдельно от первого. В общем и целом, система относительная простая но при этом весьма мощная в рамках игрового движка. До тех пор, пока вы не начнете текстурирование...

 

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

Текстурирование как уже стало понятно происходит через маски. Можно рисовать всё кисточкой, но лучше автоматизировать процесс, тем более что в туториале что-то невероятное и снова из коробки. Это я так думал раньше, потому что если вы не хотите кисточкой раскрашивать сто тысяч квадратных километров рельефа, то без переключения на карты высот не обойтись. Это я так тоже думал раньше насмотревшись туториалов. Переключились, сразу изменились маски и в них появились какие-то новые свойства. Круто думаете вы, но раньше все работало, сейчас я расставлю материалы по маскам и у меня будет красивенький ландшафт. Ставите и... Ничего не происходит. Затык.

Идете в тутор, а там надо поставить текстуры в какие Albedo, в самых масках у конкретно LandscapeLayerMap. Что-то там покрутить и бац, марсианский рельеф по которому хочется самому пройтись. Идете в движок, делаете тоже самое и либо ничего не получается, либо получается одна текстура на весь рельеф. Между тем в видео этому уделено 10 минут времени. Сейчас я опишу последовательность действий на новом LandscapeLayerMap. Вы оцените:

1) Задаем в ObjectLandscapeTerrain в окне Detail в Mask_0 в свойстве Default value 1.

2) Заходим в дочерний Mask detail_0 в свойствах Mask By Height разброс по высоте Min Visidility и Max Visidility.

3) Повторить необходимое количество раз

Собственно всё. За смешиванием идем в карты высот, но как это работает всё ещё не ясно.

 

Деревья.

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

Расставляются через Mesh Clutter. Каждый раз надо добавлять материалы мешу ибо вообще расставляются не деревья, а сам .mesh. Вы оцените это когда придется добавить 10 материалов. Но зато работает и по маскам которые тоже работают, но криво. Тут нельзя просто задать текстуру как в рельефе, а надо создать отдельную текстуру с разрешением, ктобымогподумать .texture. Причем надо указать из какой текстуры создать эту и в итоге создается просто черная текстура. Гениально? Гениально. Так как это какой-то .texture, то ни один редактор не понимает что это. Заявленные разработчиками чуть ли не бесконечные ландшафты втыкаются в Mesh Clutter с максимальным размером в 10 км, на который кисть корректно работает с размером в 5км и .texture с максимальным разрешением в 8к. Но всё это упрется в 0 ФПС когда вы посадите 100 деревьев, которые из коробки. Более того, из-за несоответствия размеров всего этого, при работе кистью, вы будете проводить по одному месту, а добавляться/убираться деревья будут в другом. Впрочем после рельефа, это так, детские шалости.

Алгоритм использования. Создать Mesh Clutter > добавить материалы > убрать количество деревьев до стабильного пульса ФПС видеокарты > настроить размер > создать тектуру в "Brush Edit" > создать новую кисть с маской как надо расставить деревья > увеличить её до размеров террейна > помолиться> нарисовать деревья на .texture. Повторить до приемлемого результата.

Альтернатива - рисовать все ручками кисточкой. Впрочем в любом случае убирать деревья надо будет кисточкой.

 

Дороги.

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

  • Like 2
Posted

Николай, спасибо за фидбек! :)

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

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

Спасибо ещё раз!

  • Like 1

How to submit a good bug report
---
FTP server for test scenes and user uploads:

×
×
  • Create New...