Amazon Lumberyard: создание первой 3D-сцены
() translation by (you can also view the original English article)



В этой части учебника я покажу вам, как создать завершенный 3D-уровень, состоящий, как из внутренних активов Lumberyard, а также из импортированных новых.
Затем вы узнаете, как разместить игрока, так и камеру, и, как использовать несколько объектов, создавая префабы и текстуры. Наконец, вы познакомитесь с освещением в Lumberyard.
Обратите внимание, что вам рекомендуется прочитать две предыдущие части (часть 1, часть 2), чтобы полностью понять обозначения в этой части.
Для кого предназначена эта серия уроков?
Эта учебная серия предназначена в первую очередь для двух групп разработчиков игр:
- тех, кто совершенно незнаком с игровыми механизмами вообще
- тех, кто знаком с другими игровыми движками (такими как Unity, Unreal Engine или Cry Engine), но не с Lumberyard
Я предполагаю, что у вас есть некоторые знания о компьютерной графике, поэтому я не буду исчерпывающе освещать все обозначения.
Создайте новый 3D-уровень
Запустите Lumberyard и нажмите New Level. Используйте следующие данные в интерфейсе New Level.
- Имя: CompleteFirstLevel
- Папка: Уровни / (значение по умолчанию)
- Используемый ландшафт: проверено!
- Разрешение карты высот: 1024x1024
- Метры Per Texel: 1
Нажмите ОК.
Обратите внимание, что все уровни сохраняются по умолчанию по адресу: YourLumbaryardInstallationpath\dev\SamplesProject\Levels.
Для текстуры ландшафта используйте:
- Разрешение: 4096x4096
- Множитель цветов ландшафта: 3
- Высокое качество: проверено!
Нажмите ОК.
Размещение камеры
Чтобы играть на вашем уровне, вы должны создать и разместить игровую камеру. Затем вам необходимо изменить ее, чтобы включить управление персонажем и указать начальную точку. К счастью, Lumberyard предоставляет собой сборный объект, в котором есть игровая камера с поддержкой элементов управления вводом.
Камеру можно найти в редакторе базы данных в разделе View > Open View Pane.



Вы также можете найти Database Editor на панели инструментов EditMode.



Вкладки базы данных (красный прямоугольник) обеспечивают доступ и конфигурацию для нескольких типов баз данных. Панель инструментов редактора (зеленый прямоугольник) дает вам доступ к таким инструментам, как Открыть, Сохранить, Добавить или Удалить элементы из базы данных. Наконец, FileTree View (синий прямоугольник) предоставляет вам доступ к доступным элементам базы данных.



В Database View откройте Prefabs Library и нажмите Load Library.



Из списка каталогов префабов выберите character_controllers.xml и нажмите ОК.



В Prefab Library из дерева файлов, перетащите Sphere_Controller в Perspective Viewport.
Теперь у вас должен быть один робот, располагающийся на вашем уровне, ожидающий тестирования. Обратите внимание, что место, где вы его размещаете, также определяет начальную точку уровня. Сохраните файл уровня (File > Save).



Если вы нажмете на Gizmo, вы можете увидеть полные свойства префаба. Если вы не видите Gizmo, вам нужно щелкнуть по иконке H на панели инструментов Perspective.



Вы должны обратить внимание, что по умолчанию вы не можете изменять какое-либо свойство префаб-объекта. Однако, если вы выберете Gizmo, а затем нажмёте на Open All в разделе Rollup Bar > Prefab Parameters, тогда у вас будет доступ к каждому префаб-объекту и его свойствам.



Нажмите на объект Camera Controller Rig, чтобы проверить его параметры камеры.



Настало время протестировать вашу новую игровую камеру. Нажмите Game > Switch to Game или нажмите Control-G.
Добавьте камеру
Существует несколько сценариев, в которых нужно разработать пользовательские камеры или даже статические камеры. Для этого Lumberyard предоставляет вам доступ к объекту камеры. Существует два основных способа добавления пользовательской камеры:
- использование RollupBar
- использование текущей конфигурации Perspective viewport
Первый использует объект Camera, доступный в Objects> Misc> Object Type> Camera. Вам просто нужно выбрать объект Camera, а затем поместить его в Perspective viewport.
Последний использует ваше текущее положение, чтобы новая камера также использовала ту же конфигурацию. Перенесите Perspective viewport в нужное положение (например, посмотрите на робота). Щелкните правой кнопкой мыши в верхнем левом углу панели инструментов Perspective и выберите Create Camera из текущего вида. Текущий вид из вашей Perspective viewport теперь является зафиксированной камерой из этой позиции.



Теперь перейдите в сторону и обратите внимание на новый объект камеры, который ищет вашу последнюю конфигурацию Perspective Viewport.



Объекты
Один из способов размещения объектов - использование кистей (RollUp Bar> Objects> Brush). Кисти обычно представляют собой статические объекты, помещенные в 3D-сцену. Их дешево сделать, поскольку они не содержат дополнительных свойств объекта или физических свойств.
На панели Rollup Bar справа выберите Brush на вкладке Objects. В разделе Browser Objects > StyleTown > Natural > Terrain и выберите объект townbloc. Перетащите его в Perspective viewport.



В списке Brush откройте StyleTown > Architecture > Buildings. Перетащите здание b13_h02 в Perspective viewport и поместите его рядом с одним из углов townbloc.



Теперь вы знаете, как разместить кисти на своем уровне.
Импорт внешних объектов
Чтобы импортировать внешние объекты, Lumberyard советует вам использовать формат файла FBX. Текущий импортер все еще находится в предварительном выпуске и некоторые функции, такие как материалы, отсутствуют.
Инструмент Lumberyard FBX Importer включает граф сцену, которая представляет собой древовидный уровень данных между вашей моделью .fbx и Lumberyard. Каждый раз, когда вы обрабатываете .fbx, создается новый файл .scenesettings с тем же именем; этот новый файл хранит метаданные актива.
Если вы измените свойства сетки модели, вам не нужно повторно импортировать файл .fbx. Lumberyard Asset Processor прослушивает и обнаруживает любые изменения в файле .scenesettings и использует компилятор ресурсов для обработки файла .fbx.
Давайте продолжим и загрузим один внешний файл FBX. Извлеките сжатый файл, который вы только что загрузили, и переместите файл Wooden_House.fbx в папку YourLumbaryardInstallationpath\dev\SamplesProject\.
В редакторах Lumberyard, выберите View > Open View Pane > FBX Importer.



Нажмите значок папки в правом верхнем углу окна инструмента.



Выберите файл Wooden_House.fbx и нажмите Открыть.



Измените свойство Name на Imported_Wooden_House и нажмите Import.



Через несколько секунд вы увидите окно с сообщением об успешном завершении.



Прежде чем вы сможете использовать свой новый актив, необходимо выполнить последний шаг. В разделе RollupBar > Geom Entity нажмите Reload. Затем должна появиться новая папка. Откройте ее, и у вас должна появиться доступная модель imported_wooden_house.
Наконец, перетащите модель в Perspective viewport.



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






Когда вы закончите создание уровня, перейдите к следующему разделу. Обратите внимание: вам не нужно создавать 3D-мир точно так же, как и предыдущий. Основная идея состоит в том, чтобы добавить несколько кистей и взаимодействовать с ними (вращение, преобразование и масштабирование).
Префабы
Префабы позволяют вам создавать контент быстрее, используя комбинацию заранее определенных активов. Чтобы использовать ранее созданные Префабы, откройте Database View (View > Open View Pane).
На вкладке Prefabs Library нажмите Open. Выберите styletown.xml и нажмите ОК.



Теперь откройте RollupBar и в разделе Prefab вы должны увидеть импортированный префаб NeighborhoodBlock.



Нажмите и перетащите три объекта (StreetSet_A, Block_A, и StreetLight_A) в Perspective Viewport. У вас должно быть что-то вроде следующего изображения.



Ладшафты
Lumberyard позволяет создавать, редактировать и текстурировать ландшафт на вашем уровне. Для этого вы всегда должны иметь в виду три меню:
- Уровни текстуры ландшафта (Terrain Texture Layers)
- Редактор материала (Material Editor)
- Редактор ландшафта (Terrain editor) (в RollupBar)
Чтобы открыть Уровни текстуры ландшафта, вы можете использовать главное меню View > Open View Pane > Terrain Texture Layers или короткий путь, доступный на панели инструментов Editor.



Откройте Уровни текстуры ландшафта.



Интерфейс Уровней текстуры ландшафта используется для определения материалов, которые будут использоваться для рисования вашего уровня ландшафта. В интерфейсе есть четыре основных раздела:
- Layer Tasks (Задачи уровня) используется для добавления, удаления, перемещения и назначения выбранного материала выбранному слою.
- Layer Info (Информация уровня) содержит информацию о выбранном слое, такую, как размер и тип поверхности.
- Layer Texture (Текстура уровня) отображает текстуру с низким разрешением, содержащую информацию о цвете.
- Layer list (Список уровня) содержит список созданных слоев для рисования ландшафта.
В разделе Layer Tasks добавьте два слоя. Назовите первый grass, а второй dirt.



Откройте Material Editor, используя View > Open View Pane > Material Editor или короткий путь, доступный на панели инструментов Editor.



Вы заметите, что у вас будет два окна (Terrain Texture Layers и Material Editor) или одно окно с разделителем вкладок в нижней левой части.



Material Editor состоит из следующих областей:
- Панель инструментов Editor для применения, удаления, создания и сохранения материалов
- Предварительный просмотр материала, который отображает выбранный материал
- Каталог папок материалов, отображающий иерархическую структуру папок, содержащую материалы, которые можно выбрать
- Свойства, содержащие параметры, которые определяют общий вид материала.
Теперь пришло время назначить два материала для вышеупомянутых созданных слоев. Для первого выберите материал gr_grass_01, расположенный по пути к каталогу: materials > gettingstartedmaterials.



Теперь измените интерфейс на Terrain Texture Layers и выберите слой grass. Нажмите Assign Material. Это действие применит выбранный материал к выбранному слою. Обратите внимание, что Material path изменился в соответствии с material > getstartedmaterials-> gr_grass_01.



Теперь добавим материал земли (gs_ground_01) в слой dirt. Этот материал также находится в той же папке.
- Выберите материал gr_ground_01.
- Измените интерфейс на Terrain Texture Layers.
- Выберите слой dirt.
- Нажмите Assign Materials.
Теперь вы готовы нарисовать текстуру травы и почвы в ландшафте.
На панели RollUp выберите вкладку Terrain, а затем нажмите кнопку Layer Painter.



Существует несколько аспектов, которые следует учитывать при применении текстуры ландшафта: свойства радиуса и жесткости; цвета и яркости текстуры; сама текстура; и тип заливки (основанный на мышке или на Flood). Первая применит текстуру, используя расположение вашей мышки, в то время как последняя применит текстуру ко всей почве
Выберите текстуру травы и измените цвет на более зеленый оттенок. Нажмите ОК.



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



Теперь вы можете нарисовать почву в пейзаже по периметру улицы. Выберите текстуру почвы и измените цвет на коричневый. Нажмите ОК. Теперь, используя Perspective viewport, увеличьте масштаб 3D-сцены и левой кнопкой мыши, щелкните, чтобы добавить текстуру почвы.
Модифицируйте радиус и жесткость, чтобы уменьшить время применения текстуры. Когда вы закончите, у вас будет 3D-уровень, подобный следующему:



Высота ландшафта.
Вы также можете изменить высоту ландшафта с помощью инструментов Modify.



Инструмент Modify имеет следующие параметры:
- Flatten: сглаживание ландшафта до заданной высоты
- Smooth: смягчите ландшафт до более гладкой поверхности
- Rise/Lower: поднимите или опустите ландшафт, основанный на настройках размера кисти
- Pick Height: найдите и установите высоты, основанные на существующей геометрии рельефа
- Outside Radius: установите размер кисти для рисования
- Inside Radius: установите насколько круглой или плоской будет кисть относительно настройки внешнего радиуса
- Hardness: настройте мягкость или жесткость внешней кисти
- Height: установите высоту кисти
- Scale: сила шумового эффекта; более высокие значения дают больше шума.
- Frequency: как часто применяется эффект.
Используйте вышеупомянутые параметры, чтобы создать несколько гор на вашем 3D-уровне. Нажмите кнопку Rise/Lower. Обратите внимание, что курсор вашей мышки в Perspective Viewport изменился.
В Perspective Viewport перейдите к внешнему периметру карты ландшафта и щелкните левой кнопкой мыши, чтобы нарисовать в ландшафте. Постройте несколько холмов разных размеров и форм. В конце концов, ваш пейзаж теперь должен выглядеть примерно так:



Если вы хотите, вы можете поиграть со свойствами ландшафта, а именно с параметрами Flatten, Smooth и Pick Height. Когда вы будете удовлетворены генератором рельефа, сохраните свой уровень (Control-S).
Освещение
Теперь, когда вы почти завершили 3D-пейзаж, пришло время добавить ему освещение. В Lumberyard вы можете добавить три типа освещения:
- Environment Probes (Зонд окружающей среды)
- Time of Day (Время дня)
- Basic Lights (Основное освещение)
Прежде чем размещать в пейзаже одиночные светлые объекты, всегда полезно начинать с зонда глобальной окружающей среды по умолчанию. Зонды окружающей среды отлично подходят для глобального освещения окружающей среды, поскольку они способствуют отражениям, диффузным материалам, материалам частиц и теневым цветам.
При построении уровня вам рекомендуется разместить множество зондов окружающей среды для достижения высококачественных и реалистичных пейзажей.
Зонд окружающей среды
Чтобы создать зонд окружающей среды, выберите EnvironmentProbe в RollUpBar в разделе Misc. Переместите курсор мышки в область просмотра и поместите зонд окружающей среды везде, где вы хотите.



Обычно его располагают его в центре уровня, затем сконфигурируйте его BoxSize, чтобы заполнить нужную область.
В разделе свойства EnvironmentProbe вы хотите изменить BoxSizeX, BoxSizeY и BoxSizeZ на 512, 512 и 250 соответственно. Если вы уменьшаете масштаб пейзажа, у вас должен быть желтый квадрат, покрывающий его.
Обратите внимание, что эти значения могут не привести к тому же результату в вашем пейзаже. Таким образом, вы должны настроить их для воссоздания желаемого эффекта.



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



Чтобы активировать зонд, установите флажок в разделе Active согласно EnvironmentProbe Properties, а затем нажмите кнопку Generate Cubemap согласно Probe Functions.
Вы должны заметить, что тени становятся более мягкими.
Вы можете дополнительно настроить зонд окружающей среды, изменив значение Diffuse и DiffuseMultiplier. Первое представляет собой цвет зонда, в то время как последнее представляет собой множитель интенсивности между этим цветом и свойствами материалов пейзажа.



Время дня
Вы можете контролировать время суток (TOD), а также вы можете анимировать свой пейзаж, принимая во внимание значения изменения реального времени дня. Чтобы установить TOD, вы должны открыть редактор TOD. Вы снова можете открыть его, используя View> Open View Pane> Time of Day или короткий путь, доступный на панели инструментов Editors.



Редактор TOD имеет семь основных областей:



- Панель инструментов Editor содержит значки для импорта, сохранения и установки определенных часов дня.
- Настройки HDR для настройки подсветки HDR.
- Задачи для настройки основных функций редактора.
- Время определяет текущее время уровня. Также включает время начала и окончания, если вы хотите оживить освещение.
- Задачи обновления позволяют воспроизводить или останавливать анимацию.
- Редактор Time line дает вам возможность контролировать настройки освещения в течение 24-часового периода.
- Параметры дают вам больше возможностей для настройки свойств освещения.
Давайте импортируем определенный заранее файл TOD .xml. Нажмите Import file и перейдите в SamplesProject\Levels\GettingStartedFiles, выберите файл TimeOfDay и нажмите Открыть. Настройки освещения будут изменены автоматически.



Дополнительно вы можете настроить свойства TOD по своему усмотрению. Поиграйте с цветом Солнца, множителем цвета Солнца и интенсивностью Солнца, чтобы увидеть различия.



Измените TOD на 9:00 вечера, прежде чем продолжить. Закройте редактор TOD.



Основное освещение
Ваш пейзаж теперь темнее. Настало время добавить основное освещение. В RollupBar на вкладке Objects выберите кнопку Entity. Под заголовком Browser раскройте папку Lights и выберите объект Light. Перетащите его в свой пейзаж и поместите его рядом с одним из объектов уличного фонаря.



Обратите внимание, что если вы столкнулись с какой-либо проблемой, которая точно выравнивает свет, вам рекомендуется включить опцию Snap to Grid.
Поскольку источником света является фонарь, он должен быть прожекторным светом (а не заполняющим светом). Чтобы изменить свет от заполняющего до прожекторного: под заголовком Entity Properties найдите название Projector. Нажмите Texture, а затем щелкните по значку папки.



Теперь откройте каталог \SamplesProject\textures\lights\generic и откройте файл spot_075.dds.



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



Под заголовком Entity Properties вы можете изменить различные параметры, чтобы настроить свет.
- AttenuationBulbSize - это размер лампы; это начальная точка, в которой свет начинает экспоненциально падать. Значение 1 задает свет с полной интенсивностью на один метр, прежде чем он начнет падать. Отрегулируйте этот размер по отношению к диффузному мультипликатору для управления яркостью источника света без ввода неуправляемых чисел.
- Radius - это расстояние от источника, при котором свет воздействует на окружающую область.
- Diffuse представляет значение цвета RGB для освещения.
- DiffuseMultiplier - интенсивность диффузного цвета; балансируйте это значение с помощью параметра AttenuationBulbSize, чтобы определить баланс естественных уровней освещенности.
- ProjectorFov представляет собой поле зрения для проекционного освещения.
- CastShadows делает, чтобы свет отбрасывал тень на основе минимальных выбранных спецификаций конфигурации. Для обеспечения того, чтобы всегда падали тени, установите для этого значение 'Low Spec'. Обратите внимание, что параметр CastShadows не является параметром 'качества', а скорее параметром спецификации производительности для типа машины, на которой запущен уровень.
Для этого урока используйте следующие настройки:
- AttenuationBulbSize = 6
- Radius = 20
- Diffuse Color = 228, 224,102
- DiffuseMultiplier = 20
- ProjectorFov = 80
- CastShadows = Low Spec
Поэкспериментируйте с этими настройками, чтобы понять, как меняется разница между размером лампы, радиусом и диффузным множителем на основе используемых вами входных значений.



Запустите игру (Control-G) и посмотрите, как ведет себя ваш персонаж при контакте с новым источником света. Для каждого фонаря добавьте новый свет. Вы можете сделать это, дублируя текущий свет или добавляя его.
Задача
Чтобы проверить приобретенные знания, вам теперь требуется воссоздать getting-started-completed-level.
Для этого вам нужно будет поиграть с кистями, освещением, материалами, текстурами и ландшафтами. Короче говоря, повторно примените все, что вы узнали до сих пор. Ваш конечный уровень должен выглядеть следующим образом:



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