Unigine::VR Class
Header: | #include <UnigineVR.h> |
The base class for managing virtual reality in UNIGINE.Базовый класс для управления виртуальной реальностью в UNIGINE.
VR InitializationИнициализация виртуальной реальности#
By default, VR is not initialized. To run the engine with VR, you need to specify the -vr_app command-line option on the application start-up.По умолчанию VR не инициализирован. Чтобы запустить движок с помощью VR, вам необходимо указать параметр командной строки -vr_app при запуске приложения.
You cannot launch the deprecated VR plugins (OpenVR
, Varjo
, Oculus
) when the built-in VR is initialized, as it overrides the plugin's functionality. If you try to add a VR plugin after VR initialization, you will get an error message.Вы не можете запустить устаревшие плагины виртуальной реальности ( OpenVR, Varjo, Oculus) при инициализации встроенного VR, поскольку это переопределяет функциональность плагина. Если вы попытаетесь добавить VR-плагин после инициализации VR, вы получите сообщение об ошибке.
Supported Graphics APIsПоддерживаемые графические API#
The following graphics APIs are supported out of the box:Следующие графические API поддерживаются "из коробки":
- DirectX 11DirectX 11
- DirectX 12DirectX 12
- VulkanVulkan
For OpenGL API support, use the corresponding VR plugins (deprecated).Для поддержки OpenGL API используйте соответствующие плагины VR (устарели).
VR Class
Перечисления (Enums)
API#
Имя | Описание |
---|---|
API_NULL = 0 | VR API is not initialized.VR API не инициализирован. |
API_VARJO = 1 | Varjo API.API Varjo. |
API_OPENVR = 2 | OpenVR API.OpenVR API. |
VIEWPORT_TYPE#
EYE_TYPE#
Имя | Описание |
---|---|
EYE_TYPE_LEFT = 0 | Left eye.Левый глаз. |
EYE_TYPE_RIGHT = 1 | Right eye.Правый глаз. |
EYE_TYPE_NUM = 2 | Number of eye types.Количество типов глаз. |
MIRROR_MODE#
WINDOW_MODE#
TRACKING_SPACE#
Члены класса
void setRenderEnabled ( bool enabled = 0 ) #
Console: vr_render_enabled
Устанавливает value indicating if rendering into the head-mounted display is enabled.значение, указывающее, включен ли рендеринг на дисплей, установленный на голове. Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 0.
Аргументы
- bool enabled - Set true to enable рендеринг в HMD; false - to disable it. Значение по умолчанию false.
bool isRenderEnabled() const#
Console: vr_render_enabled
Возвращает value indicating if rendering into the head-mounted display is enabled.значение, указывающее, включен ли рендеринг на дисплей, установленный на голове. Этот параметр находится в следующем файле конфигурации: *.boot .
Возвращаемое значение
true if рендеринг в HMD is enabled; otherwise false. Значение по умолчанию false.void setPeripheralRenderingModeEnabled ( bool enabled = 0 ) #
Console: vr_peripheral_rendering_mode_enabled
Устанавливает value indicating if the peripheral rendering mode is enabled. In this mode, the HMD has two context (peripheral) and two focus displays. You can disable two additional viewports to improve peformance.
This feature is available for the Varjo devices only.значение, указывающее, включен ли режим периферийного отображения. В этом режиме HMD имеет два контекстных (периферийных) и два фокусных дисплея. Вы можете отключить два дополнительных видовых экрана для улучшения производительности.
Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 0.
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Аргументы
- bool enabled - Set true to enable режим периферийного рендеринга; false - to disable it. Значение по умолчанию false.
bool isPeripheralRenderingModeEnabled() const#
Console: vr_peripheral_rendering_mode_enabled
Возвращает value indicating if the peripheral rendering mode is enabled. In this mode, the HMD has two context (peripheral) and two focus displays. You can disable two additional viewports to improve peformance.
This feature is available for the Varjo devices only.значение, указывающее, включен ли режим периферийного отображения. В этом режиме HMD имеет два контекстных (периферийных) и два фокусных дисплея. Вы можете отключить два дополнительных видовых экрана для улучшения производительности.
Этот параметр находится в следующем файле конфигурации: *.boot .
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Возвращаемое значение
true if режим периферийного рендеринга is enabled; otherwise false. Значение по умолчанию false.void setMirrorMode ( VR::MIRROR_MODE mode = 3 ) #
Console: vr_mirror_mode
Устанавливает mirror mode that defines how the mirrored image (i.e. VR image) will be displayed in the target window.зеркальный режим, который определяет, как зеркальное изображение (т.е. изображение виртуальной реальности) будет отображаться в целевом окне. Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 3.
Аргументы
- VR::MIRROR_MODE mode - Одно из следующих значений:
- 0 - черный экран (изображение не отображается).
- 1 - изображение, отрисованное для левого глаза.
- 2 - изображение, отрисованное для правого глаза.
- 3 - стереоизображение (как для левого, так и для правого глаза). (по умолчанию)
VR::MIRROR_MODE getMirrorMode() const#
Console: vr_mirror_mode
Возвращает mirror mode that defines how the mirrored image (i.e. VR image) will be displayed in the target window.зеркальный режим, который определяет, как зеркальное изображение (т.е. изображение виртуальной реальности) будет отображаться в целевом окне. Этот параметр находится в следующем файле конфигурации: *.boot .
Возвращаемое значение
Одно из следующих значений:- 0 - черный экран (изображение не отображается).
- 1 - изображение, отрисованное для левого глаза.
- 2 - изображение, отрисованное для правого глаза.
- 3 - стереоизображение (как для левого, так и для правого глаза). (по умолчанию)
void setWindowMode ( VR::WINDOW_MODE mode = 1 ) #
Console: vr_window_mode
Устанавливает window mode that defines which window will display the mirrored image (i.e. VR image).режим окна, определяющий, в каком окне будет отображаться зеркальное изображение (т.е. изображение виртуальной реальности). Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 1.
Аргументы
- VR::WINDOW_MODE mode - Одно из следующих значений:
- 0 - зеркальное отображение отключено.
- 1 - в главном окне отображается зеркальное изображение. (по умолчанию)
VR::WINDOW_MODE getWindowMode() const#
Console: vr_window_mode
Возвращает window mode that defines which window will display the mirrored image (i.e. VR image).режим окна, определяющий, в каком окне будет отображаться зеркальное изображение (т.е. изображение виртуальной реальности). Этот параметр находится в следующем файле конфигурации: *.boot .
Возвращаемое значение
Одно из следующих значений:- 0 - зеркальное отображение отключено.
- 1 - в главном окне отображается зеркальное изображение. (по умолчанию)
void setTrackingSpace ( VR::TRACKING_SPACE space = 1 ) #
Console: vr_tracking_space
Устанавливает zero pose of the tracking origin.нулевая позиция источника отслеживания. Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 1.
Аргументы
- VR::TRACKING_SPACE space - Одно из следующих значений:
- 0 - сидящий.
- 1 - стоящий. (по умолчанию)
- 2 - необработанный (некалиброванный).
VR::TRACKING_SPACE getTrackingSpace() const#
Console: vr_tracking_space
Возвращает zero pose of the tracking origin.нулевая позиция источника отслеживания. Этот параметр находится в следующем файле конфигурации: *.boot .
Возвращаемое значение
Одно из следующих значений:- 0 - сидящий.
- 1 - стоящий. (по умолчанию)
- 2 - необработанный (некалиброванный).
void setMotionPrediction ( bool prediction = 0 ) #
Console: vr_motion_prediction
Устанавливает value indicating if motion prediction in the Varjo headsets is enabled. When enabled, the engine submits the velocity value from the GBuffer to the Varjo Composer.значение, указывающее, включено ли предсказание движения в гарнитурах Varjo. При включении движок отправляет значение скорости из GBuffer в Varjo Composer. Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 0.
Аргументы
- bool prediction - Set true to enable предсказание движения; false - to disable it. Значение по умолчанию false.
bool isMotionPrediction() const#
Console: vr_motion_prediction
Возвращает value indicating if motion prediction in the Varjo headsets is enabled. When enabled, the engine submits the velocity value from the GBuffer to the Varjo Composer.значение, указывающее, включено ли предсказание движения в гарнитурах Varjo. При включении движок отправляет значение скорости из GBuffer в Varjo Composer. Этот параметр находится в следующем файле конфигурации: *.boot .
Возвращаемое значение
true if предсказание движения is enabled; otherwise false. Значение по умолчанию false.void setMotionPredictionVelocityPrecision ( ) #
Устанавливает factor of velocity scale before packing a floating point value into a 2x8 bit unsigned integer (uint).
This feature is available for the Varjo devices only.коэффициент шкалы скоростей перед упаковкой значения с плавающей запятой в целое число без знака размером 2x8 бит (uint).
Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 32.0f.
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Аргументы
- precision -
Диапазон значений: [eps, inf]. Значение по умолчанию : 32.0f.
getMotionPredictionVelocityPrecision() const#
Возвращает factor of velocity scale before packing a floating point value into a 2x8 bit unsigned integer (uint).
This feature is available for the Varjo devices only.коэффициент шкалы скоростей перед упаковкой значения с плавающей запятой в целое число без знака размером 2x8 бит (uint).
Этот параметр находится в следующем файле конфигурации: *.boot .
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Возвращаемое значение
Диапазон значений: [eps, inf]. Значение по умолчанию : 32.0f.
void setMotionPredictionVelocityTimeDelta ( ) #
Устанавливает factor for optimizing between fast and slow-moving objects. A smaller number works better for fast-moving objects, and vice versa.
This feature is available for the Varjo devices only.коэффициент для оптимизации между быстро и медленно движущимися объектами. Меньшее число лучше подходит для быстро движущихся объектов, и наоборот.
Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 1.0f / 60.0f.
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Аргументы
- delta -
Диапазон значений: [eps, inf]. Значение по умолчанию : 1.0f / 60.0f.
getMotionPredictionVelocityTimeDelta() const#
Возвращает factor for optimizing between fast and slow-moving objects. A smaller number works better for fast-moving objects, and vice versa.
This feature is available for the Varjo devices only.коэффициент для оптимизации между быстро и медленно движущимися объектами. Меньшее число лучше подходит для быстро движущихся объектов, и наоборот.
Этот параметр находится в следующем файле конфигурации: *.boot .
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Возвращаемое значение
Диапазон значений: [eps, inf]. Значение по умолчанию : 1.0f / 60.0f.
void setFoveatedRenderingEnabled ( bool enabled = 1 ) #
Console: vr_foveated_rendering_enabled
Устанавливает value indicating if foveated rendering is enabled. Foveated rendering makes use of the eye tracking functionality in the Varjo headsets to improve performance by reducing the image quality in peripheral areas where the user is not looking. Foveation allows applications to render fewer pixels and achieve a better VR experience.
This feature is available for the Varjo devices only.значение, указывающее, включен ли рендеринг с расширением. Рендеринг с расширением использует функцию отслеживания взгляда в гарнитурах Varjo для повышения производительности за счет снижения качества изображения в периферийных областях, куда пользователь не смотрит. Функция Foveation позволяет приложениям отображать меньше пикселей и получать лучшие впечатления от виртуальной реальности.
Этот параметр находится в следующем файле конфигурации: *.boot .
The default value is 1.
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Аргументы
- bool enabled - Set true to enable точечный рендеринг; false - to disable it. Значение по умолчанию true.
bool isFoveatedRenderingEnabled() const#
Console: vr_foveated_rendering_enabled
Возвращает value indicating if foveated rendering is enabled. Foveated rendering makes use of the eye tracking functionality in the Varjo headsets to improve performance by reducing the image quality in peripheral areas where the user is not looking. Foveation allows applications to render fewer pixels and achieve a better VR experience.
This feature is available for the Varjo devices only.значение, указывающее, включен ли рендеринг с расширением. Рендеринг с расширением использует функцию отслеживания взгляда в гарнитурах Varjo для повышения производительности за счет снижения качества изображения в периферийных областях, куда пользователь не смотрит. Функция Foveation позволяет приложениям отображать меньше пикселей и получать лучшие впечатления от виртуальной реальности.
Этот параметр находится в следующем файле конфигурации: *.boot .
This feature is available for the Varjo devices only.This feature is available for the Varjo devices only.
This feature is available for the Varjo devices only.Эта функция доступна только для устройств Varjo.
Возвращаемое значение
true if точечный рендеринг is enabled; otherwise false. Значение по умолчанию true.const char * getApiName() const#
Возвращает name of the VR API.название VR API.
Возвращаемое значение
название VR API.VR::API getApiType() const#
Возвращает type of the VR API.тип VR API.
Возвращаемое значение
тип VR API.getHMDRefreshRate() const#
Возвращает refresh rate of the head-mounted display.частота обновления дисплея, установленного на голове.
Возвращаемое значение
частота обновления HMD.Math::Vec3 getHandtrackingOffset() const#
Возвращает hand tracking offset (for the Ultraleap device only).смещение отслеживания руки (только для устройства Ultraleap).
Возвращаемое значение
смещение отслеживания руки.bool isPeripheralRenderingModeUsed() const#
Возвращает value indicating if the peripheral rendering is used.значение, указывающее, используется ли периферийный рендеринг.
Возвращаемое значение
true if используется периферийный рендеринг; otherwise false.bool isHMDConnected() const#
Возвращает value indicating if the head-mounted display is connected.значение, указывающее, подключен ли дисплей, установленный на голове.
Возвращаемое значение
true if HMD подключен; otherwise false.bool isUsingFoveatedRendering() const#
Возвращает value indicating if the foveated rendering is used.значение, указывающее, используется ли точечный рендеринг.
Возвращаемое значение
true if используется точечный рендеринг; otherwise false.Ptr<Viewport> getViewport() const#
Возвращает viewport. It can be useful when implementing extra VR logic.окно просмотра. Это может быть полезно при реализации дополнительной логики виртуальной реальности.
Возвращаемое значение
видовой экран.bool isSteamVRRendersControllers() const#
Возвращает значение, указывающее, отображаются ли контроллеры SteamVR. Когда вы получаете доступ к меню SteamVR во время выполнения приложения, контроллеры SteamVR начинают отображаться вместе с контроллерами приложения. Вы можете использовать эту функцию для проверки состояния контроллеров SteamVR и отключения контроллеров приложений, чтобы избежать снижения производительности, вызванного одновременным отображением обоих контроллеров.
Возвращаемое значение
true if отображаются контроллеры SteamVR; otherwise false.static Event<bool> getEventRenderModelsVisibility() const#
Event triggered when the render models visibility is changed. You can subscribe to events via
connect()
and unsubscribe via
disconnect(). You can also use
EventConnection
and
EventConnections
classes for convenience (see examples below).
For more details see the Event Handling article.Событие запускается при изменении видимости рендер моделей. Вы можете подписаться на события через
connect()
и отказаться от подписки через
disconnect(). Вы также можете использовать
EventConnection
и
EventConnections
классы для удобства (см. примеры ниже).
The event handler signature is as follows: myhandler(For more details see the Event Handling article.For more details see the Event Handling article.
For more details see the Event Handling article.Для получения более подробной информации смотрите статью Обработка событий.
Usage Example
// implement the RenderModelsVisibility event handler
void rendermodelsvisibility_event_handler(visible)
{
Log::message("\Handling RenderModelsVisibility event\n");
}
//////////////////////////////////////////////////////////////////////////////
// 1. Multiple subscriptions can be linked to an instance of the EventConnections
// class that you can use later to remove all these subscriptions at once
//////////////////////////////////////////////////////////////////////////////
// create an instance of the EventConnections class
EventConnections rendermodelsvisibility_event_connections;
// link to this instance when subscribing to an event (subscription to various events can be linked)
VR::getEventRenderModelsVisibility().connect(rendermodelsvisibility_event_connections, rendermodelsvisibility_event_handler);
// other subscriptions are also linked to this EventConnections instance
// (e.g. you can subscribe using lambdas)
VR::getEventRenderModelsVisibility().connect(rendermodelsvisibility_event_connections, [](visible) {
Log::message("\Handling RenderModelsVisibility event (lambda).\n");
}
);
// ...
// later all of these linked subscriptions can be removed with a single line
rendermodelsvisibility_event_connections.disconnectAll();
//////////////////////////////////////////////////////////////////////////////
// 2. You can subscribe and unsubscribe via an instance of the EventConnection
// class. And toggle this particular connection off and on, when necessary.
//////////////////////////////////////////////////////////////////////////////
// create an instance of the EventConnection class
EventConnection rendermodelsvisibility_event_connection;
// subscribe to the RenderModelsVisibility event with a handler function keeping the connection
VR::getEventRenderModelsVisibility().connect(rendermodelsvisibility_event_connection, rendermodelsvisibility_event_handler);
// ...
// you can temporarily disable a particular event connection to perform certain actions
rendermodelsvisibility_event_connection.setEnabled(false);
// ... actions to be performed
// and enable it back when necessary
rendermodelsvisibility_event_connection.setEnabled(true);
// ...
// remove subscription to the RenderModelsVisibility event via the connection
rendermodelsvisibility_event_connection.disconnect();
//////////////////////////////////////////////////////////////////////////////
// 3. You can add EventConnection/EventConnections instance as a member of the
// class that handles the event. In this case all linked subscriptions will be
// automatically removed when class destructor is called
//////////////////////////////////////////////////////////////////////////////
// Class handling the event
class SomeClass
{
public:
// instance of the EventConnections class as a class member
EventConnections e_connections;
// A RenderModelsVisibility event handler implemented as a class member
void event_handler(visible)
{
Log::message("\Handling RenderModelsVisibility event\n");
// ...
}
};
SomeClass *sc = new SomeClass();
// ...
// specify a class instance in case a handler method belongs to some class
VR::getEventRenderModelsVisibility().connect(sc->e_connections, sc, &SomeClass::event_handler);
// ...
// handler class instance is deleted with all its subscriptions removed automatically
delete sc;
//////////////////////////////////////////////////////////////////////////////
// 4. Subscribe to an event saving a particular connection ID
// and unsubscribe later by this ID
//////////////////////////////////////////////////////////////////////////////
// instance of the EventConnections class to manage event connections
EventConnections e_connections;
// define a particular connection ID to be used to unsubscribe later
EventConnectionId rendermodelsvisibility_handler_id;
// subscribe to the RenderModelsVisibility event with a lambda handler function and keeping connection ID
rendermodelsvisibility_handler_id = VR::getEventRenderModelsVisibility().connect(e_connections, [](visible) {
Log::message("\Handling RenderModelsVisibility event (lambda).\n");
}
);
// remove the subscription later using the ID
VR::getEventRenderModelsVisibility().disconnect(rendermodelsvisibility_handler_id);
//////////////////////////////////////////////////////////////////////////////
// 5. Ignoring all RenderModelsVisibility events when necessary
//////////////////////////////////////////////////////////////////////////////
// you can temporarily disable the event to perform certain actions without triggering it
VR::getEventRenderModelsVisibility().setEnabled(false);
// ... actions to be performed
// and enable it back when necessary
VR::getEventRenderModelsVisibility().setEnabled(true);
Возвращаемое значение
Event reference.static Event<> getEventAudioSettingsChanged() const#
Event triggered when the audio settings changed. You can subscribe to events via
connect()
and unsubscribe via
disconnect(). You can also use
EventConnection
and
EventConnections
classes for convenience (see examples below).
For more details see the Event Handling article.Событие запускается при изменении настроек аудио. Вы можете подписаться на события через
connect()
и отказаться от подписки через
disconnect(). Вы также можете использовать
EventConnection
и
EventConnections
классы для удобства (см. примеры ниже).
The event handler signature is as follows: myhandler(For more details see the Event Handling article.For more details see the Event Handling article.
For more details see the Event Handling article.Для получения более подробной информации смотрите статью Обработка событий.
Usage Example
// implement the AudioSettingsChanged event handler
void audiosettingschanged_event_handler()
{
Log::message("\Handling AudioSettingsChanged event\n");
}
//////////////////////////////////////////////////////////////////////////////
// 1. Multiple subscriptions can be linked to an instance of the EventConnections
// class that you can use later to remove all these subscriptions at once
//////////////////////////////////////////////////////////////////////////////
// create an instance of the EventConnections class
EventConnections audiosettingschanged_event_connections;
// link to this instance when subscribing to an event (subscription to various events can be linked)
VR::getEventAudioSettingsChanged().connect(audiosettingschanged_event_connections, audiosettingschanged_event_handler);
// other subscriptions are also linked to this EventConnections instance
// (e.g. you can subscribe using lambdas)
VR::getEventAudioSettingsChanged().connect(audiosettingschanged_event_connections, []() {
Log::message("\Handling AudioSettingsChanged event (lambda).\n");
}
);
// ...
// later all of these linked subscriptions can be removed with a single line
audiosettingschanged_event_connections.disconnectAll();
//////////////////////////////////////////////////////////////////////////////
// 2. You can subscribe and unsubscribe via an instance of the EventConnection
// class. And toggle this particular connection off and on, when necessary.
//////////////////////////////////////////////////////////////////////////////
// create an instance of the EventConnection class
EventConnection audiosettingschanged_event_connection;
// subscribe to the AudioSettingsChanged event with a handler function keeping the connection
VR::getEventAudioSettingsChanged().connect(audiosettingschanged_event_connection, audiosettingschanged_event_handler);
// ...
// you can temporarily disable a particular event connection to perform certain actions
audiosettingschanged_event_connection.setEnabled(false);
// ... actions to be performed
// and enable it back when necessary
audiosettingschanged_event_connection.setEnabled(true);
// ...
// remove subscription to the AudioSettingsChanged event via the connection
audiosettingschanged_event_connection.disconnect();
//////////////////////////////////////////////////////////////////////////////
// 3. You can add EventConnection/EventConnections instance as a member of the
// class that handles the event. In this case all linked subscriptions will be
// automatically removed when class destructor is called
//////////////////////////////////////////////////////////////////////////////
// Class handling the event
class SomeClass
{
public:
// instance of the EventConnections class as a class member
EventConnections e_connections;
// A AudioSettingsChanged event handler implemented as a class member
void event_handler()
{
Log::message("\Handling AudioSettingsChanged event\n");
// ...
}
};
SomeClass *sc = new SomeClass();
// ...
// specify a class instance in case a handler method belongs to some class
VR::getEventAudioSettingsChanged().connect(sc->e_connections, sc, &SomeClass::event_handler);
// ...
// handler class instance is deleted with all its subscriptions removed automatically
delete sc;
//////////////////////////////////////////////////////////////////////////////
// 4. Subscribe to an event saving a particular connection ID
// and unsubscribe later by this ID
//////////////////////////////////////////////////////////////////////////////
// instance of the EventConnections class to manage event connections
EventConnections e_connections;
// define a particular connection ID to be used to unsubscribe later
EventConnectionId audiosettingschanged_handler_id;
// subscribe to the AudioSettingsChanged event with a lambda handler function and keeping connection ID
audiosettingschanged_handler_id = VR::getEventAudioSettingsChanged().connect(e_connections, []() {
Log::message("\Handling AudioSettingsChanged event (lambda).\n");
}
);
// remove the subscription later using the ID
VR::getEventAudioSettingsChanged().disconnect(audiosettingschanged_handler_id);
//////////////////////////////////////////////////////////////////////////////
// 5. Ignoring all AudioSettingsChanged events when necessary
//////////////////////////////////////////////////////////////////////////////
// you can temporarily disable the event to perform certain actions without triggering it
VR::getEventAudioSettingsChanged().setEnabled(false);
// ... actions to be performed
// and enable it back when necessary
VR::getEventAudioSettingsChanged().setEnabled(true);
Возвращаемое значение
Event reference.static Event<int> getEventDeviceRenderModelChanged() const#
Event triggered when the render model of the VR device is changed. You can subscribe to events via
connect()
and unsubscribe via
disconnect(). You can also use
EventConnection
and
EventConnections
classes for convenience (see examples below).
For more details see the Event Handling article.Событие запускается при при изменении рендер модели VR устройства. Вы можете подписаться на события через
connect()
и отказаться от подписки через
disconnect(). Вы также можете использовать
EventConnection
и
EventConnections
классы для удобства (см. примеры ниже).
The event handler signature is as follows: myhandler(For more details see the Event Handling article.For more details see the Event Handling article.
For more details see the Event Handling article.Для получения более подробной информации смотрите статью Обработка событий.
Usage Example
// implement the DeviceRenderModelChanged event handler
void devicerendermodelchanged_event_handler(vr_device_number)
{
Log::message("\Handling DeviceRenderModelChanged event\n");
}
//////////////////////////////////////////////////////////////////////////////
// 1. Multiple subscriptions can be linked to an instance of the EventConnections
// class that you can use later to remove all these subscriptions at once
//////////////////////////////////////////////////////////////////////////////
// create an instance of the EventConnections class
EventConnections devicerendermodelchanged_event_connections;
// link to this instance when subscribing to an event (subscription to various events can be linked)
VR::getEventDeviceRenderModelChanged().connect(devicerendermodelchanged_event_connections, devicerendermodelchanged_event_handler);
// other subscriptions are also linked to this EventConnections instance
// (e.g. you can subscribe using lambdas)
VR::getEventDeviceRenderModelChanged().connect(devicerendermodelchanged_event_connections, [](vr_device_number) {
Log::message("\Handling DeviceRenderModelChanged event (lambda).\n");
}
);
// ...
// later all of these linked subscriptions can be removed with a single line
devicerendermodelchanged_event_connections.disconnectAll();
//////////////////////////////////////////////////////////////////////////////
// 2. You can subscribe and unsubscribe via an instance of the EventConnection
// class. And toggle this particular connection off and on, when necessary.
//////////////////////////////////////////////////////////////////////////////
// create an instance of the EventConnection class
EventConnection devicerendermodelchanged_event_connection;
// subscribe to the DeviceRenderModelChanged event with a handler function keeping the connection
VR::getEventDeviceRenderModelChanged().connect(devicerendermodelchanged_event_connection, devicerendermodelchanged_event_handler);
// ...
// you can temporarily disable a particular event connection to perform certain actions
devicerendermodelchanged_event_connection.setEnabled(false);
// ... actions to be performed
// and enable it back when necessary
devicerendermodelchanged_event_connection.setEnabled(true);
// ...
// remove subscription to the DeviceRenderModelChanged event via the connection
devicerendermodelchanged_event_connection.disconnect();
//////////////////////////////////////////////////////////////////////////////
// 3. You can add EventConnection/EventConnections instance as a member of the
// class that handles the event. In this case all linked subscriptions will be
// automatically removed when class destructor is called
//////////////////////////////////////////////////////////////////////////////
// Class handling the event
class SomeClass
{
public:
// instance of the EventConnections class as a class member
EventConnections e_connections;
// A DeviceRenderModelChanged event handler implemented as a class member
void event_handler(vr_device_number)
{
Log::message("\Handling DeviceRenderModelChanged event\n");
// ...
}
};
SomeClass *sc = new SomeClass();
// ...
// specify a class instance in case a handler method belongs to some class
VR::getEventDeviceRenderModelChanged().connect(sc->e_connections, sc, &SomeClass::event_handler);
// ...
// handler class instance is deleted with all its subscriptions removed automatically
delete sc;
//////////////////////////////////////////////////////////////////////////////
// 4. Subscribe to an event saving a particular connection ID
// and unsubscribe later by this ID
//////////////////////////////////////////////////////////////////////////////
// instance of the EventConnections class to manage event connections
EventConnections e_connections;
// define a particular connection ID to be used to unsubscribe later
EventConnectionId devicerendermodelchanged_handler_id;
// subscribe to the DeviceRenderModelChanged event with a lambda handler function and keeping connection ID
devicerendermodelchanged_handler_id = VR::getEventDeviceRenderModelChanged().connect(e_connections, [](vr_device_number) {
Log::message("\Handling DeviceRenderModelChanged event (lambda).\n");
}
);
// remove the subscription later using the ID
VR::getEventDeviceRenderModelChanged().disconnect(devicerendermodelchanged_handler_id);
//////////////////////////////////////////////////////////////////////////////
// 5. Ignoring all DeviceRenderModelChanged events when necessary
//////////////////////////////////////////////////////////////////////////////
// you can temporarily disable the event to perform certain actions without triggering it
VR::getEventDeviceRenderModelChanged().setEnabled(false);
// ... actions to be performed
// and enable it back when necessary
VR::getEventDeviceRenderModelChanged().setEnabled(true);
Возвращаемое значение
Event reference.Math::ivec2 getHMDResolution ( VR::VIEWPORT_TYPE viewport_type = Enum.VR.VIEWPORT_TYPE.CONTEXT ) const#
Returns the current resolution of the head-mounted display. For HMDs having context (peripheral) and focus displays, you should specify the viewport type.Возвращает текущее разрешение дисплея, установленного на голове. Для HMDS, имеющих контекстные (периферийные) и фокусные дисплеи, следует указать тип видового экрана.Аргументы
- VR::VIEWPORT_TYPE viewport_type - Type of the viewport (for HMDs having context (peripheral) and focus displays).Тип видового экрана (для HMDS, имеющих контекстные (периферийные) и фокусные дисплеи).
Возвращаемое значение
HMD resolution.Разрешение HMD.bool hasFeatureMixedReality ( ) const#
Returns a value indicating if the mixed reality mode is available. Mixed reality enables you to combine real-world view from front-facing cameras mounted on the headset with the VR image rendered. This feature is available for the Varjo devices only.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureEyeTracking ( ) const#
Returns a value indicating if eye tracking is available. This feature is available for the Varjo devices only.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureTrackingSpaceRaw ( ) const#
Returns a value indicating if poses can be provided in the coordinate system defined by the tracker driver.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureMotionPrediction ( ) const#
Returns a value indicating if motion prediction is available. This feature is available for the Varjo devices only. It allows the engine to submit the velocity from the GBuffer to the Varjo Composer.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureFoveatedRendering ( ) const#
Returns a value indicating if foveated rendering is available. This feature is available for the Varjo devices only. Foveated rendering enhances performance by using the eye tracking functionality in Varjo headsets: it decreases the image quality in the peripheral areas where the user is not looking. Foveation allows applications to render fewer pixels and achieve a better VR experience.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureReportProximitySensor ( ) const#
Returns a value indicating if proximity sensor reporting is available.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureSupportForTreadmill ( ) const#
Returns a value indicating if the user treadmill support is available.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureSupportForBaseStations ( ) const#
Returns a value indicating if the base stations support is available.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureSupportForTrackers ( ) const#
Returns a value indicating if support for trackers is available.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.bool hasFeatureSupportForRenderModelComponents ( ) const#
Returns a value indicating if support for render model components is available.If VR is not initialized, the function will return false.If VR is not initialized, the function will return false.
If VR is not initialized, the function will return false.Если VR не инициализирован, функция вернет false.
Возвращаемое значение
true if the feature is available; otherwise, false.true, если функция доступна; в противном случае - false.void resetZeroPose ( ) const#
Sets the zero pose to the current tracker position.Устанавливает нулевую позицию в текущее положение трекера.Последнее обновление:
16.08.2024
Помогите сделать статью лучше
Была ли эта статья полезной?
(или выберите слово/фразу и нажмите Ctrl+Enter