Как сделать космос в ue4

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Автор: Александр Блинцов. Специализируется на Unreal Engine. В Pixonic является клиентским разработчиком и отвечает за разработку и поддержку технической стороны нового сетевого мобильного шутера.

Четвертая версия движка вышла в 2014 году и распространялась по подписке за $19 в месяц. Но уже через год Epic Games сделала его бесплатным, после чего Unreal Engine 4 начали использовать не только студии, но и инди-разработчики.

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

Стоит обратить внимание на демки из лаунчера Epic Games (вкладка Learn/Изучить). Там можно найти очень много проектов на разные темы. Причём это практически полноценные прототипы игр, с логикой и графикой.

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

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

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

Может показаться, что редактор перегружен функционалом, но в этом и плюс: всё необходимое находится в одном месте. Хотя создавать хороший контент (модели, звуки, текстуры и т.д.) всё равно придётся в сторонних программах.

Зато в UE4 есть инструменты для прототипирования, благодаря которым можно собрать билд игры вообще без использования других программ. Например, с помощью Brush’ей можно смоделировать базовый мир и предметы. А уже потом поменять их на более качественные или оставить как есть, если стилистика проекта позволяет.

В Unreal Engine 4 есть Blueprints — специальный инструмент визуального программирования. Он позволяет строить логику игры с помощью блок-схем из нод. Инструмент достаточно наглядный, простой и интересный в работе. Например, оба скрипта на скриншотах ниже создают мигающую лампочку.

С блюпринтами работать намного легче, потому что в них невозможно допустить синтаксическую ошибку — подать неправильный тип данных или забыть поставить нужный знак. Ещё блюпринты защищают от вылетов программы. Например, если в С++ попытаться получить доступ к несуществующему объекту, игра вылетит, а в блюпринтах просто появится ошибка в логе.

Звучит слишком хорошо, чтобы быть правдой. Подвох в том, что несмотря на низкий порог входа и наглядность, блюпринты — полноценный инструмент объектно-ориентированного программирования (ООП).

В итоге игру можно написать только на блюпринтах (причём не только одиночную, но и сетевую) и во многих случаях разницы в производительности не будет. Хотя зависит от самой игры.

В Unity, кстати, тоже есть аналогичный инструмент. Он называется Playmaker, но стоит 45 долларов.

Предположим, у вас уже готов прототип игрового мира и механика геймплея. Теперь нужно импортировать модели и настроить материалы к ним, чтобы всё выглядело как нужно. Мы обойдёмся готовыми ассетами.

Движок поддерживает .fbx и .obj форматы 3D-моделей, а также все популярные форматы текстур. Импортировать их достаточно просто — можно даже закинуть всё в папку с проектом, и импорт произойдёт автоматически.

Ещё важно настроить материалы, то есть шейдеры. Обычно они пишутся кодом в других программах, но в Unreal Engine 4 и на этот случай есть визуальный инструментарий, который позволяет описать инструкции шейдера нодами. Может показаться запутанным, но на самом деле для простых материалов присоединить нужные текстуры и получить реалистичный вид не так сложно.

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



LevelStream реализует супер-большую бесшовную карту-обучение официальных документов

The Level Streaming feature makes it possible to load and unload map files into memory as well as toggle their visibility all during play. This makes it possible to have worlds broken up into smaller chunks so that only the relevant parts of the world are taking up resources and being rendered at any point. If done properly, this allows for the creation of very large, seamless levels that can make the player feel as if they are playing within a world that dwarfs them in size.

    Обзор Активация функции комбинации мира Уровень отношения Комбинация уровней
      Этаж Маленькая карта Взаимодействие с пользовательским интерфейсом и подсказки
      Настройки плитки Настройки LOD
      Импортировать тайловый ландшафт

    World Composition has been designed to simplify managing large worlds. One of the goals is to avoid using a persistent level to store streaming information as it becomes a bottleneck when a team of level designers want to work on levels simultaneously. The persistent level does not store any streaming information and instead scans a folder and treats all found levels as streaming levels. Each streaming level has information stored in the package header, which World Composition can read without loading the level into memory. Initially, all levels except the persistent level are unloaded in World Composition. You can load or unload any part of the world manually at any time.

    World Composition relies on a world origin shifting feature which, when used with distance based level streaming, allows you to create worlds which are not limited to the WORLD_MAX constant value hard-coded into the engine.

    Состав мира ( World Composition ) Опираясь на исходные передаточные характеристики мира, при использовании потока уровней на основе расстояния, вы можете создать мировой максимум, не ограниченный набором движков. WORLD_MAX Постоянная эта постоянная.

    World Composition managed worlds can be activated by switching on Enable World Composition flag in World Settings .

    You can also disable world origin shifting by switching off Enable World Origin Rebasing flag in World Settings .

    Конечно, вы также можете снять флажокEnable World Origin RebasingЛогическое значение, чтобы не использовать мировые примитивные характеристики передачи 。




    (1) Проверить При включении World Composition, Система автоматически просканирует папку, в которой находится большая карта. Если в папке, где расположена большая карта, есть другие карты, система предложит





    Уровни Уровень иерархии

    After you have activated World Composition, all the levels in your project will be visible in the Levels window. To open this window, click on the Windows menu, and then select Levels .

    The entries in the Levels window represent your world hierarchy.

    Когда вы активируете команду комбинации миров, вы можете увидеть все карточки в вашем проекте на панели уровней (английский: уровень). Панель уровней можно открыть так



    в Контрольно-пропускной пункт Окно вход От вашего имени Иерархия мира 。





    The level with its name in blue text is the current level. Currently loaded levels will have their names in white text, while levels that are unloaded have grayed-out names.

    To load a level in the world composition, just double-click its name. Using drag-and-drop, you can establish relationships between individual levels. Child levels store position relative to the parent level, so when you change the parent level’s position all child levels will recalculate their position accordingly.

    In the Levels window, you can lock and save levels, as well as open the Level Blueprint for each level, with buttons to the right of the level name.

    Синий уровень в окне - текущий уровень. Имя загруженного в данный момент уровня (на рисунке: SmallMap1) - белого цвета, а имя выгруженного уровня (на рисунке: SmallMap2) - серого.

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

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



    Обратите внимание: как только вы загрузите карту, вы увидите, что многие свойства постоянного уровня изменились:







    Состав уровней Состав уровней:

    When Enable World Composition is on, there is a button to open World Composition at the top of the Levels window .

    Если установлен флажок "Включить композицию мира", окно композиции мира можно открыть с помощью следующей кнопки.



    Here, you can see the layout of your world.

    Здесь вы можете увидеть план вашего мира



    By default, all levels are assigned to an Uncategorized layer. Layers hold information about streaming distances, so levels assigned to a particular layer will inherit that streaming distance. Levels assigned to a layer with streaming distance disabled will be excluded from distance streaming, and can instead be controlled using Blueprints.

    You can create new layers by clicking the + button to the right of the existing layer names. Each level can only be assigned to one layer at a time.

    Layers can not be deleted or edited, so if you would like to change streaming distance settings, create a new layer with your desired settings and assign levels to it. Layers which have no assigned levels will be deleted automatically the next time you open a level.

    You can filter your levels by layer by clicking on the layer name above the minimap. You can toggle multiple layers by using Control+Mouse Click . When there are no layers toggled on, no filtering is performed.

    По умолчанию все уровни присвоены без категории ( Uncategorized ) Этот слой. Каждый слой сохраняет информацию о расстоянии потока уровня , Таким образом, уровень, назначенный определенному слою, унаследует информацию о расстоянии потока уровня. Слой распределения Потоковое Удаленно Отключить Будет исключен из расстояние течь Уровень , И может контроль Используемый чертеж . Назначение слоя, на котором отключено расстояние потока по уровню, устранит влияние расстояния потока по уровню, и им можно будет управлять с помощью чертежа.

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

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

    Вы можете фильтровать уровни по слоям, щелкнув название слоя на мини-карте. Вы можете переключать несколько слоев одним щелчком Ctrl + Mouse. Когда нет открытых слоев, фильтрация отсутствует.

    Миникарта

    Each level except the persistent level has an image and position in the world, which are displayed in the minimap. The image of the level is updated every time content in the level is changed. This map allows you to preview your world from the top and arrange the position of levels by dragging them. When dragging levels, they will snap to the edges of other levels. Holding the Control key will cause the level movement to use the Level Editor’s snapping settings. Note that level position is stored as integer coordinates, so for exact matching of adjacent level tiles, your levels must have integer bounds sizes.

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







    Levels based on Landscape Actors have snapping based on the base landscape component size. This is done to enable seamless editing between Landscape Actors in different levels.

    на основе Landscape Actors Край уровня объекта ландшафта основан на ландшафте родительского класса. Размер компонента ландшафта. Это сделано для того, чтобы обеспечить возможность редактирования между различными объектами ландшафта и уровнями ландшафта.

    All Landscape Actors will have tranformations disabled in the Editor Viewport to ensure that the landscape can not be moved by an arbitrary amount and lose its ability to be aligned with other landscape levels.

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

    The first time a level is loaded in World Composition , a new Level Bounds Actor is automatically created in the level. The Level Bounds Actor is used to calculate the size of the level.

    By default, the Level Bounds Actor automatically resizes to include all Actors found in the level. However, some Actors, like skyboxes, can have very large bounding boxes, which will result in overly large level tiles in the world minimap. If you have Actors like this that you do not want to include in the level bounds calculations, you can disable automatic level bounds calculations and set a fixed size for the Level Bounds Actor.

    Уровень загружается в Мировая композиция Время, новый объект под названием Level Bounds Actor Будет автоматически создан на этом уровне. Пограничные объекты КПП ( Level Bounds Actor) Объект используется для расчета размера уровня, его можно искать в схеме мира!

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





    Currently, realtime must be enabled in the viewports for the Level Bounds Actor to function.

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

    The minimap has a yellow square indicating the safe edit area. The safe edit area’s size is equal to the WORLD_MAX contant in the engine. Levels outside of this area will be hidden automatically, and their level images will reflect this. World Composition tries to keep levels you are working on close to the Editor world origin. This feature is called “focusing” and may shift the current world origin to a new position if you begin editing a level outside of the safe edit area. Shifted levels still preserve their Actors’ original transformations when they are saved, so saving a level that is currently shifted will not change the Actors’ absolute positions.

    Изучения игрового движка Unreal Engine 4 с нуля – задача не из простых. Разбираемся, на чем следует сосредоточиться в первую очередь.

    🎮 Разработка игр Unreal Engine 4: 10 советов начинающим

    Движок Unreal Engine 4 – довольно сложная программа для создания игр, кинематографических сред и визуализаций. Несмотря на обилие документации, руководств и туториалов, новичку не всегда ясно, с чего начать ее изучение. Разберемся, на каких моментах следует сосредоточиться в первую очередь.

    1. Установите UE 4

    🎮 Разработка игр Unreal Engine 4: 10 советов начинающим

    Для правильной загрузки и установки Unreal Engine 4 следуйте инструкциям, описанным в этом руководстве , предварительно убедившись, что оборудование компьютера соответствует спецификациям.

    Рекомендуемая конфигурация:

    • Настольный ПК или Mac;
    • Операционная система: Windows 7 64-bit или Mac OS X 10.9.2 и выше;
    • Процессор: Intel или AMD с тактовой частотой 2.5 ГГц и выше
    • Видеокарта: NVIDIA GeForce 470 GTX или AMD Radeon 6870 HD и более производительные:
    • Оперативная память: 8 ГБ.

    Минимальные требования гораздо ниже благодаря гибкой настройке графики.

    Другие доступные платформы: Linux, iOS и Android. Имеется встроенная поддержка VR для Oculus Rift, поддержка Xbox One и PlayStation 4.

    2. Определите цель изучения движка

    Определитесь, что вы хотите сделать при помощи игрового движка. Для чего собираетесь изучить UE4? Вариантов использования масса, но наиболее популярные желания новичков выделить нетрудно:

    • Создать игру;
    • Заняться архитектурной визуализацией;
    • Заняться разработкой игрового окружения;
    • Создать игровые уровни;
    • Заняться анимацией и кинематографией.

    Хвататься за все сразу – плохая практика. В начале пути стоит выбрать единственный вариант, погрузиться в него с головой, чтобы изучить все досконально.

    3. Составьте план проекта (опишите этапы создания игры в UE4)

    🎮 Разработка игр Unreal Engine 4: 10 советов начинающим

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

    1. Разработка основной идеи. Сюжет.
    2. Концепт-арт: визуальный стиль игры (рисунки, цифровая живопись, фотоотсылки).
    3. Концепция игрового процесса: как будет проходить игра, игровая механика.
    4. Создание прототипа игрового процесса (Blueprint или C++): простая программа с интегрированной базовой механикой и элементами-заполнителями.
    5. Доработка механики (создателю всегда есть что добавить).
    6. Создание трехмерной статической сетки (3D-модели, UV-развертка, текстурирование, материалы, экспорт и импорт).
    7. Работа с анимацией и эффектами.
    8. Дизайн уровней (прототипирование BSP, скрипты, ИИ, игровое тестирование, детализация, освещение).
    9. Оптимизация и производительность.
    10. Упаковка и релиз.

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

    4. Определите этапы создания среды в UE4

    Теперь давайте рассмотрим, что нужно для создания пользовательской трехмерной игровой среды с помощью Unreal Engine 4:

    1. Создание 3D-модели: высокополигональная и низкополигональная сетки.
    2. Оптимизация текстур.
    3. Создание LOD (уровня детализации).
    4. Разработка собственных коллизий.
    5. Экспорт пакета 3D-моделирования.
    6. Импорт статических мешей ( базовых единиц, используемых для создания геометрии мира).
    7. Экспорт и импорт всех текстур и материалов в UE4.
    8. Разукрашивание текстур.
    9. Создание прототипа.
    10. Настройка Blueprint для игровой механики (при необходимости).

    5. Изучите основные понятия и операции

    Чтобы приступить к разработке первого проекта, вам необходимо освоить базовые вещи:

    1. Работу с навигацией в окне просмотра.
    2. Использование Content Browser.
    3. Работу с объектами и статическими сетками.
    4. Использование BSP для блокировки макета уровня.
    5. Вставку и использование источников света (направленный свет, прожекторы, точечные светильники).
    6. Управление сценой.
    7. Работу с Lightmass Importance Volume, Player Start, Fog.
    8. Масштаб и пропорции.
    9. Тестирование из редактора.

    Изучите основные понятия (термины):

    1. Мир – список загружаемых в игру уровней.
    2. Уровень – определяемая пользователем зона игровых действий.
    3. Объекты – базовые строительные блоки Unreal Engine. Через них реализована вся функциональность движка.
    4. Актер – любой Объект, помещенный на уровень и поддерживающий 3D-преобразования (перемещение, вращение, масштабирование).
    5. Пешка – подкласс Актеров, управляемых игроком или искусственным интеллектом (ИИ).
    6. Персонаж – подкласс Пешек, управляемых игроком.
    7. Классы описывают поведение и свойства конкретных Объектов и Актеров, используемых в игре.
    8. Компоненты – добавляемая Актеру функциональность.

    6. Главное – режим!

    🎮 Разработка игр Unreal Engine 4: 10 советов начинающим

    Подберите, удобный для себя, подход к изучению движка. Для начала достаточно часа в день. Вы можете постепенно наращивать темп, но час – это минимум. Если вы хотите добиться результатов, занимайтесь усердно в одно и то же время. В этом деле очень важна система!

    Важно: Ключом к изучению любого игрового движка (особенно UE4) является установка добровольных ограничений. Не переусердствуйте со временем занятий и объемом материала, чтобы не перегореть на старте!

    7. Начните с малого

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

    8. Изучите шаблоны

    При разработке первого проекта на Unreal Engine 4 обязательно используйте один из встроенных игровых шаблонов. Это не просто примеры, а скорее концептуальные решения – на их основе строится логика вашего приложения. Стоит изучить каждый из примеров досконально, не боясь что-то испортить. Вы можете его сломать, загрузить и сломать снова, пока не поймете суть происходящего.

    9. Освойте Blueprint

    🎮 Разработка игр Unreal Engine 4: 10 советов начинающим

    Blueprint – это язык визуальных сценариев внутри UE4. Он сделает всю работу за вас и подключит настраиваемое поведение к проекту. Это означает, что можно создать скрипт для большей части игрового процесса и игровой механики внутри редактора без необходимости писать и компилировать код на C++. Можно создать игру, используя только Blueprint.

    Изучите базовые функции Blueprint для создания интерактивных элементов игрового процесса:

    • Перемещение платформ;
    • Открытие и закрытие дверей;
    • Включение и выключение света;
    • Причина и следствие (взаимодействие с предметами в игре);
    • Активация определенных событий или действий при загрузке уровня или при появлении игрока;
    • Добавление взаимодействия с помощью кнопки или текста на экране.

    Blueprint чрезвычайно эффективен, поэтому его необходимо изучить всем начинающим разработчикам и геймдизайнерам. Если вы хотите стать художником по игровому окружению, дополнительно потребуется пакет 3D-моделирования (Maya LT, Maya, 3dsMax, Modo, Blender). Дизайнеру уровней, программисту или художнику по текстурам он не особо нужен.

    10. Используйте интернет-ресурсы для обучения

    В процессе изучения Unreal Engine 4 у вас наверняка возникнут вопросы. Ответы на них можно искать не только в документации:

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

    На Unreal Engine 4 сделаны многие современные игры, поэтому движок однозначно рекомендован к изучению всем интересующимся геймдевом. На самостоятельное освоение всех его возможностей потребуются не один год, но есть и более короткий путь. Обратите внимание на курс факультета разработки игр на Unreal Engine 4 образовательной онлайн-платформы GeekBrains. Вы освоите сам движок, научитесь программировать на Blueprints и C++ и сможете самостоятельно создавать игры с нуля. Занятия ведут эксперты-разработчики российских технологических компаний, а успешно окончившие курс студенты получат диплом о профессиональной переподготовке, несколько проектов в портфолио и помощь в трудоустройстве.

    Как создавать материалы, растительность и настраивать освещение.

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

    После этого я загрузил карту высот в Landscape Editor в Unreal Engine 4 и создал материал ландшафта. Он довольно простой — всего три разных материала, соединённых с помощью масок. Кое-где я вручную добавил снег.

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

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

    Я выбрал плотность текселей в 1024 на 100 сантиметров, чтобы текстуры вблизи выглядели хорошо. После этого я использовал плагин TexTools для 3ds Max. Он быстрый, качественный и бесплатный. И в нём есть много классных фич вроде копирования коэффициента текселей с других объектов, автоматической установки групп сглаживания с UV-оболочек и так далее.

    Материал для крыши я сделал в Substance Designer, затем добавил на неё рёбра. Я создал четыре разных деформированных участка, импортировал их в UE4 и распределил по крыше для лучшей производительности.

    Детали

    Одной из моих задач было обойтись без запечённых текстур. В этой сцене запечены только текстуры стекла и двери. Для всех объектов я создал три простых основных материала: один для обычных предметов, второй для вертексной краски, третий для растений.

    На окнах используются два материала — цельное дерево и запечённое стекло (излучение и карта шероховатости/металлического отлива).

    Растения

    В этой сцене было важно создать реалистичную растительность. Для этого я воспользовался Quixel Megascans.

    Вот процесс создания травы.

    Создайте плоскость и поместите на неё непрозрачную текстуру травы. Я использовал плоскость 200×200 сантиметров с сегментами 10×10.

    Затем отделите каждую часть атласа.

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

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

    Вот основной материал для растений.

    Так что не забывайте разрабатывать уровни детализации. Для травы я сделал два уровня детализации, уменьшил их в Simplygon на 15%. Для распределения травы я пользовался инструментом Foliage. Он довольно простой.

    Материалы

    Материалы я сделал в Substance Designer. Люблю эту программу.

    Вот схема материала скалы.

    На землю я нанёс цельную текстуру мёртвой травы от Megascans.

    Карта высот штукатурки была сделана в ZBrush. Потом я смешал карты высот в Substance Designer и получил разные текстуры для использования в UE4.

    Освещение

    Освещение очень важно: хороший моделлинг можно испортить плохим светом, но хороший свет может вытянуть плохой моделлинг.

    В этой сцене я использовал полностью динамический свет и тени, и он работает в Full HD при 60 кадрах в секунду на моей GTX 970.

    Свет из окон — точечный. Для естественного света я использовал Exponential height fog и карту HDRi. Это позволило создать желаемую атмосферу. Вот как это влияет на сцену.

    Также я добавил направленный свет на небесную сферу с помощью Blueprint. Это позволяет мне создать солнечный свет.

    Вот несколько полезных настроек света.

    И не стоит забывать о постобработке.

    Вот как она влияет на сцену.

    Камера

    Я делаю скриншоты в UE4 с помощью CineCamera, потому что у неё есть много настроек вроде фокусного расстояния, глубины резкости и апертуры — прямо как у настоящей камеры.

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

    Иногда для заполнения больших пространств можно пользоваться автоматическим созданием материалов. В Unreal Engine 4 есть такая функция: помогает расставить траву, деревья и камни в зависимости от поверхности. В моей сцене этого не потребовалось.

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

    Работайте увлечённо и не останавливайтесь. Становитесь лучше с каждым новым проектом. Закончив одну работу, принимайтесь за другую, потому что нет предела совершенству. И не забывайте об освещении.

    Создание реалистичных горных сцен в UE4

    Меня зовут Майкл Ди Лонардо, я начинающий художник окружения из Канады. Окончил факультет графического дизайна и в основном работал в мультимедиа: в публичных местах, автомобильных выставках, концертах, иммерсивных шоу и т.д. В последнее время меня больше всего интересует дизайн окружения. Я нигде не учился этому, и изучал все, что только мог, самостоятельно, через онлайн ресурсы. С Unreal Engine 4 познакомился всего несколько месяцев назад. К счастью, сейчас есть множество различных источников информации, но, тем не менее, даже учитывая, что я уже знаком с некоторыми 3D программами, эта оказалась другим зверем, и у меня взрывался мозг, пока я ее изучал.


    Запуск проекта и использование World Machine

    Как правило, создание проекта начинается с рождения идеи, затем идет поиск вдохновения, может, даже создание подборки картинок для мудборда, и так далее. Но у меня было иначе, так как этот проект не планировался как приоритетный. Будучи новичком в UE4, я хотел просто поэкспериментировать с инструментами скульптурного выдавливания (sculpting tools) для ландшафтов. Они уже были рассмотрены в моем предыдущем проекте, но мне было интересно побольше в них разобраться. Я хотел взять за основу что-то более интересное, чем обычный стандартный ландшафт, поэтому создал базу в World Machine. Забавно, что один из ключевых моментов работы с программами рельефа местности — не лепить рельеф вручную, а я собирался смешать оба способа!

    Для начала я создал окружность в World Machine в качестве макета, чтобы расположить мой террейн.


    Затем использовал функцию Use Breakup , чтобы создать более реалистичную форму. В ней всего 3 параметра, но их достаточно, чтобы сделать макет более интересным.


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


    В завершении добавил ноду Erosion , которая помогла связать все это вместе и подготовить ландшафт к экспорту.


    У меня было несколько нод на выход (Output nodes), поскольку я пробовал еще кое-что. Самое главное, вам необходимо экспортировать файл в RAW16 для карты высот. Более того, я экспортировал 3 отдельных PNG для верхнего, среднего и нижнего слоя высот при помощи нод Select Height , которые облегчат размещение базовых текстурных слоев.


    Здесь изображены все настройки:


    Я добавил несколько гор, чтобы окружить ими сцену.


    Так как я немного экспериментировал, не обращайте внимание на некоторые выходы (outputs). Мне нужно было экспортировать RAW 16 и 2-3 карты высот. Здесь изображены все настройки:




    После перетаскивания материала на ландшафт мне все еще не хватало основной базовой текстуры: снега. Именно здесь и пригодилась нода Select Height в World Machine. Для слоев травы / камней я использовал карты нижней / средней высоты, а для снега — верхнюю карту высоты. Вы можете это сделать, щелкнув правой кнопкой мыши на любом из слоев ландшафта и нажав “импортировать из файла”. Как видите, “линия”, разделяющая снег и горы на более крутых областях, все еще достаточно заметна, но этот момент было легко скорректировать, так как я мог рисовать на слоях и просто смягчил этот переход.



    Процесс скульптурного моделирования

    Скульптурное моделирование было сделано вручную в UE4, так как это и являлось основной целью. Стиль, с которым я работал, однозначно можно было сделать и в World Machine, но сам факт создания его вручную дает возможность что-нибудь еще дорисовать в ходе процесса. К тому же, иногда, во время скульптинга, вам может прийти в голову: “Добавлю-ка я здесь холм, так как озеро делает эту область слишком плоской” и так далее. Почти как в живописи. Поэтому я сделал здесь небольшой пример, чтобы донести основную мысль. Все, что я сделал — возвысил несколько областей при помощи инструментов скульптурного моделирования, чтобы была возможность работать с разными высотами. Затем я использовал инструмент Flatten в самой высокой точке каждой области. Этот инструмент хорош тем, что вы можете немного увеличить силу нажатия, и та область, над которой вы находитесь, либо поднимется, либо же опустится до высоты той точки, где вы удерживаете нажатие. Этот способ очень удобен при создании “ступеней”, что опять же можно выполнить в World Machine, но мне хотелось использовать менее автоматизированный способ и иметь возможность придать объекту любую форму, какую только захочу.


    После выравнивания, вы, вероятно, заметите, что стыки неровные, а переход между травой и камнями — не очень чистый. Поэтому здесь нужно использовать сглаживающий инструмент, чтобы подчистить переходы, а благодаря тому, что у вас есть три базовых слоя, это будет несложно сделать. Также я выбрал случайные точки высоты вдоль крутого склона, “вытянул” их и сплющил при помощи Flatten . И повторил так несколько раз.


    Также я закончил использовать рампу, шум и ретопологию для оставшейся местности. В конечном результате, как вы можете заметить, я не стал делать каждую “ступень” полностью плоской, и оставил небольшие выпуклости разной высоты, чтобы придать более естественный вид. (не обращайте внимание на некоторые незаконченные участки справа, рассмотрим их немного позже)


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



    Добавление растительности

    Для создания деревьев я бы рекомендовал Speedtree, но в этот раз использовал PLE pack из UE4 marketplace, чтобы лучше изучить процедурную генерацию. Забавно, но я дорисовал деревья с помощью foliage tool , просто потому, что не возлагал надежды на этот проект. Разобравшись с PLE pack, я загрузил несколько его ассетов в свой проект, и все работало отлично. Мне понравилось то, что я увидел, захотелось сделать из этого синематик видео. Что и привело меня к ассетам с растениями. Они должны были стать значительной частью синематика. Некоторые я использовал из PLE pack, другие — из Quixel’s Megascans library.



    Чтобы видео получилось кинематографичным, необходимо было помнить о некоторых моментах, отвечающих за оптимизацию, так как я не хотел, чтобы переходы теней и смены LOD были слишком заметны, а деревья\листва вдруг исчезали на заднем плане и т.д. Я хотел, чтобы все получилось отлично. Я также переключил LODLevel для ландшафта на максимум, с -1 на 0, чтобы местность не смещалась, пока камера вращается вокруг нее.


    Но оптимизация требовалась в любом случае. Поэтому, в первую очередь, я отрегулировал culling для растительности, чтобы она не исчезала, когда отдаляешься от нее. Холмы, деревья, крупные камни, объемный туман — все это помогает перекрыть то расстояние, на котором растительность начинает пропадать. Но я не хотел, чтобы деревья исчезали на каком-то определенном расстоянии, так как цель была сделать видео максимально кинематографичным, поэтому мне пришлось усилить низкий LOD нескольких деревьев (использовал вариацию из 11 деревьев), я заполнил ими ландшафт, используя низкую плотность (Density/1kuu), вместо того, чтобы распределить их близко друг к другу.

    Вот эти деревья:


    Другая оптимизация: немного снизил разрешение теней и текстур. Некоторые небольшие элементы были в разрешении 1k-2k, элементы побольше — 2k-4k. Для некоторых ассетов я вырезал текстуры атлас (при помощи Cinema 4D), чтобы снизить количество полигонов, к примеру:


    Все это очень помогает снизить нагрузку.

    Настройка освещения

    Честно говоря, на счет освещения мне особо нечего рассказать. Мне кажется, здесь важнее всего уловить правильное настроение. Я использовал направленный свет, скайлайт (интенсивность 1), экспоненциальный туман (exponential height fog) и постпроцесс (Post Process Volume), чтобы скорректировать цвет сцены и свечение (bloom). Стоит также упомянуть, что объемный туман (volumetric fog), по большей части, перекрыт экспоненциальным туманом (exponential height fog).



    И последнее, но не менее значимое — цветокоррекция, которую я сделал в After Effects при помощи таких инструментов, как Curves, Levels, Color Balance и Film by Magic Bullet. Слева вы можете увидеть финальную версию, посередине — сырой рендер в UE4, а справа — изображение в режиме Detailed Lighting.

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