Быстрый переход на UNIGINE с Unity: первые шаги
Основные термины, управление проектами, интерфейс редактора, работа со сценой, настройки проекта и другое.
Настали сложные времена. Многие технологические компании ушли из России и не все из них обещали вернуться. А некоторые производители программного обеспечения начали отзывать лицензии на свои продукты для россиян. Если вы планируете переходить с иностранного софта на отечественный и ищете полноценный аналог Unity или Unreal Engine, то одним из вариантов может стать продукция нашей компании, полностью готовая к импортозамещению.
UNIGINE использует общепринятые интерфейсы и рабочие процессы, которые могут быть вам знакомы по работе с другими 3D-инструментами. По опыту наших клиентов, для перехода на UNIGINE с других платформ уходит не более 1–2 недель. Одна из таких платформ — платформа разработки в реальном времени Unity. Далее в статье рассмотрим базовую информацию по переходу на UNIGINE.
Основные термины
Сначала разберемся с названиями различных сущностей и другими терминами. В таблице ниже приведены термины Unity и их точные или приблизительные эквиваленты в UNIGINE.
Управление проектами и 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 будут автоматически обновляться при внесении изменений в соответствующие файлы.
Поддержка типов файлов
Unity поддерживает широкий спектр форматов файлов, в то время как UNIGINE поддерживает большинство наиболее популярных, а также ряд специфических:
Перенос ассетов из 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, сцена формируется из базовых объектов. С их кратким описанием, а также основными сходствами и различиями можно ознакомиться ниже.
Префабы (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 существует два способа рендеринга: Deferred (отложенный) и Forward (прямой) рендеринг. Они определяют точность шейдинга, а также потребление ресурсов при рендеринге и необходимое аппаратное обеспечение. Способ рендеринга можно выбрать в окне Graphics для каждой камеры.
UNIGINE имеет фиксированную последовательность рендеринга, представленную комбинацией полного отложенного рендеринга с методами упреждающего рендеринга:
- Вся непрозрачная геометрия отрисовывается в отложенном проходе (Deferred).
- Прозрачная геометрия отрисовывается во время прямого прохода (Forward).
Вы можете уменьшить вычислительную нагрузку, пропустив определенные этапы рендеринга. Посмотрите специальный видеоурок по использованию инструмента Microprofile для оптимизации рендеринга:
Эффекты постобработки
В Unity доступность эффектов постобработки определяется используемым конвейером рендеринга. В UNIGINE подобные эффекты не являются частью постобработки, а интегрированы в процесс рендеринга. Таким образом, Unity High Definition Render Pipeline (HDRP) наиболее приближен к процессу рендеринга в UNIGINE по сравнению с другими конвейерами рендеринга.
В Unity для определения объемов, в которых параметры и эффекты постобработки локально (или глобально) переопределяются, используется фреймворк Volume. В UNIGINE для плавной перехода между эффектами в различных областях необходимо написать собственную логику.
* * *
Материал получился объемный, но это лишь первый, обобщенный выпуск из запланированных трех по миграции с Unity. Следующий выпуск будет более специализированным и расскажет про миграцию на UNIGINE с точки зрения 3D-художника. А в последнем разберем все важные моменты по этому вопросу для программистов.
Чтобы получить доступ к бесплатной версии UNIGINE 2 Community заполните форму на нашем сайте.
Все комплектации UNIGINE:
- Community — базовая версия для любителей и независимых разработчиков. Достаточна для разработки видеоигр большинства популярных жанров (включая VR).
- Engineering — расширенная, специализированная версия. Включает множество заготовок для инженерных задач.
- Sim — максимальная версия платформы под масштабные проекты (размеров планеты и даже больше) с готовыми механизмами симуляции.
Комментарий недоступен
3D API импортозаместили? Или на пендосском DX/OGL/Vulkan сидим? :)
Ещё бы про язык программирования написал( ͡° ͜ʖ ͡°)
А как вы собираетесь замещать DX, например, если он часть Windows? А openGl Vulkan - вообще открытые
дочитал до оси Z дальше не читал
Это ты еще в Unreal не смотрел :)
Сначала не понял, а потом как понял