This page has been translated automatically.
Основы UNIGINE
1. Введение
2. Виртуальные миры и работа с ними
3. Подготовка 3D моделей
4. Материалы
5. Камеры и освещение
6. Реализация логики приложения
7. Создание кат-сцен и запись видео
8. Подготовка проекта к релизу
9. Физика
10. Основы оптимизации
11. ПРОЕКТ2: Шутер от первого лица
12. ПРОЕКТ3: Аркадная гонка по пересеченной местности от 3-го лица

Создание приложения на основе шаблона

Getting Started
Начало работы#

UNIGINE has a ready-to-use template for making VR projects in C++. It supports Oculus Rift and HTC Vive / Vive Pro (OpenXR) out of the box. It also provides a sample project (VR Sample). Here, you will find a set of 3D models of all popular VR controllers and the implementation of basic mechanics such as grabbing and throwing objects, pressing buttons, opening/closing drawers, and a lot more.UNIGINE предлагает готовый шаблон для разработки на C++ под VR, позволяющий сразу приступить к созданию собственных проектов. Он поддерживает Oculus Rift, HTC Vive / Vive Pro (OpenXR) "из коробки". Кроме того, имеется также пример проекта (VR Sample), который можно взять за основу для вашего собственного VR-приложения. Здесь вы найдете набор 3D-моделей популярных контроллеров VR, а также реализацию основных механик, таких как захват и толкание объектов, нажатие кнопок, открытие / закрытие ящиков и многое другое.

The world in this sample project has its settings optimized for best performance in VR.Мир в этом примере имеет свои настройки, оптимизированные для наилучшей производительности в VR.

Both the template and the sample project are created using the Component System — components attached to objects determine their functionality.Шаблон, как и пример проекта, созданы с использованием Компонентной системы, поэтому функциональность каждого объекта определяется набором добавленных к нему компонентов.

You can extend an object's functionality simply by assigning it more components. For example, the laser pointer object in the VR Sample has the following components attached:Вы можете расширить функциональность того или иного объекта, просто добавив к нему дополнительные компоненты. Например, к объекту лазерной указки прикреплены следующие компоненты:

  • ObjMovable — enables grabbing and throwing an objectObjMovable – позволяет хватать и бросать объект
  • ObjLaserPointer — enables casting a ray of light by the objectObjLaserPointer – позволяет включать луч света лазерной указки

You can also implement custom components to extend functionality.Кроме того, можно написать собственные компоненты, реализующие тот или иной функционал и расширить возможности шаблона.

The main features of the VR Sample:Базовый функционал сэмпла:

  • VR support (OpenXR-compatible devices including Oculus Rift, HTC Vive, and others)Поддержка VR (Oculus Rift и HTC Vive/OpenXR)
  • A set of physical objects that can be manipulated via controllers (physical objects, buttons, drawers)Набор физических объектов, которыми можно управлять с помощью контроллеров (физические объекты, кнопки, переключатель, выдвижной ящик)
  • An interactive laser pointer objectИнтерактивный объект "лазерная указка"
  • Teleportation around the sceneТелепортация по сцене
  • GUIПользовательский интерфейс
  • Interaction with GUI objects via controllersВзаимодействие с объектами графического интерфейса через контроллеры

Open SDK Browser, go to the Samples tab, and select Demos.Откройте SDK Browser, перейдите на вкладку Samples и выберите Demos.

Find the VR Sample in the Available section and click Install. After installation, the demo will appear in the Installed section, and you can click Copy as Project to create a project based on this sample.Найдите VR Sample в разделе Available и нажмите Install. После установки демо-проект появится в разделе Installed, и вы можете нажать Copy as Project, чтобы создать проект на основе этого демо-проекта.

In the Create New Project window that opens, enter the name for your new VR project in the corresponding field and click Create New Project.В открывшемся окне Create New Project введите название вашего нового VR-проекта в соответствующее поле и нажмите Create New Project.

To open our new VR project in an IDE, select it on the Projects tab of the UNIGINE SDK Browser and click Open Code IDE.Чтобы открыть свой VR-проект в среде IDE, выберите его на вкладке Projects в браузере UNIGINE SDK и нажмите Open Code IDE.

Structure Overview
Краткий обзор структуры#

As the IDE opens, you can see, that the project contains a lot of different classes. The brief overview below will give you a hint on what are they all about.Открыв IDE, вы увидите, что проект содержит множество различных классов. Краткий обзор ниже даст вам общее представление о них.

VRInteractable Class
Интерактивный класс VR#

This is a base class for all objects that you can interact with. It defines a basic set of interactions, in other words: here you define what can a user do with your object. You can add your own type of interaction here.Это базовый класс для всех объектов, с которыми вы можете взаимодействовать. Он определяет базовый набор взаимодействий, другими словами: здесь вы определяете, что пользователь может делать с вашим объектом. Здесь вы можете добавить свой собственный тип взаимодействия.

The following component classes are inherited from the VRInteractable:Следующие классы компонентов унаследованы от VRInteractable:

ObjMovableThis component type can be used for all objects, that can be grabbed, held and thrown (it can be a ball, a pistol, whatever you can take, carry and drop).Используется для всех предметов, которые можно хватать, удерживать и бросать (это может быть мяч, пистолет, все, что вы можете взять, нести и бросить).
ObjHandleThis component type can be used for all objects, that can be turned or moved while being held (various handles, levers, valves, etc.).Используется для всех предметов, которые можно поворачивать или перемещать, удерживая их в руках (различные ручки, рычаги и т.д.).
ObjSwitchThis component type can be used for all objects, that can be switched by grabbing (all sorts of buttons and on-off switches, including rotary ones).Используется для всех объектов, которые можно переключать с помощью захвата (всевозможные кнопки и переключатели, в том числе поворотные).
ObjLaserPointerThis component enables casting a laser ray by the object.
Примечание
The laser pointer object in the VR Sample world has ObjMovable and ObjLaserPointer components attached.The laser pointer object in the VR Sample world has ObjMovable and ObjLaserPointer components attached.
The laser pointer object in the VR Sample world has ObjMovable and ObjLaserPointer components attached.
Этот компонент позволяет направлять лазерный луч на объект.
Примечание
The laser pointer object in the VR Sample world has ObjMovable and ObjLaserPointer components attached.Объекту лазерной указки в сэмпле назначены компоненты ObjMovable и ObjLaserPointer.

VRPlayer Class
Класс VRPlayer#

This is a base class for all players. It contains declaration of baseline controls, common basic player operations, event management etc.Это базовый класс для всех игроков. Он содержит описание базовых элементов управления, общих базовых операций игрока, управления обработкой событий и т.д.

The following component classes are inherited from the VRPlayer:Следующие классы компонентов унаследованы от VRPlayer:

VRPlayerPCThis component implements a player with standard PC input devices (keyboard + mouse or Xbox360 controller) for VR emulation and contains all related settings and methods.Этот компонент реализует игрока со стандартными устройствами ввода для ПК (клавиатура + мышь или контроллер Xbox360) для эмуляции виртуальной реальности и содержит все соответствующие настройки и методы.
VRPlayerVR This is a base class implementing common functionality for supported VR devices and contains their common parameters.Это базовый класс, реализующий общие функциональные возможности для поддерживаемых VR-устройств и содержащий их общие параметры.

VRPlayerSpawner Class
Класс VRPlayerSpawner#

This class registers all VRPlayer components in the Component System. It checks that VR is initialized and spawns the VRPlayerVR. In case if VR was not initialized, a VRPlayerPC is spawned.Этот класс регистрирует все компоненты VRPlayer в системе компонентов. Он проверяет, что VR инициализирован, и генерирует VRPlayerVR. В случае, если VR не был инициализирован, генерируется VRPlayerPC.

MenuBaseGUI Class
Класс MenuBaseGUI#

This is a base class for all graphic user interfaces (GUI).Это базовый класс для всех графических пользовательских интерфейсов (GUI).

The following component classes are inherited from the MenuBaseGUI:Следующие классы компонентов унаследованы от MenuBaseGUI:

Примечание
These components can be attached to GUI objects only.Эти компоненты могут быть назначены только GUI-объектам.
HandSampleMenuGui This component implements initialization of widgets for the menu that is attached to a controller.Этот компонент реализует инициализацию виджетов для меню, привязанного к контроллеру.
WorldMenuSampleGui This component implements initialization of widgets for the world menu.Этот компонент реализует инициализацию виджетов для глобального меню.

Framework
Фреймворк#

Framework includes the Component System which implements the core functionality of components and a set of utility classes and functions used for playing sounds, auxiliary math functions, event system implementation.Фреймворк включает в себя Систему компонентов, которая реализует основные функциональные возможности компонентов, а также набор служебных классов и функций, используемых для воспроизведения звуков, вспомогательных математических функций, реализации системы обработки событий.

Triggers Class
Класс Triggers#

Triggers is a framework class used to mark room obstacles for the VR Player (e.g. room walls, objects, etc.) and give a warning if there is an obstacle on the way (as the player gets closer to an obstacle, controllers' vibration becomes more intense).Triggers - это класс фреймворка, используемый для обозначения препятствий в помещении для VR-игрока (например, стен комнаты, объектов и т.д.) и вывода предупреждения, если на пути есть препятствие (по мере приближения игрока к препятствию вибрация контроллера становится более интенсивной).

Примечание
Obstacles are not available for VRPlayerPC.Использование препятствий недоступны для VRPlayerPC.

You can simply create primitives for walls and objects in your room and add them as children to the node dummy named Obstacles, which is a child of the VR dummy node (see the hierarchy in the Editor below).Можно просто создать примитивы для стен и объектов в своей комнате и добавить их в качестве дочерних элементов к Node Dummy с именем Obstacles, которая является дочерним элементом VR dummy node (смотрите иерархию в редакторе ниже).

All children of the Obstacles node will be automatically switched to invisible mode and will be used only to inform the player and prevent collisions with objects in the real room.Все дочерние элементы ноды Obstacles будут автоматически переведены в невидимый режим и будут использоваться только для информирования игрока и предотвращения столкновений с объектами в реальной комнате.

Примечание
Primitives used to mark obstacles must have their first surface (the one with the 0 index) named as "box", "sphere", "capsule" or "cylinder" in order to be properly converted into corresponding trigger volumes.У примитивов, используемых для обозначения препятствий, первая поверхность (с индексом 0) должна называться "box", "sphere", "capsule" или "cylinder", чтобы их можно было правильно преобразовать в соответствующие триггеры.

Setting Up a Device and Running
Выбор устройства и запуск#

Suppose you have successfully installed your Head-Mounted Display (HMD) of choice (please visit Oculus Rift Setup or HTC Vive Setup if you did not). If you are having difficulties getting your HTC Vive to work, this Troubleshooting guide might be helpful.Предположим, вы успешно установили выбранный головной дисплей (HMD). Пожалуйста, посетите Oculus Rift Setup или HTC Vive Setup, если вы этого не сделали. При возникновении проблем с началом работы HTC Vive, может оказаться полезным это руководство по устранению неполадок.

Major VR devices (OpenXR-compatible) are supported out of the box.Основные устройства виртуальной реальности (OpenXR-совместимые) поддерживаются "из коробки".

So, we're ready to see the template in action, let's build our application for the first time.Итак, мы готовы посмотреть наш шаблон в действии, давайте для начала соберем наше приложение.

Don't forget to set the appropriate platform and configuration settings for the project before compiling your code in Visual Studio.Не забудьте установить соответствующую платформу и параметры конфигурации для вашего проекта, прежде чем компилировать код в Visual Studio.

Build your application in Visual Studio (Build -> Build Solution) or otherwise, and launch it by selecting the project on the Projects tab of the UNIGINE SDK Browser and clicking Run.Соберите приложение в Visual Studio (Build -> Build Solution) или иным способом и запустите его, выбрав проект на вкладке Projects в браузере UNIGINE SDK и нажав Run.

Before running your application via the UNIGINE SDK Browser make sure, that appropriate Customize Run Options (Debug version in our case) are selected, by clicking an ellipsis under the Run button.Перед запуском приложения через браузер UNIGINE SDK убедитесь, что в Customize Run Options выбрана опция соответствующая типу сборки, который мы установили в IDE (в нашем случае Debug), для этого нажмите многоточие под кнопкой Run.

As the application starts, learn about basic mechanics, grab and throw objects, try to teleport and interact with objects in the scene.Запустив приложение, познакомьтесь с механиками в действии, попробуйте перемещение, телепортацию и взаимодействие со всеми интерактивным объектами в сцене.

Последнее обновление: 06.11.2024
Build: ()