complete the plugin configuration, settings, and overrides, sections

This commit is contained in:
Mamadou Babaei
2024-08-16 18:02:16 +02:00
parent 8f4374a008
commit 3ba1b1d7b8
61 changed files with 921 additions and 47 deletions
+20 -20
View File
@@ -21,30 +21,30 @@ Welcom to the SenseGlove Unreal Engine Handbook!
- [SenseCom on Microsoft Windows](getting-started/sensecom/microsoft-windows.md)
- [Enabling XR_EXT_hand_tracking on VR Headsets](getting-started/enabling-xr-ext-hand-tracking-vr-headsets/README.md)
- [Setup the SGPawn]()
- [Setup a Virutal Hand Model]()
- [Setup a Virtual Hand Model]()
- [Setup the Grab System]()
- [Setup the Touch System]()
# ⚙️ The Settings System
# ⚙️ Plugin Configuration
- [Plugin Settings](plugin-settings/README.md)
- [Initialization]()
- [Game User Settings]()
- [Hardware Benchamrk]()
- [Tracking]()
- [Glove Tracking]()
- [Hand Tracking]()
- [HMD Tracking]()
- [Wrist Tracking]()
- [Debugging]()
- [Virtual Hand]()
- [Animation]()
- [Debugging]()
- [Grab]()
- [Haptics]()
- [Mesh]()
- [Touch]()
- [Overriding Settings]()
- [Plugin Settings](plugin-configuration/plugin-settings/README.md)
- [Initialization](plugin-configuration/plugin-settings/initialization/README.md)
- [Game User Settings](plugin-configuration/plugin-settings/game-user-settings/README.md)
- [Hardware-benchmarking](plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking.md)
- [Tracking](plugin-configuration/plugin-settings/tracking/README.md)
- [Glove-tracking](plugin-configuration/plugin-settings/tracking/glove-tracking.md)
- [Hand-tracking](plugin-configuration/plugin-settings/tracking/hand-tracking.md)
- [HMD-tracking](plugin-configuration/plugin-settings/tracking/hmd-tracking.md)
- [Wrist-tracking](plugin-configuration/plugin-settings/tracking/wrist-tracking/README.md)
- [Debugging](plugin-configuration/plugin-settings/tracking/wrist-tracking/debugging.md)
- [Virtual Hand](plugin-configuration/plugin-settings/virtual-hand/README.md)
- [Animation](plugin-configuration/plugin-settings/virtual-hand/animation.md)
- [Debugging](plugin-configuration/plugin-settings/virtual-hand/debugging.md)
- [Grab](plugin-configuration/plugin-settings/virtual-hand/grab.md)
- [Haptics](plugin-configuration/plugin-settings/virtual-hand/haptics.md)
- [Mesh](plugin-configuration/plugin-settings/virtual-hand/mesh.md)
- [Touch](plugin-configuration/plugin-settings/virtual-hand/touch.md)
- [Overriding Settings](plugin-configuration/overriding-settings/README.md)
# 🛠️ Advanced Topics
@@ -0,0 +1,11 @@
# Overriding The Plugin Settings
The override system allows you to customize and override the global settings for the SenseGlove Unreal Engine Plugin through specific subcomponents where applicable. This feature enables more precise control over the behavior of individual components within your project.
## The SenseGlove Virtual Hand Component
The Virtual Hand Component provides the ability to override certain aspects of the global plugin settings, allowing for tailored interactions and behaviors specific to virtual hands. For more details, refer to [the Virtual Hand Settings section](../plugin-settings/virtual-hand/#overriding-the-virtual-hand-settings-from-the-virtual-hand-component).
## The SenseGlove Wrist Tracker Component
The Wrist Tracker Component enables overriding of specific global plugin settings, providing flexibility in wrist tracking configurations. For additional information, see [the Wrist-tracker Settings section](../plugin-settings/tracking/wrist-tracking/#overriding-the-wrist-tracking-settings-from-the-wrist-tracker-component).
@@ -1,4 +1,4 @@
# Plugin Settings
# The Plugin Settings
Once [the SenseGlove Unreal Engine Plugin is enabled](../getting-started/plugin-verify-version-enable/) the plugin settings can be accessed through `Edit > Project Setting...` inside your project's Unreal Editor.
@@ -7,3 +7,12 @@ Once [the SenseGlove Unreal Engine Plugin is enabled](../getting-started/plugin-
The SenseGlove Unreal Engine Plugin offers fine-grained control over various aspects of its functionality through its settings system. It also allows you to override specific settings from subcomponents when possible. In the following sections, we will explore the settings and the override system in detail.
![Plugin Settings - The SenseGlove Unreal Engine Plugin Settings](senseglove-plugin-settings.png "Plugin Settings - The SenseGlove Unreal Engine Plugin Settings")
## Settings Categories
The plugin settings are organized into four main categories, and each of those might contain its own sub-categories. These main categories are as follows:
- [The Initialization Settings](initialization/)
- [The Game User Settings](game-user-settings/)
- [The Tracking Settings](tracking/)
- [The Virtual Hand Settings](virtual-hand/)
@@ -0,0 +1,5 @@
# The Game User Settings
The Game User Settings control the behavior of the SenseGlove instance of [`UGameUserSettings`](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/GameFramework/UGameUserSettings). The `USGGameUserSettings` class extends the functionality of `UGameUserSettings` to provide enhanced customization options specifically for applications that utilize the SenseGlove Unreal Engine Plugin.
![The Game User Settings](game-user-settings.png "The Game User Settings")
@@ -0,0 +1,23 @@
# The Hardware-benchmarking Settings
The settings in this section are utilized by the `USGGameUserSettings::SetEngineScalabilitySettings()` method when the `Scalability` parameter is set to `ESGEngineScalabilitySettings::Auto`. When the engine scalability settings set to auto the graphics settings are determined by running a hardware benchmark by calling the [`UGameUserSettings::RunHardwareBenchmark()`](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/GameFramework/UGameUserSettings/RunHardwareBenchmark). The settings listed here are basically the parameters passed to `UGameUserSettings::RunHardwareBenchmark()`.
![The Hardware-benchmarking Settings](hardware-benchmarking-settings.png "The Hardware-benchmarking Settings")
## WorkScale
The `WorkScale` parameter determines the intensity of the benchmark test. Higher values result in more intensive testing, which can help achieve more accurate scalability settings.
The default value is `10`.
## CPUMultiplier
The `CPUMultiplier` parameter allows you to adjust the impact of CPU performance on the benchmark results. Increasing this value will emphasize CPU performance more heavily in determining scalability settings.
The default value is `1.0f`.
## GPUMultiplier
The `GPUMultiplier` parameter lets you modify the influence of GPU performance on the benchmark outcomes. A higher value will increase the weight of GPU performance in setting scalability.
The default value is `1.0f`.
@@ -0,0 +1,11 @@
# The Plugin Initialization Settings
The Initialization Settings section is designed to control how the SenseGlove Unreal Engine Plugin is initialized, allowing you to customize its behavior to suit your project's needs.
![The Plugin Initialization Settings](initialization-settings.png "The Plugin Initialization Settings")
## bValidateIfDefaultClassesAreSGCompliant
If enabled, the plugin tries to check and validate whether the default for classes such as GameMode, GameInstance, etc. are indeed SenseGlove classes or SenseGlove-derived classes. If not, it attempts to set them. If you don't like this behavior for whatever reason, consider disabling this option.
By default, this option is disabled.
@@ -0,0 +1,41 @@
# The Tracking Settings
The tracking settings are primarily used by the SenseGlove `Tracking` module and are divided into various subsections, each focusing on a specific aspect of tracking. These subsections, along with the other settings directly provided by this section, provide comprehensive control over the tracking functionalities. The subsections are as follows:
- [The Glove-tracking Settings](glove-tracking.md)
- [The Hand-tracking Settings](hand-tracking.md)
- [The HMD-tracking Settings](hmd-tracking.md)
- [The Wrist-tracking Settings](wrist-tracking/)
![The Tracking Settings](tracking-settings.png "The Tracking Settings")
## bFallbackToHandTrackingIfNoGloveDetected
Determines whether to fallback to hand-tracking, or not, when no SenseGlove device is detected:
- If disabled, only a real glove will be tracked.
- If enabled, the plugin will fall back to hand-tracking when it's available and supported by the HMD device.
> [!NOTE]
> Disabling this option hides the hand-tracking settings section, while enabling
> it makes the hand-tracking settings visible.
## Glove Tracking Settings
Provides the tracking settings related to SenseGlove devices.
## Hand Tracking Settings
The settings in this section only affects the hand-tracking functionality when it's enabled and available. When enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course without the haptics feedback provided by the SenseGlove devices.
> [!IMPORTANT]
> If you don't see the hand-tracking settings, ensure that the option
> `bFallbackToHandTrackingIfNoGloveDetected` is checked.
## HMD Tracking Settings
Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality.
## Wrist Tracking Settings
Provides the tracking settings applicable to wrist-tracking hardware.
@@ -0,0 +1,11 @@
# The Glove-tracking Settings
Provides the tracking settings related to SenseGlove devices.
![The Glove-tracking Settings](glove-tracking-settings.png "The Glove-tracking Settings")
## GloveConnectivityCheckInterval
The interval in which the tracking module checks for glove connectivity.
The default is `16.666666f` which means `60` times per second.
@@ -0,0 +1,17 @@
# The Hand-tracking Settings
The settings in this section only affects the hand-tracking functionality when it's enabled and available. When enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course without the haptics feedback provided by the SenseGlove devices.
> [!IMPORTANT]
> If you don't see the hand-tracking settings, ensure that the option
> `bFallbackToHandTrackingIfNoGloveDetected` is checked.
![The Hand-tracking Settings](hand-tracking-settings.png "The Hand-tracking Settings")
## bUseMoreSpecificMotionSourceNames
If disabled, (the default) the motion sources for hand tracking will be of the form `[Left|Right][Keypoint]`. If enabled, they will be of the form `HandTracking[Left|Right][Keypoint]`. It is recommended to be enabled to avoid collisions between motion sources from different device types.
## bSupportLegacyControllerMotionSources
If enabled, hand tracking supports the `Left` and `Right` legacy motion sources. If disabled, it does not. It is recommended to be disabled unless you need legacy compatibility in older unreal projects.
@@ -0,0 +1,9 @@
# The HMD-tracking Settings
Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality.
![The HMD-tracking Settings](hmd-tracking-settings.png "The HMD-tracking Settings")
## ViveHMDDetectionPriority
Determines which VIVE HMD to prioritize for detection, as the current detection mechanism cannot differentiate between the HTC VIVE Focus 3 and the HTC VIVE XR Elite.
@@ -0,0 +1,77 @@
# The Wrist-tracking Settings
Provides the tracking settings applicable to wrist-tracking hardware.
![The Wrist-tracking Settings](wrist-tracking-settings.png "The Wrist-tracking Settings")
## TrackingHardware
Specifies the type of tracking hardware to use. If set to `None`, the plugin attempts at HMD auto-detection to automatically specify a compatible tracking hardware. If set to `Custom`, aby desired location and rotation can be specified.
> [!CAUTION]
> HMD auto-detection is currently an experimental feature and may fail because
> HMD vendors occasionally change the properties utilized by the plugin for HMD
> detection. If you encounter issues, such as incorrect tracker offsets, it is
> recommended to explicitly specify the tracking hardware.
> [!CAUTION]
> Due to highly experimental nature of the HMD auto-detection feature, the HTC
> VIVE Focus 3 and HTC XR Elite cannot be distinguished from each other in the
> current iteration. However, since the tracker devices and offsets for both
> headsets are the same, this should not affect performance or functionality.
> The order in which the HMD is detected can be specified through the
> [HMD-tracker setting `ViveHMDDetectionPriority`](../hmd-tracking.html#vivehmddetectionpriority).
## TrackingHardwareLocationOffsetLeftHand
Sets a custom location offset for left hand's wrist-tracking hardware.
> [!NOTE]
> This setting is visible and valid only if TrackingHardware is set to `Custom`.
## TrackingHardwareLocationOffsetRightHand
Sets a custom location offset for right hand's wrist-tracking hardware.
> [!NOTE]
> This setting is visible and valid only if TrackingHardware is set to `Custom`.
## TrackingHardwareRotationOffsetLeftHand
Sets a custom rotation offset for left hand's wrist-tracking hardware.
> [!NOTE]
> This setting is visible and valid only if TrackingHardware is set to `Custom`.
## TrackingHardwareRotationOffsetRightHand
Sets a custom rotation offset for right hand's wrist-tracking hardware.
> [!NOTE]
> This setting is visible and valid only if TrackingHardware is set to `Custom`.
## LeftHandMotionSource
Determines the motion source for the left hand. For Oculus HMDs, this is usually `Left`, and for VIVE HMDs, it's typically `LeftFoot`.
> [!NOTE]
> For VIVE devices using SteamVR, the motion source hardware for the left hand
> can be specified by the user through the SteamVR app.
## RightHandMotionSource
Determines the motion source for the right hand. For Oculus HMDs, this is usually `Right`, and for VIVE HMDs, it's typically `RightFoot`.
> [!NOTE]
> For VIVE devices using SteamVR, the motion source hardware for the right hand
> can be specified by the user through the SteamVR app.
## DebuggingSettings
Provides [debugging options](debugging.md) for visually debugging the wrist tracker.
## Overriding the Wrist-tracking Settings from the Wrist Tracker Component
It's possible to override some of the wrist tracker settings through the details panel of any specific Wrist Tracker Component. When overriden by enabling the `SenseGlove > Wrist Tracking Settings Override > Override Plugin Settings` option inside the details panel, these settings take precedence over the plugin's global settings.
![The Wrist-tracking Settings Overrides](wrist-tracking-settings-overrides.png "The Wrist-tracking Settings Overrides")
@@ -0,0 +1,13 @@
# The Wrist-tracking Debugging Settings
Provides debugging options for visually debugging the wrist tracker.
![The Wrist-tracking Debugging Settings](wrist-tracking-debugging-settings.png "The Wrist-tracking Debugging Settings")
## bDrawDebugWristTracker
If enabled, visualizes the debug wrist trackers where possible.
## DebugWristTrackerSettings
Visible and valid only if `bDrawDebugGizmo` is enabled.
@@ -0,0 +1,50 @@
# The Virtual Hand Settings
The Virtual Hand Settings are utilized by various SenseGlove modules such as `Debug`, `Editor`, `Tracking`, and the main module. These settings are divided into several subsections, each focusing on a specific aspect of the virtual hand functionality. Together with the settings provided directly in this section, they offer comprehensive control over any system or component that utilizes the virtual hand. The subsections are as follows:
- [The Animation Settings](animation.md)
- [The Debugging Settings](debugging.md)
- [The Grab Settings](grab.md)
- [The Haptics Settings](haptics.md)
- [The Mesh Settings](mesh.md)
- [The Touch Settings](touch.md)
![The Virtual Hand Settings](virtual-hand-settings.png "The Virtual Hand Settings")
## bVisibleWhenHandDataUnavailable
Used by the Virtual Hand Component to determine its visibility when no hand data, either from a SenseGlove or hand-tracking, is available. If enabled, the virtual hand mesh remains visible even when no data is available. By default, this setting is disabled, providing users of the simulation with a clear indicator that no hand data is currently available.
## Animation Settings
Controls how the virtual hand model is animated by the animation system.
## Debugging Settings
Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a debug virtual hand by drawing all individual hand joints.
## Grab Settings
Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab system to function.
The `SGPawn` also utilizes these settings to set up the grab colliders on the virtual hand components.
## Haptics Settings
Utilized by the haptics system.
## Mesh Settings
Utilized by the SenseGlove `Tracking` module to account for the current virtual hand mesh when generating hand pose data, resulting in more accurate glove or hand data representation and also smoother animations.
## Touch Settings
Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Touch system to function.
The `SGPawn` also utilizes these settings to set up the touch colliders on the virtual hand components.
## Overriding the Virtual Hand Settings from the Wrist Tracker Component
It's possible to override some of the virtual hand settings through the details panel of any specific Virtual Hand Component. When overriden by enabling the `SenseGlove > Virtual Hand Settings Override > Override Plugin Settings` option inside the details panel, these settings take precedence over the plugin's global settings.
![The Virtual Hand Settings Overrides](virtual-hand-settings-overrides.png "The Virtual Hand Settings Overrides")
@@ -0,0 +1,13 @@
# The Virtual Hand Animation Settings
Controls how the virtual hand model is animated by the animation system.
![The Virtual Hand Animation Settings](virtual-hand-animation-settings.png "The Virtual Hand Animation Settings")
## AnimationBoneRotationCorrectionOffset
Specifies the offset to apply to each bone's rotation when translating hand pose data to the virtual hand bones. This is useful if the virtual hand mesh was imported with an initial rotation. For example, the virtual hand model shipped with Unreal Engine's VRTemplate typically has an initial `90.0f` degrees rotation on the `Yaw` axis. By default, this option has been set up with the Unreal Engine's VRTemplate virtual hand model in mind.
## bShouldAnimationApplyBoneLocation
When enabled, the animation system applies the joint locations to the current virtual hand mesh bones in addition to the joint rotation. Otherwise, only the joint rotations are applied, and joint locations are ignored, leaving the bone locations untouched on the virtual hand mesh when animating it. Enabling this option typically improves the virtual hand animation. By default, this option is enabled.
@@ -0,0 +1,25 @@
# The Virtual Hand Debugging Settings
Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a debug virtual hand by drawing all individual hand joints.
![The Virtual Hand Debugging Settings](virtual-hand-debugging-settings.png "The Virtual Hand Debugging Settings")
## bDrawDebugVirtualHand
If enabled, visualizes the debug virtual hand where possible.
## DrawingMode
Determines the virtual hand drawing mode. If set to `CubicJoints`, for every joint a debug cube will be drawn. If set to `GizmoJoints`, for every joint a debug gizmo will be drawn.
## DebugCubicHandSettings
Visible and valid only if `bDrawDebugVirtualHand` is enabled and `DrawingMode` has been set to `ESGDebugVirtualHandDrawingMode::CubicJoints`.
![The Virtual Hand Debugging Settings - Cubic Joints Drawing Mode](virtual-hand-debugging-cubic-joints-drawing-mode-settings.png "The Virtual Hand Debugging Settings - Cubic Joints Drawing Mode")
## DebugGizmoHandSettings
Visible and valid only if `bDrawDebugVirtualHand` is enabled and `DrawingMode` has been set to `ESGDebugVirtualHandDrawingMode::GizmoJoints`.
![The Virtual Hand Debugging Settings - Gizmo Joints Drawing Mode](virtual-hand-debugging-gizmo-joints-drawing-mode-settings.png "The Virtual Hand Debugging Settings - Gizmo Joints Drawing Mode")
@@ -0,0 +1,31 @@
# The Virtual Hand Grab Settings
Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab system to function.
The `SGPawn` also utilizes these settings to set up the grab colliders on the virtual hand components.
![The Virtual Hand Grab Settings](virtual-hand-grab-settings.png "The Virtual Hand Grab Settings")
## GrabAttachPointSocketName
The default socket name for the grab attach point, usually located at the palm of the hand.
## GrabAttachPointSocketTransform
The default socket transform (location, rotation, scale) for the grab attach point, usually located at the palm of the hand.
## DefaultColliderSize
The default collider size for the fingers' grab colliders.
## ThumbColliderSocketName
The default socket name for the thumb finger's grab collider, usually located at the tip of the thumb finger.
## IndexColliderSocketName
The default socket name for the index finger's grab collider, usually located at the tip of the index finger.
## MiddleColliderSocketName
The default socket name for the middle finger's grab collider, usually located at the tip of the middle finger.
@@ -0,0 +1,9 @@
# The Virtual Hand Haptics Settings
Utilized by the haptics system.
![The Virtual Hand Haptics Settings](virtual-hand-haptics-settings.png "The Virtual Hand Haptics Settings")
## bAutoStopAllHapticsOnEndPlay
Forces all haptics to stop automatically on the `EndPlay` event. This is useful for situations where the simulation has ended, but ongoing haptic feedback might remain active on the glove indefinitely. By default, this setting is enabled.
@@ -0,0 +1,71 @@
# The Virtual Hand Mesh Settings
Utilized by the SenseGlove `Tracking` module to account for the current virtual hand mesh when generating hand pose data, resulting in more accurate glove or hand data representation and also smoother animations.
![The Virtual Hand Mesh Settings](virtual-hand-mesh-settings.png "The Virtual Hand Mesh Settings")
# LeftHandReferenceMesh
The virtual hand model for the left hand is to be used by the SenseGlove `Tracking` module to generate all the `26` joint data present in the `FXRMotionControllerData`. The main reason the `Tracking` module requires a virtual hand mesh as a reference is the SenseGlove Hand Pose format only provides `15` joints. So, the remaining joint data for `FXRMotionControllerData` are calculated from a virtual hand mesh compatible with the Epic rig and also the values specified by `DistalPhalangesLengthSettings`. Furthermore, when calculating the existing joints data, their current locations and rotations are taken into account in calculating the resulting `FXRMotionControllerData`.
By default, no virtual hand mesh is set.
> [!CAUTION]
> If no virtual hand mesh is set, the `Tracking` module will fall back to
> hard-coded values extracted from the standard virtual hand model shipped by
> Unreal Engine VRTemplate. This may result in distorted hand mesh while
> animating a hand in case a different hand mesh other than the default Epic
> virtual hand mesh is being set on the virtual hand components.
# RightHandReferenceMesh
The virtual hand model for the right hand is to be used by the SenseGlove `Tracking` module to generate all the `26` joint data present in the `FXRMotionControllerData`. The main reason the `Tracking` module requires a virtual hand mesh as a reference is the SenseGlove Hand Pose format only provides `15` joints. So, the remaining joint data for `FXRMotionControllerData` are calculated from a virtual hand mesh compatible with the Epic rig and also the values specified by `DistalPhalangesLengthSettings`. Furthermore, when calculating the existing joints data, their current locations and rotations are taken into account in calculating the resulting `FXRMotionControllerData`.
By default, no virtual hand mesh is set.
> [!CAUTION]
> If no virtual hand mesh is set, the `Tracking` module will fall back to
> hard-coded values extracted from the standard virtual hand model shipped by
> Unreal Engine VRTemplate. This may result in distorted hand mesh while
> animating a hand in case a different hand mesh other than the default Epic
> virtual hand mesh is being set on the virtual hand components.
# DistalPhalangesLengthSettings
The length of distal phalanges that cannot be retrieved from any virtual hand mesh compliant with the Epic standard rig. Also, the SenseGlove Hand Pose format does not provide these. This is used by SenseGlove `Tracking` module to calculate an `FXRMotionControllerData` the all `26` joints. The values you specify here depend on the shape of the virtual hand mesh and the defaults are approximated for the virtual hand model shipped with the Unreal Engine VRTemplate.
## RootBoneRotationCorrection
Used mostly by the SenseGlove `Tracking` module and `SGPawn` to offset for any initial rotation during the virtual hand mesh import process. This is the case for example with the virtual hand model shipped with Unreal Engine's VRTemplate, which typically has an initial `-90.0f` degrees rotation on the `Yaw` axis. By default, this option has been set up with the Unreal Engine's VRTemplate virtual hand model in mind.
## LeftHandDefaultReferenceBoneTransforms
Read-only and for internal use only.
## RightHandDefaultReferenceBoneTransforms
Read-only and for internal use only.
## LeftHandBoneNames
Read-only and for internal use only.
## RightHandBoneNames
Read-only and for internal use only.
## DefaultLeftHandMeshPath
Read-only and for internal use only.
## DefaultLeftHandMeshPathOnly
Read-only and for internal use only.
## DefaultRightHandMeshPath
Read-only and for internal use only.
## DefaultRightHandMeshPathOnly
Read-only and for internal use only.
@@ -0,0 +1,31 @@
# The Virtual Hand Touch Settings
Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Touch system to function.
The `SGPawn` also utilizes these settings to set up the touch colliders on the virtual hand components.
![The Virtual Hand Touch Settings](virtual-hand-touch-settings.png "The Virtual Hand Touch Settings")
## DefaultColliderSize
The default collider size for the fingers' touch colliders.
## ThumbColliderSocketName
The default socket name for the thumb finger's touch collider, usually located at the tip of the thumb finger.
## IndexColliderSocketName
The default socket name for the index finger's touch collider, usually located at the tip of the index finger.
## MiddleColliderSocketName
The default socket name for the middle finger's touch collider, usually located at the tip of the middle finger.
## RingColliderSocketName
The default socket name for the ring finger's touch collider, usually located at the tip of the ring finger.
## PinkyColliderSocketName
The default socket name for the pinky finger's touch collider, usually located at the tip of the pinky finger.
@@ -42,7 +42,7 @@
#include "SGDebugGizmoSettings.generated.h"
/**
* Implements the debug gimo settings.
* Implements the debug gizmo settings.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGDebugGizmoSettings
@@ -43,6 +43,10 @@
/**
* Implements the game user settings.
*
* The Game User Settings control the behavior of the SenseGlove instance of UGameUserSettings. The USGGameUserSettings
* class extends the functionality of UGameUserSettings to provide enhanced customization options specifically for
* applications that utilize the SenseGlove Unreal Engine Plugin.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGGameUserSettingsSettings
@@ -50,6 +54,15 @@ struct SENSEGLOVESETTINGS_API FSGGameUserSettingsSettings
GENERATED_USTRUCT_BODY()
public:
/**
* The hardware-benchmarking settings.
*
* The settings in this section are utilized by the USGGameUserSettings::SetEngineScalabilitySettings() method when
* the Scalability parameter is set to ESGEngineScalabilitySettings::Auto. When the engine scalability settings set
* to auto the graphics settings are determined by running a hardware benchmark by calling the
* UGameUserSettings::RunHardwareBenchmark(). The settings listed here are basically the parameters passed to
* UGameUserSettings::RunHardwareBenchmark().
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Game User Settings")
FSGHardwareBenchmarkingSettings HardwareBenchmarkingSettings;
@@ -41,6 +41,8 @@
/**
* Implements the glove tracking settings for the SenseGlove Tracking module.
*
* Provides the tracking settings related to SenseGlove devices.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGGloveTrackingSettings
@@ -49,7 +51,9 @@ struct SENSEGLOVESETTINGS_API FSGGloveTrackingSettings
public:
/**
* The interval to check for glove connectivity. The default is 0.125f which means 8 times in each second.
* The interval in which the tracking module checks for glove connectivity.
*
* The default is 16.666666f which means 60 times per second.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Glove Tracking")
float GloveConnectivityCheckInterval;
@@ -43,6 +43,8 @@
/**
* Implements the HMD tracking settings for the SenseGlove Tracking module.
*
* Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGHMDTrackingSettings
@@ -51,8 +53,8 @@ struct SENSEGLOVESETTINGS_API FSGHMDTrackingSettings
public:
/**
* Used to determine which VIVE HMD should we try to detect first, since we cannot distinguish between
* HTC VIVE Focus 3 and HTC VIVE XR Elite.
* Determines which VIVE HMD to prioritize for detection, as the current detection mechanism cannot differentiate
* between the HTC VIVE Focus 3 and the HTC VIVE XR Elite.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="HMD Tracking")
ESGViveHMDDetectionPriority ViveHMDDetectionPriority;
@@ -42,6 +42,10 @@
/**
* Implements the hand tracking settings for the SenseGlove Tracking module.
*
* The settings in this section only affects the hand-tracking functionality when it's enabled and available. When
* enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course
* without the haptics feedback provided by the SenseGlove devices.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGHandTrackingSettings
@@ -50,16 +54,16 @@ struct SENSEGLOVESETTINGS_API FSGHandTrackingSettings
public:
/**
* If false (the default) the motion sources for hand tracking will be of the form '[Left|Right][Keypoint]'. If
* true they will be of the form 'HandTracking[Left|Right][Keypoint]'. True is recommended to avoid collisions
* between motion sources from different device types.
* If disabled, (the default) the motion sources for hand tracking will be of the form '[Left|Right][Keypoint]'. If
* enabled, they will be of the form 'HandTracking[Left|Right][Keypoint]'. It is recommended to be enabled to avoid
* collisions between motion sources from different device types.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Hand Tracking")
bool bUseMoreSpecificMotionSourceNames;
/**
* If true hand tracking supports the 'Left' and 'Right' legacy motion sources. If false it does not. False is
* recommended unless you need legacy compatibility in an older unreal projects.
* If enabled, hand tracking supports the 'Left' and 'Right' legacy motion sources. If disabled, it does not. It is
* recommended to be disabled unless you need legacy compatibility in older unreal projects.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Hand Tracking")
bool bSupportLegacyControllerMotionSources;
@@ -40,7 +40,13 @@
#include "SGHardwareBenchmarkingSettings.generated.h"
/**
* Implements the hardware benchmarking settings.
* Implements the hardware-benchmarking settings.
*
* The settings in this section are utilized by the USGGameUserSettings::SetEngineScalabilitySettings() method when the
* Scalability parameter is set to ESGEngineScalabilitySettings::Auto. When the engine scalability settings set to auto
* the graphics settings are determined by running a hardware benchmark by calling the
* UGameUserSettings::RunHardwareBenchmark(). The settings listed here are basically the parameters passed to
* UGameUserSettings::RunHardwareBenchmark().
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGHardwareBenchmarkingSettings
@@ -48,12 +54,24 @@ struct SENSEGLOVESETTINGS_API FSGHardwareBenchmarkingSettings
GENERATED_USTRUCT_BODY()
public:
/**
* The WorkScale parameter determines the intensity of the benchmark test. Higher values result in more intensive
* testing, which can help achieve more accurate scalability settings.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Hardware Benchmarking")
float WorkScale;
/**
* The CPUMultiplier parameter allows you to adjust the impact of CPU performance on the benchmark results.
* Increasing this value will emphasize CPU performance more heavily in determining scalability settings.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Hardware Benchmarking")
float CPUMultiplier;
/**
* The GPUMultiplier parameter lets you modify the influence of GPU performance on the benchmark outcomes. A higher
* value will increase the weight of GPU performance in setting scalability.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Hardware Benchmarking")
float GPUMultiplier;
@@ -42,6 +42,9 @@
/**
* Implements the plugin initialization settings.
*
* The Initialization Settings section is designed to control how the SenseGlove Unreal Engine Plugin is initialized,
* allowing you to customize its behavior to suit your project's needs.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGInitializationSettings
@@ -50,9 +53,11 @@ struct SENSEGLOVESETTINGS_API FSGInitializationSettings
public:
/**
* If enabled, the plugin tries to check and validate whether the default classes such as GameMode, GameInstance,
* etc. are indeed SenseGlove classes or SenseGlove-derived classes. If not, it attempts to set them. If you don't
* like this behavior for whatever reason, consider disabling this option.
* If enabled, the plugin tries to check and validate whether the default for classes such as GameMode,
* GameInstance, etc. are indeed SenseGlove classes or SenseGlove-derived classes. If not, it attempts to set them.
* If you don't like this behavior for whatever reason, consider disabling this option.
*
* By default, this option is disabled.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Initialization")
bool bValidateIfDefaultClassesAreSGCompliant;
@@ -69,15 +69,35 @@ private:
FImplDeleter PimplDeleter;
private:
/**
* The Initialization Settings section is designed to control how the SenseGlove Unreal Engine Plugin is
* initialized, allowing you to customize its behavior to suit your project's needs.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "SenseGlove")
FSGInitializationSettings InitializationSettings;
/**
* The Game User Settings control the behavior of the SenseGlove instance of UGameUserSettings. The
* USGGameUserSettings class extends the functionality of UGameUserSettings to provide enhanced customization
* options specifically for applications that utilize the SenseGlove Unreal Engine Plugin.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "SenseGlove")
FSGGameUserSettingsSettings GameUserSettings;
/**
* The tracking settings are primarily used by the SenseGlove Tracking module and are divided into various
* subsections, each focusing on a specific aspect of tracking. These subsections, along with the other settings
* directly provided by this section, provide comprehensive control over the tracking functionalities.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "SenseGlove")
FSGTrackingSettings TrackingSettings;
/**
* The Virtual Hand Settings are utilized by various SenseGlove modules such as Debug, Editor, Tracking, and the
* main module. These settings are divided into several subsections, each focusing on a specific aspect of the
* virtual hand functionality. Together with the settings provided directly in this section, they offer
* comprehensive control over any system or component that utilizes the virtual hand.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="SenseGlove")
FSGVirtualHandSettings VirtualHandSettings;
@@ -47,6 +47,10 @@
/**
* Implements the settings for the SenseGlove Tracking module.
*
* The tracking settings are primarily used by the SenseGlove Tracking module and are divided into various subsections,
* each focusing on a specific aspect of tracking. These subsections, along with the other settings directly provided by
* this section, provide comprehensive control over the tracking functionalities.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGTrackingSettings
@@ -55,22 +59,41 @@ struct SENSEGLOVESETTINGS_API FSGTrackingSettings
public:
/**
* If false, only a real glove will be tracked, otherwise will fall back to hand tracking if available and
* supported by the HMD device.
* Determines whether to fallback to hand-tracking, or not, when no SenseGlove device is detected:
*
* - If disabled, only a real glove will be tracked.
* - If enabled, the plugin will fall back to hand-tracking when it's available and supported by the HMD device.
*
* Note: disabling this option hides the hand-tracking settings section, while enabling it makes the hand-tracking
* settings visible.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Tracking")
bool bFallbackToHandTrackingIfNoGloveDetected;
/**
* Provides the tracking settings related to SenseGlove devices.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Tracking")
FSGGloveTrackingSettings GloveTrackingSettings;
/**
* The settings in this section only affects the hand-tracking functionality when it's enabled and available. When
* enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course
* without the haptics feedback provided by the SenseGlove devices.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Tracking",
meta=(EditCondition="bFallbackToHandTrackingIfNoGloveDetected", EditConditionHides))
FSGHandTrackingSettings HandTrackingSettings;
/**
* Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Tracking")
FSGHMDTrackingSettings HMDTrackingSettings;
/**
* Provides the tracking settings applicable to wrist-tracking hardware.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Tracking")
FSGWristTrackingSettings WristTrackingSettings;
@@ -46,6 +46,8 @@ class USkeletalMesh;
/**
* Implements the virtual hand animation settings.
*
* Controls how the virtual hand model is animated by the animation system.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGVirtualHandAnimationSettings
@@ -53,9 +55,21 @@ struct SENSEGLOVESETTINGS_API FSGVirtualHandAnimationSettings
GENERATED_USTRUCT_BODY()
public:
/**
* Specifies the offset to apply to each bone's rotation when translating hand pose data to the virtual hand bones.
* This is useful if the virtual hand mesh was imported with an initial rotation. For example, the virtual hand
* model shipped with Unreal Engine's VRTemplate typically has an initial 90.0f degrees rotation on the Yaw axis.
* By default, this option has been set up with the Unreal Engine's VRTemplate virtual hand model in mind.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Animation")
FRotator AnimationBoneRotationCorrectionOffset;
/**
* When enabled, the animation system applies the joint locations to the current virtual hand mesh bones in
* addition to the joint rotation. Otherwise, only the joint rotations are applied, and joint locations are
* ignored, leaving the bone locations untouched on the virtual hand mesh when animating it. Enabling this option
* typically improves the virtual hand animation. By default, this option is enabled.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Animation")
bool bShouldAnimationApplyBoneLocation;
@@ -46,6 +46,9 @@
/**
* Implements the virtual hand debugging settings.
*
* Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a
* debug virtual hand by drawing all individual hand joints.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGVirtualHandDebuggingSettings
@@ -53,18 +56,33 @@ struct SENSEGLOVESETTINGS_API FSGVirtualHandDebuggingSettings
GENERATED_USTRUCT_BODY()
public:
/**
* If enabled, visualizes the debug virtual hand where possible.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging")
bool bDrawDebugVirtualHand;
/**
* Determines the virtual hand drawing mode. If set to `CubicJoints, for every joint a debug cube will be drawn.
* If set to GizmoJoints, for every joint a debug gizmo will be drawn.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging",
meta=(EditCondition="bDrawDebugVirtualHand", EditConditionHides))
ESGDebugVirtualHandDrawingMode DrawingMode;
/**
* Visible and valid only if bDrawDebugVirtualHand is enabled and DrawingMode has been set to
* ESGDebugVirtualHandDrawingMode::CubicJoints.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging",
meta=(EditCondition="bDrawDebugVirtualHand && DrawingMode == ESGDebugVirtualHandDrawingMode::CubicJoints",
EditConditionHides))
FSGDebugCubeSettings DebugCubicHandSettings;
/**
* Visible and valid only if bDrawDebugVirtualHand is enabled and DrawingMode has been set to
* ESGDebugVirtualHandDrawingMode::GizmoJoints.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging",
meta=(EditCondition="bDrawDebugVirtualHand && DrawingMode == ESGDebugVirtualHandDrawingMode::GizmoJoints",
EditConditionHides))
@@ -47,6 +47,11 @@ class USkeletalMesh;
/**
* Implements the virtual hand grab settings.
*
* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab
* system to function.
*
* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGVirtualHandGrabSettings
@@ -54,21 +59,40 @@ struct SENSEGLOVESETTINGS_API FSGVirtualHandGrabSettings
GENERATED_USTRUCT_BODY()
public:
/**
* The default socket name for the grab attach point, usually located at the palm of the hand.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Grab")
FName GrabAttachPointSocketName;
/**
* The default socket transform (location, rotation, scale) for the grab attach point, usually located at the palm
* of the hand.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Grab")
FTransform GrabAttachPointSocketTransform;
/**
* The default collider size for the fingers' grab colliders.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Grab")
FVector DefaultColliderSize;
/**
* The default socket name for the thumb finger's grab collider, usually located at the tip of the thumb finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Grab")
FName ThumbColliderSocketName;
/**
* The default socket name for the index finger's grab collider, usually located at the tip of the index finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Grab")
FName IndexColliderSocketName;
/**
* The default socket name for the middle finger's grab collider, usually located at the tip of the middle finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Grab")
FName MiddleColliderSocketName;
@@ -44,6 +44,8 @@ class USkeletalMesh;
/**
* Implements the virtual hand haptics settings.
*
* Utilized by the haptics system.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGVirtualHandHapticsSettings
@@ -51,6 +53,11 @@ struct SENSEGLOVESETTINGS_API FSGVirtualHandHapticsSettings
GENERATED_USTRUCT_BODY()
public:
/**
* Forces all haptics to stop automatically on the EndPlay event. This is useful for situations where the
* simulation has ended, but ongoing haptic feedback might remain active on the glove indefinitely. By default,
* this setting is enabled.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Haptics")
bool bAutoStopAllHapticsOnEndPlay;
@@ -53,6 +53,9 @@ class USkeletalMesh;
/**
* Implements the virtual hand mesh settings.
*
* Utilized by the SenseGlove Tracking module to account for the current virtual hand mesh when generating hand pose
* data, resulting in more accurate glove or hand data representation and also smoother animations.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGVirtualHandMeshSettings
@@ -60,39 +63,108 @@ struct SENSEGLOVESETTINGS_API FSGVirtualHandMeshSettings
GENERATED_USTRUCT_BODY()
public:
/**
* The virtual hand model for the left hand is to be used by the SenseGlove Tracking module to generate all the 26
* joint data present in the FXRMotionControllerData. The main reason the Tracking module requires a virtual hand
* mesh as a reference is the SenseGlove Hand Pose format only provides 15 joints. So, the remaining joint data for
* FXRMotionControllerData are calculated from a virtual hand mesh compatible with the Epic rig and also the values
* specified by DistalPhalangesLengthSettings. Furthermore, when calculating the existing joints data, their
* current locations and rotations are taken into account in calculating the resulting FXRMotionControllerData.
*
* By default, no virtual hand mesh is set.
*
* Caution:
* If no virtual hand mesh is set, the Tracking module will fall back to hard-coded values extracted from the
* standard virtual hand model shipped by Unreal Engine VRTemplate. This may result in distorted hand mesh while
* animating a hand in case a different hand mesh other than the default Epic virtual hand mesh is being set on the
* virtual hand components.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Mesh")
TSoftObjectPtr<USkeletalMesh> LeftHandReferenceMesh;
/**
* The virtual hand model for the right hand is to be used by the SenseGlove Tracking module to generate all the 26
* joint data present in the FXRMotionControllerData. The main reason the Tracking module requires a virtual hand
* mesh as a reference is the SenseGlove Hand Pose format only provides 15 joints. So, the remaining joint data for
* FXRMotionControllerData are calculated from a virtual hand mesh compatible with the Epic rig and also the values
* specified by DistalPhalangesLengthSettings. Furthermore, when calculating the existing joints data, their
* current locations and rotations are taken into account in calculating the resulting FXRMotionControllerData.
*
* By default, no virtual hand mesh is set.
*
* Caution:
* If no virtual hand mesh is set, the Tracking module will fall back to hard-coded values extracted from the
* standard virtual hand model shipped by Unreal Engine VRTemplate. This may result in distorted hand mesh while
* animating a hand in case a different hand mesh other than the default Epic virtual hand mesh is being set on the
* virtual hand components.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Mesh")
TSoftObjectPtr<USkeletalMesh> RightHandReferenceMesh;
/**
* The length of distal phalanges that cannot be retrieved from any virtual hand mesh compliant with the Epic
* standard rig. Also, the SenseGlove Hand Pose format does not provide these. This is used by SenseGlove Tracking
* module to calculate an FXRMotionControllerData the all 26 joints. The values you specify here depend on the
* shape of the virtual hand mesh and the defaults are approximated for the virtual hand model shipped with the
* Unreal Engine VRTemplate.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Mesh")
FSGVirtualHandPhalangesLengthSettings DistalPhalangesLengthSettings;
/**
* Used mostly by the SenseGlove Tracking module and SGPawn to offset for any initial rotation during the virtual
* hand mesh import process. This is the case for example with the virtual hand model shipped with Unreal Engine's
* VRTemplate, which typically has an initial -90.0f degrees rotation on the Yaw axis. By default, this option has
* been set up with the Unreal Engine's VRTemplate virtual hand model in mind.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Mesh")
FRotator RootBoneRotationCorrection;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
TMap<FName, FTransform> LeftHandDefaultReferenceBoneTransforms;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
TMap<FName, FTransform> RightHandDefaultReferenceBoneTransforms;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
TArray<FName> LeftHandBoneNames;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
TArray<FName> RightHandBoneNames;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
FString DefaultLeftHandMeshPath;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
FString DefaultLeftHandMeshPathOnly;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
FString DefaultRightHandMeshPath;
/**
* Read-only and for internal use only.
*/
UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh")
FString DefaultRightHandMeshPathOnly;
@@ -49,6 +49,11 @@
/**
* Implements the virtual hand settings.
*
* The Virtual Hand Settings are utilized by various SenseGlove modules such as Debug, Editor, Tracking, and the main
* module. These settings are divided into several subsections, each focusing on a specific aspect of the virtual hand
* functionality. Together with the settings provided directly in this section, they offer comprehensive control over
* any system or component that utilizes the virtual hand.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGVirtualHandSettings
@@ -56,24 +61,56 @@ struct SENSEGLOVESETTINGS_API FSGVirtualHandSettings
GENERATED_USTRUCT_BODY()
public:
/**
* Used by the Virtual Hand Component to determine its visibility when no hand data, either from a SenseGlove or
* hand-tracking, is available. If enabled, the virtual hand mesh remains visible even when no data is available.
* By default, this setting is disabled, providing users of the simulation with a clear indicator that no hand data
* is currently available.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand")
bool bVisibleWhenHandDataUnavailable;
/**
* Controls how the virtual hand model is animated by the animation system.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand")
FSGVirtualHandAnimationSettings AnimationSettings;
/**
* Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a
* debug virtual hand by drawing all individual hand joints.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand")
FSGVirtualHandDebuggingSettings DebuggingSettings;
/**
* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab
* system to function.
*
* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand")
FSGVirtualHandGrabSettings GrabSettings;
/**
* Utilized by the haptics system.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand")
FSGVirtualHandHapticsSettings HapticsSettings;
/**
* Utilized by the SenseGlove Tracking module to account for the current virtual hand mesh when generating hand
* pose data, resulting in more accurate glove or hand data representation and also smoother animations.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand")
FSGVirtualHandMeshSettings MeshSettings;
/**
* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the touch
* system to function.
*
* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand")
FSGVirtualHandTouchSettings TouchSettings;
@@ -61,26 +61,54 @@ public:
UPROPERTY(EditAnywhere, Category = "SenseGlove")
bool bOverridePluginSettings;
/**
* Used by the Virtual Hand Component to determine its visibility when no hand data, either from a SenseGlove or
* hand-tracking, is available. If enabled, the virtual hand mesh remains visible even when no data is available.
* By default, this setting is disabled, providing users of the simulation with a clear indicator that no hand data
* is currently available.
*/
UPROPERTY(EditAnywhere, Category = "SenseGlove",
meta=(EditCondition="bOverridePluginSettings", EditConditionHides))
bool bVisibleWhenHandDataUnavailable;
/**
* Controls how the virtual hand model is animated by the animation system.
*/
UPROPERTY(EditAnywhere, Category = "SenseGlove",
meta=(EditCondition="bOverridePluginSettings", EditConditionHides))
FSGVirtualHandAnimationSettings AnimationSettings;
/**
* Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a
* debug virtual hand by drawing all individual hand joints.
*/
UPROPERTY(EditAnywhere, Category = "SenseGlove",
meta=(EditCondition="bOverridePluginSettings", EditConditionHides))
FSGVirtualHandDebuggingSettings DebuggingSettings;
/**
* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab
* system to function.
*
* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components.
*/
UPROPERTY(EditAnywhere, Category = "SenseGlove",
meta=(EditCondition="bOverridePluginSettings", EditConditionHides))
FSGVirtualHandGrabSettings GrabSettings;
/**
* Utilized by the haptics system.
*/
UPROPERTY(EditAnywhere, Category = "SenseGlove",
meta=(EditCondition="bOverridePluginSettings", EditConditionHides))
FSGVirtualHandHapticsSettings HapticsSettings;
/**
* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the touch
* system to function.
*
* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components.
*/
UPROPERTY(EditAnywhere, Category = "SenseGlove",
meta=(EditCondition="bOverridePluginSettings", EditConditionHides))
FSGVirtualHandTouchSettings TouchSettings;
@@ -46,6 +46,11 @@ class USkeletalMesh;
/**
* Implements the virtual hand touch settings.
*
* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the touch
* system to function.
*
* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGVirtualHandTouchSettings
@@ -53,21 +58,39 @@ struct SENSEGLOVESETTINGS_API FSGVirtualHandTouchSettings
GENERATED_USTRUCT_BODY()
public:
/**
* The default collider size for the fingers' touch colliders.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Touch")
FVector DefaultColliderSize;
/**
* The default socket name for the thumb finger's touch collider, usually located at the tip of the thumb finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Touch")
FName ThumbColliderSocketName;
/**
* The default socket name for the index finger's touch collider, usually located at the tip of the index finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Touch")
FName IndexColliderSocketName;
/**
* The default socket name for the middle finger's touch collider, usually located at the tip of the middle finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Touch")
FName MiddleColliderSocketName;
/**
* The default socket name for the ring finger's touch collider, usually located at the tip of the ring finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Touch")
FName RingColliderSocketName;
/**
* The default socket name for the pinky finger's touch collider, usually located at the tip of the pinky finger.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Touch")
FName PinkyColliderSocketName;
@@ -46,6 +46,8 @@
/**
* Implements the wrist tracking debugging settings.
*
* Provides debugging options for visually debugging the wrist tracker.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGWristTrackingDebuggingSettings
@@ -54,13 +56,13 @@ struct SENSEGLOVESETTINGS_API FSGWristTrackingDebuggingSettings
public:
/**
* If enabled, draws debug Wrist trackers where possible.
* If enabled, visualizes the debug wrist trackers where possible.
*/
UPROPERTY(EditAnywhere, Category = "Debugging")
bool bDrawDebugWristTracker;
/**
* Valid only if bDrawDebugGizmo is enabled.
* Visible and valid only if bDrawDebugGizmo is enabled.
*/
UPROPERTY(EditAnywhere, Category = "Debugging",
meta=(EditCondition="bDrawDebugWristTracker", EditConditionHides))
@@ -48,6 +48,8 @@
/**
* Implements the wrist tracking settings.
*
* Provides the tracking settings applicable to wrist-tracking hardware.
*/
USTRUCT(BlueprintType)
struct SENSEGLOVESETTINGS_API FSGWristTrackingSettings
@@ -56,53 +58,91 @@ struct SENSEGLOVESETTINGS_API FSGWristTrackingSettings
public:
/**
* If set to Custom, any desired location and rotation can be specified.
* Specifies the type of tracking hardware to use. If set to None, the plugin attempts at HMD auto-detection to
* automatically specify a compatible tracking hardware. If set to `Custom`, aby desired location and rotation can
* be specified.
*
* Caution:
* HMD auto-detection is currently an experimental feature and may fail because HMD vendors occasionally change the
* properties utilized by the plugin for HMD
* detection. If you encounter issues, such as incorrect tracker offsets, it is recommended to explicitly specify
* the tracking hardware.
*
* Caution:
* Due to highly experimental nature of the HMD auto-detection feature, the HTC VIVE Focus 3 and HTC XR Elite
* cannot be distinguished from each other in the current iteration. However, since the tracker devices and offsets
* for both headsets are the same, this should not affect performance or functionality.
* The order in which the HMD is detected can be specified through the HMD-tracker setting
* `ViveHMDDetectionPriority`.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking")
ESGPositionalTrackingHardware TrackingHardware;
/**
* Valid only if TrackingHardware is set to Custom.
* Sets a custom location offset for left hand's wrist-tracking hardware.
*
* Note:
* This setting is visible and valid only if TrackingHardware is set to Custom.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking",
meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides))
FVector TrackingHardwareLocationOffsetLeftHand;
/**
* Valid only if TrackingHardware is set to Custom.
* Sets a custom location offset for right hand's wrist-tracking hardware.
*
* Note:
* This setting is visible and valid only if TrackingHardware is set to Custom.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking",
meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides))
FVector TrackingHardwareLocationOffsetRightHand;
/**
* Valid only if TrackingHardware is set to Custom.
* Sets a custom rotation offset for left hand's wrist-tracking hardware.
*
* Note:
* This setting is visible and valid only if TrackingHardware is set to Custom.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking",
meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides))
FRotator TrackingHardwareRotationOffsetLeftHand;
/**
* Valid only if TrackingHardware is set to Custom.
* Sets a custom rotation offset for right hand's wrist-tracking hardware.
*
* Note:
* This setting is visible and valid only if TrackingHardware is set to Custom.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking",
meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides))
FRotator TrackingHardwareRotationOffsetRightHand;
/**
* Determines which motion source to use.
* For Oculus this is usually Left, and for VIVE usually LeftFoot.
* Determines the motion source for the left hand. For Oculus HMDs, this is usually Left, and for VIVE HMDs, it's
* typically LeftFoot.
*
* Note:
* For VIVE devices using SteamVR, the motion source hardware for the left hand can be specified by the user
* through the SteamVR app.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Wrist Tracking")
EControllerHand LeftHandMotionSource;
/**
* Determines which motion source to use.
* For Oculus this is usually Right, and for VIVE usually RightFoot.
* Determines the motion source for the left hand. For Oculus HMDs, this is usually Right, and for VIVE HMDs, it's
* typically RightFoot.
*
* Note:
* For VIVE devices using SteamVR, the motion source hardware for the right hand can be specified by the user
* through the SteamVR app.
*/
UPROPERTY(Config, EditDefaultsOnly, Category="Wrist Tracking")
EControllerHand RightHandMotionSource;
/**
* Provides debugging options for visually debugging the wrist tracker.
*/
UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking")
FSGWristTrackingDebuggingSettings DebuggingSettings;
@@ -58,6 +58,9 @@ public:
UPROPERTY(EditAnywhere, Category = "SenseGlove")
bool bOverridePluginSettings;
/**
* Provides debugging options for visually debugging the wrist tracker.
*/
UPROPERTY(EditAnywhere, Category = "SenseGlove",
meta=(EditCondition="bOverridePluginSettings", EditConditionHides))
FSGWristTrackingDebuggingSettings DebuggingSettings;