Создание приложения на основе шаблона
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:
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:
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:
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-игрока (например, стен комнаты, объектов и т.д.) и вывода предупреждения, если на пути есть препятствие (по мере приближения игрока к препятствию вибрация контроллера становится более интенсивной).
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 будут автоматически переведены в невидимый режим и будут использоваться только для информирования игрока и предотвращения столкновений с объектами в реальной комнате.
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.Запустив приложение, познакомьтесь с механиками в действии, попробуйте перемещение, телепортацию и взаимодействие со всеми интерактивным объектами в сцене.