Основные термины, управление проектами, интерфейс редактора, работа со сценой, настройки проекта и другое.
Статья ранее публиковалась в нашем блоге на DTF.
Если вы планируете переходить с иностранного софта на отечественный и ищете полноценный аналог Unity или Unreal Engine, то одним из вариантов может стать продукция нашей компании, полностью готовая к импортозамещению. UNIGINE использует общепринятые интерфейсы и рабочие процессы, которые могут быть вам знакомы по работе с другими 3D-инструментами. По опыту наших клиентов, для перехода на UNIGINE с других платформ уходит не более 1–2 недель.
Одна из таких платформ — платформа разработки в реальном времени Unity. Далее в статье рассмотрим базовую информацию по переходу на UNIGINE.
Основные термины
Сначала разберемся с названиями различных сущностей и другими терминами. В таблице ниже приведены термины Unity и их точные или приблизительные эквиваленты в UNIGINE.
Категория | Unity | UNIGINE |
Управление проектами и SDK | Hub | SDK Browser |
Интерфейс редактора | Hierarchy Panel | Окно World Nodes |
Inspector | Окно Parameters | |
Project Browser | Окно Asset Browser | |
Scene View | Editor Viewport | |
Сцена | Scene | World |
Типы геймплея | Component | Component System |
GameObject | Node | |
Prefab | NodeReference | |
Меши | Mesh Renderer | Static Mesh Dynamic Mesh |
Skinned Mesh Renderer | Skinned Mesh | |
Blendshapes | Morph Targets | |
Эффекты | Particle System | Particle System |
Halo | Volumetric Objects | |
Lens Flares | Lens Flares | |
Billboard Renderer | Billboards | |
Projector / Decal Projector (HDRP) | Decals | |
Экстерьеры | Terrain | Terrain Systems |
Trees / Grass | Mesh Clutter Grass аддон Vegetation | |
Wind Zones | Animation Field | |
Игровой интерфейс | UI (User Interface) | GUI (Graphics User Interface) |
Освещение | Light Sources | Light Sources |
Environment | Environment | |
Lightmapping | LightmappingVoxel GI | |
Reflection Probes | Environment Probes | |
Рендеринг | Shade | Base Material |
Material | User Material | |
Кастомные шейдеры: HLSL Shader Graph | HLSL GLSL UUSL (Unified UNIGINE Shader Language) Визуальный редактор материалов | |
Compute Shaders | UUSL Compute Shaders | |
Rendering Paths | Rendering Sequence | |
Multi-Display Rendering | Плагины для рендеринга на нескольких экранах (Multi-Monitor Rendering) Плагин Syncker для многоканальной визуализации | |
Программирование | C# | C++ C# UnigineScript |
Scriptable Render Pipeline URP HDRP | Rendering Sequence (при полном доступе из API) Scriptable Materials | |
Физика | Raycast | Intersections |
Rigid Body | Rigid Body | |
Collider | Shape | |
Joint | Joint | |
Cloth | Cloth Body | |
Анимация | Timeline | Tracker |
Навигация и нахождение пути | NavMesh NavMeshAgent Off-Mesh Link NavMesh Obstacle | Navigation Areas Obstacles |
Управление проектами и SDK
Пользователи Unity используют Unity Hub — приложение для поиска, загрузки и управления версиями движка и проектами.
В UNIGINE для этих целей служит UNIGINE SDK Browser. Помимо управления проектами и установленными SDK, браузер SDK предоставляет доступ к примерам (Samples), базе знаний (Knowledge) и дополнениям (Add-Ons). В последнюю категорию входят различные 3D-модели и материалы, в том числе растительность, спецэффекты, погодные эффекты и другое.
Также заметным отличием UNIGINE является возможность создания нового (или редактирование старого) проекта с поддержкой одного из нескольких языков программирования: C++, C# и UnigineScript. Для пользователей Unity рекомендуется использовать C# Component System. Также возможно использование нескольких языков программирования в одном проекте. Например, для выполнения ресурсоемких задач часто используют C++.
Как создать новый проект на C# в SDK Browser
Нажмите Create New в разделе My Projects.
Выберите тип проекта C# (.NET 5) в поле API + IDE.
Если требуется поддержка VR-гарнитур, перейдите в раздел Plugins, отметьте необходимые плагины в секции Stereo 3D и нажмите Ok (больше о поддержке VR-устройств здесь).
Нажмите Create New Project.
После завершения загрузки нажмите Open Editor, чтобы запустить UNIGINE Editor.
Интерфейс редактора
Элементы интерфейсов Unity Editor и UNIGINE Editor близки по функционалу: на схеме ниже они окрашены в похожие цвета. Расположение элементов UNIGINE Editor можно настраивать, перетаскивая и изменяя их размер. В UNIGINE по умолчанию используется темная тема.
Toolbar. Панель инструментов, которая обеспечивает доступ к инструментам позиционирования, а также элементам управления логикой приложения, воспроизведением звука, симуляцией физики, компиляцией шейдеров и запеканием света.
World Hierarchy Window. Инструмент для работы с иерархией нод. Позволяет организовывать ноды в иерархию, а также добавлять, удалять, клонировать и переименовывать их.
Editor Viewport. Просмотр трехмерной сцены. Позволяет визуально перемещаться и редактировать виртуальный мир.
Parameters Window. Окно параметров выбранного элемента виртуального мира. Позволяет просматривать и изменять параметры нод, материалов, свойств и ассетов.
Asset Browser Window. Инструмент для организации контента в проекте: создания, импорта, просмотра, переименования ассетов, а также перемещения и управления их иерархией.
Просмотр сцены
Инструменты для просмотра виртуальной сцены Unity Scene View и UNIGINE Editor Viewport очень похожи между собой — это непосредственно само окно просмотра и панель инструментов.
Вы можете использовать столько окон Editor Viewport, сколько вам необходимо.
Интерфейс Editor Viewport
Есть русские субтитры
Camera Panel служит для переключения между камерами и настройки текущей камеры.
Rendering Debug Panel требуется для отображения содержимого буферов рендеринга так же, как при использовании Draw Mode в редакторе Unity.
Navigation Panel используется для быстрой настройки и переключения между пресетами скорости камеры, а также для изменения положения камеры.
Панель Helpers обеспечивает быстрый доступ к вспомогательным визуализаторам, таким как значки, гизмо и каркасы.
Навигация внутри Editor Viewport почти такая же, как и в Scene View Unity. Подробнее ознакомиться с навигацией по сцене можно, просмотрев видео ниже (либо прочитав соответствующий раздел в документации):
Есть русские субтитры
Переключатель Precompile All Shaders (предварительная компиляция всех шейдеров) используется для принудительной компиляции шейдеров;
Переключатель Animation (анимации);
Переключатель Physics (физики);
Переключатель Audio (звука);
Кнопка Play для управления воспроизведением.
Режим воспроизведения
В режиме воспроизведения Game View редактора Unity рендерит финальную сцену с одной или нескольких камер.
В UNIGINE кнопка Play используется для запуска экземпляра приложения в отдельном окне. Также есть возможность переключения между режимами воспроизведения для изменения его основных параметров. Так, например, можно включить режим VR, чтобы обеспечить совместимость с одной из поддерживаемых гарнитур виртуальной реальности.
Engine Viewport в UNIGINE (аналог Game View), используемый для отладки и оценки производительности, считается избыточным для проектов, разрабатываемых на C# .NET 5. Однако, его можно использовать в других проектах.
Консоль
Как в Unity, так и в UNIGINE есть консоль для стандартного ввода, вывода и регистрации ошибок. Также существует набор консольных команд, позволяющих совершать определенные операции.
Консоль доступна как в UNIGINE Editor, так и в работающем приложении. Чтобы открыть окно консоли в редакторе, перейдите в меню Windows -> Console:
Во время работы приложения встроенная консоль запускается нажатием кнопки «Тильда» (~).
Во встроенную консоль можно выводить сообщения из кода.
Подготовка финальной сборки
Так же как и Unity Editor, UNIGINE Editor позволяет выполнить подготовку финальной сборки проекта.
Проекты и файлы
Папки и файлы
Проект в UNIGINE, как и проект на Unity, хранится в отдельной папке, настройки проекта хранятся в файле с расширением *.project. В папке проекта есть различные подпапки с контентом и исходным кодом приложения. Также тут хранятся папки с файлами конфигурации и исполняемыми файлами. Наиболее важные подпапки: data (данных) и source (исходного кода).
Каждый проект UNIGINE обязательно включает в себя папку data. Как и в папке Assets проекта на Unity, здесь хранятся ресурсы вашего проекта. Для импорта ассетов достаточно перетащить файлы в папку data — они автоматически импортируются и станут доступны в Asset Browser. Ассеты в UNIGINE Editor будут автоматически обновляться при внесении изменений в соответствующие файлы.
Соответствие содержимого папки data в корневой директории проекта и в Asset Browser
Поддержка типов файлов
Unity поддерживает широкий спектр форматов файлов, в то время как UNIGINE поддерживает большинство наиболее популярных, а также ряд специфических:
Тип ассетов | Поддерживаемые форматы |
Геометрия | .fbx, .obj, .3ds, .dae, .glb/.gltf, .stp/.step, .igs/.iges, .brep, .stl |
Текстуры | .png, .jpeg, .tif, .tga, .rgba, .psd, .hdr, .dds, and more |
Звук и видео | .wav, .mp3, .oga/.ogg, .ogv |
Шрифты | .ttf |
Перенос ассетов из Unity
Меши. Ассеты в формате FBX могут быть легко импортированы из Unity в UNIGINE без искажения масштаба. Подробнее про импорт FBX-моделей читайте здесь.
Материалы. Так же как и Unity, UNIGINE работает с PBR-материалами (Physically Based Materials) и поддерживает Metalness и Specular workflow. Материалы, созданные в Unity, можно воссоздать в UNIGINE, благодаря встроенной богатой библиотеке материалов, а также возможности визуально создавать и редактировать материалы в Visual Material Editor.
Текстуры. Текстуры можно импортировать либо как часть модели, либо отдельно, а затем назначать их мешу. Но иногда может потребоваться предварительная подготовка. Например, Shading-текстура в UNIGINE хранит карты Metalness, Roughness, Specular и Microfiber в соответствующих каналах. Поэтому сначала нужно изменить Shading-текстуру с помощью GIMP или Photoshop, а затем импортировать ее в UNIGINE. А перед импортом Normal-текстуры нужно инвертировать канал G с помощью соответствующей настройки при импорте.
Анимации. Модель со скелетной анимацией, которую вы использовали в проекте Unity, может быть импортирована в UNIGINE, если она хранится в формате FBX. При импорте такой модели, включите опцию Import Animations (импорт анимаций) и настройте дополнительные параметры.
Подробнее про импорт разных ассетов читайте здесь.
Работа со сценой
Концепция сцены в обоих движках одинакова. Однако Unity и UNIGINE используют разные системы координат.
Объекты в сцене
Как в Unity, так и в UNIGINE, сцена формируется из базовых объектов. С их кратким описанием, а также основными сходствами и различиями можно ознакомиться ниже.
Unity | UNIGINE |
Окно Hierarchy | Окно World Nodes |
Базовый объект сцены — GameObject. | Базовый тип, от которого наследуются все типы объектов сцены — Node. Некоторые имеют визуальное представление: Objects, Decals и Effects. У каждого из них есть поверхности для представления своей геометрии (меши). Остальные — Light Sources, Players и др. — невидимы. |
GameObjects являются контейнерами для всех остальных компонентов. Компоненты определяют функционал GameObject. | Базовая функциональность ноды определяется ее типом. Дополнительные функции можно добавлять с помощью свойств и компонентной системы. |
По умолчанию каждый GameObject имеет компонент Transform. | У каждой ноды есть матрица преобразования, которая задает ее положение, поворот и масштаб в пространстве. |
GameObjects могут быть организованы в иерархию типа родитель-потомок. | Ноды могут быть организованы в иерархию типа родитель-потомок. Важно. Все объекты, добавляемые в сцену, независимо от их типа, называются нодами. |
Префабы (Prefabs)
Процесс создания сцены в Unity основан на префабах. Обычно вы собираете сложный объект из GameObjects с определенными компонентами и свойствами и создаете префаб из такого объекта. Затем префабы могут быть размещены в сцене посредством редактора или созданы во время выполнения приложения.
Создание сцены в UNIGINE основано на Node Reference, которые очень похожи на префабы. Чтобы создать сложный объект, экземпляры которого затем будут многократно использоваться в сцене, достаточно построить нужную иерархию из нод, назначить им материалы и свойства, а затем сохранить ее как Node Reference. Так же, как и в случае с префабами, вы в любой момент сможете изменить Node Reference, просто изменив любой из ее экземпляров.
Подробнее про создание Node Reference и управление смотрите видео ниже (или читайте в документации):
Есть русские субтитры
Совместная работа над проектом
В Unity Editor для разрешения конфликтов, возникающих при слиянии рабочих копий проекта, используется инструмент Smart Merge. Также редактор позволяет применять пользовательские инструменты для тех же целей. Для успешного объединения, сцены и другие файлы должны быть в формате YAML.
В UNIGINE все исходные форматы файлов по умолчанию являются текстовыми, поэтому вы можете использовать любую привычную систему контроля версий и объединять миры, ноды и другие ассеты. Файловую систему можно расширять с помощью Mount Points, которые позволяют добавлять в проект любые внешние ресурсы, находящиеся в совместном доступе. Кроме того, стандартный подход к работе над проектом заключается в разделении работы разных членов команды с помощью отдельных Node Layers. Это позволяет избежать необходимости разрешения конфликтов при слиянии изменений.
Подробнее про совместную работу над проектом читайте здесь.
Камеры
Камеры в Unity и UNIGINE устроены немного по-разному.
В Unity компонент Camera отвечает за захват изображения и отправку его на отрисовку. Все включенные камеры, присутствующие в сцене, визуализируются в окне просмотра (Game View) и могут перекрывать друг друга. Для переключения между камерами обычно нужно отключить текущую камеру и включить другую.
В UNIGINE камера — это объект, связанный с рендерингом и представленный нодами Player в мире. Для упрощения создания наиболее часто используемых камер, управляемых с помощью устройств ввода (клавиатура, мышь, джойстик), предусмотрено несколько типов Node Player с различным поведением:
Dummy — простая статическая камера, которая может быть усовершенствована с помощью пользовательских доработок.
Spectator — камера свободного перемещения.
Persecutor — камера, которая следует за целевым объектом и может свободно вращаться вокруг него на заданном расстоянии. Это готовое решение для создания камеры от третьего лица.
Actor — камера с твердым физическим телом капсульной формы, которая может взаимодействовать с окружением. Это готовое решение для создания вида от первого лица, схожее с Unity Character Controller.
Одновременно Editor Viewport показывает вид только с одной камеры. Переключаться между камерами можно с помощью Camera Panel:
Чтобы в режиме воспроизведения (когда нажата кнопка Play) определенная камера использовалась по умолчанию, нужно установить флажок Main Player в ее настройках.
Настройки проекта
Настройка общих параметров проекта в Unity Editor обычно выполняется через окно настроек проекта (меню: Edit -> Project Settings). Аудио, графика, физика, уровни качества и другие настройки влияют на весь проект.
В UNIGINE общие настройки доступны вменю Windows -> Settings в разделе Runtime. Настройки мира задаются для каждого мира отдельно.
Компиляция шейдеров
В Unity Editor асинхронная компиляция шейдеров включается и выключается в настройках редактора (меню: Edit -> Project Settings -> Editor -> Shader Compilation).
В UNIGINE аналогичная функция редактора называется Forced Shader Compilation. Она доступна как через панель инструментов, так и через раздел Editor окна Settings.
Пресеты
Вы используете пресеты в редакторе Unity, когда вам нужно повторно использовать настройки свойств, относящиеся к различным задачам, будь то настройки компонентов, настройки импорта или, в особенности, настройки проекта (Project Settings). Вы можете сохранить настройки для определенного раздела Project Settings в качестве *.preset ассета и использовать его в процессе разработки.
UNIGINE позволяет сохранять и загружать пресеты для общих настроек физики, звука и рендеринга. Пресеты хранятся в виде ассетов с расширениями *.physics, *.sound и *.render соответственно. Для загрузки и сохранения пресетов используются кнопки Load и Save в соответствующем разделе настроек окна Settings.
Сохраненные ассеты отображаются в Asset Browser. Вы можете загрузить настройки рендеринга, дважды щелкнув необходимый ассет с расширением .render.
В UNIGINE пресеты доступны не только в редакторе. Вы можете использовать классы Physics, Sound и Render для управления пресетами соответствующих настроек — например, для переключения между уровнями качества во время выполнения приложения.
Графика
В Unity Editor настройки качества графики в основном собраны в следующих разделах:
Раздел Graphics содержит глобальные настройки графики. Настройки уровня (Tier Settings) обеспечивают платформенно-ориентированную настройку рендеринга и компиляции шейдеров. Уровень определяется автоматически в зависимости от используемой платформы.
Раздел Quality обрабатывает уровни графического качества, заданные для каждой платформы.
В UNIGINE настройки рендеринга мира можно найти в разделе Rendering окна Settings. Также есть возможность включать и выключать самые распространенные функции рендеринга с помощью соответствующего меню:
В UNIGINE нет платформенно-зависимых настроек качества, поэтому для управления уровнями качества необходимо написать свою собственную логику. Для этой цели можно использовать пресеты рендеринга (Render Presets).
Рассмотрим наиболее часто используемые настройки рендеринга в Unity и соответствующие им аналоги в UNIGINE:
Unity | UNIGINE |
HDR Mode | Render -> Buffers -> Color 16F |
Rendering Path | см. ниже |
Shaders Preloading | Render -> Streaming -> Preload at World Loading |
Pixel Light Count | Forward Per-Object Limits |
Texture Quality | Render -> Textures -> Quality |
Anisotropic Textures | Render -> Textures -> Anisotropy |
Anti Aliasing | Render -> Antialiasing -> Supersampling |
Soft Particles | particles_base -> Soft Interaction |
Realtime Reflection Probes | Меню: Rendering -> Dynamic Reflections -> Enabled |
Texture Streaming | Render -> настройки Streaming |
Shadows | Render -> настройки Shadows |
Shadow Cascades | устанавливается для каждого источника World Light |
VSync Count | Runtime -> настройки Video |
Способы рендеринга
В Unity существует два способа рендеринга: Deferred (отложенный) и Forward (прямой) рендеринг. Они определяют точность шейдинга, а также потребление ресурсов при рендеринге и необходимое аппаратное обеспечение. Способ рендеринга можно выбрать в окне Graphics для каждой камеры.
UNIGINE имеет фиксированную последовательность рендеринга, представленную комбинацией полного отложенного рендеринга с методами упреждающего рендеринга:
Вся непрозрачная геометрия отрисовывается в отложенном проходе (Deferred).
Прозрачная геометрия отрисовывается во время прямого прохода (Forward).
Вы можете уменьшить вычислительную нагрузку, пропустив определенные этапы рендеринга. Посмотрите специальный видеоурок по использованию инструмента Microprofile для оптимизации рендеринга:
Эффекты постобработки
В Unity доступность эффектов постобработки определяется используемым конвейером рендеринга. В UNIGINE подобные эффекты не являются частью постобработки, а интегрированы в процесс рендеринга. Таким образом, Unity High Definition Render Pipeline (HDRP) наиболее приближен к процессу рендеринга в UNIGINE по сравнению с другими конвейерами рендеринга.
В Unity для определения объемов, в которых параметры и эффекты постобработки локально (или глобально) переопределяются, используется фреймворк Volume. В UNIGINE для плавной перехода между эффектами в различных областях необходимо написать собственную логику.
Unity | UNIGINE |
Методы сглаживания: FXAA TAA SMAA MSAA | Методы сглаживания: Fast approXimate Anti-Aliasing (FXAA) Temporal Anti-Aliasing (TAA) Subpixel Reconstruction Anti-Aliasing (SRAA) Supersampling |
Ambient Occlusion | Screen-Space Ambient Occlusion |
Auto Exposure | Эффекты камеры: Adaptive Exposure White Balance Tone Mapping Bloom Lens Dirt |
White Balance | |
Tonemapping | |
Bloom | |
Цветокоррекция: Tone Lookup Texture | Color Correction Color Correction LUT |
Chromatic Aberration | Материалы постобработки: post_color_correction |
Grain | |
Deferred Fog | Haze |
Depth of Field | Depth of Field |
Motion Blur | Motion Blur |
Screen Space Reflection | SSR (Screen Space Reflections) |
Contact Shadows | Screen Space Shadows |
Micro Shadows | Cavity of SSAO (Screen Space Ambient Occlusion) |
* * *
Материал получился объемный, но это лишь первый, обобщенный выпуск из запланированных трех по миграции с Unity. Следующий выпуск будет более специализированным и расскажет про миграцию на UNIGINE с точки зрения 3D-художника. А в последнем разберем все важные моменты по этому вопросу для программистов.
Чтобы получить доступ к бесплатной версии UNIGINE 2 Community заполните форму на нашем сайте.
Все комплектации UNIGINE:
Community — базовая версия для любителей и независимых разработчиков. Достаточна для разработки видеоигр большинства популярных жанров (включая VR).
Engineering — расширенная, специализированная версия. Включает множество заготовок для инженерных задач.
Sim — максимальная версия платформы под масштабные проекты (размеров планеты и даже больше) с готовыми механизмами симуляции.