Introduction
IntenSelect+ is an enhanced object selection technique for immersive virtual environments, designed to improve selection performance and user experience in Unreal Engine. It enables the intuitive selection of objects, including complex shapes, using an improved scoring function and flexible parameterization options on a per-object level.
Installation
IntenSelect+ is part of the RWTHVRToolkit which should be installed as a plugin inside the Unreal Engine. To effectively define Selection Behaviours, IntenSelect+ uses several components. A main IntenSelect Component used for User Input, a wide range of Scoring Behaviours used to define the geometric shapes of the selectable Objects and an IntenSelectable Component that defines which objects are selectable and how they react and behave to user input. To use IntenSelect+ these components should be set up like this:
Basic Setup
Setting up IntenSelect in its basic form is straightforward and requires only a few steps. The necessary components are as follows:
Begin by attaching an IntenSelect-Component to the user's hand or any other source of directional input. Next, equip every actor that should interact with IntenSelect with an IntenSelectable Component. To enable specific actions upon hovering or clicking, attach HoverAction and ClickAction Behaviours to the relevant entities. Their corresponding events can be accessed by converting the actor to a blueprint and clicking on the Plus-Icon under the “Events”-Tab of the HoverAction / ClickAction Behaviour.
By default, the actor's centre point is utilized in the selection scoring process, but it's possible to employ a variety of geometric configurations instead. To do this, simply add a Scoring Behaviour as a Scene Component to the actor (for example, IntenSelectableSphereScoringBehaviour). To adjust the settings, select the component to access and modify its properties. Additionally, when you select a component, the Unreal Editor will display a visual aid for each Scoring Behaviour in the viewport, allowing you to alter the Scoring Properties directly through editor widgets and to directly see the impact of property changes.
Advanced Setup
IntenSelect Component
The IntenSelect Component is responsible for the (directional) user input and directly utilizes the world rotation of the component in the scene as selection direction. Therefore, it should be directly attached to the user’s hand. In the VR pawn, it should be setup like this:
General Settings
These settings allow you to change the maximum distance for a selection (2), the maximum angle to the forward ray for a selection (3), and the width of the ray's visual representation.
Reference Settings
These settings are for advanced use only and alter the visual appearance of IntenSelect. The toolkit provides default materials and meshes for convenience
Debug Settings
During development, it can be helpful to debug certain IntenSelect settings to fine-tune its behaviour. These settings enable you to draw a visual representation of the selection cone and the forward ray, as well as changing its exact position and appearance.
IntenSelectable Component
To mark an object as relevant for the IntenSelect algorithm, simply add the IntenSelectable Component to an actor.
The component settings allow you to (de)activate the selection behaviour completely, and manually set the Behaviours that happen on Click and Select. If there is only one component of each type attached to the actor, these Behaviours are set automatically and do not need to be altered.
Scoring Behaviours
To define the selectable shape of an actor, just attach one or more ScoringBehaviours. If none is attached manually, a single point Scoring Behaviour will be added to the centre of the actor at runtime. These scoring behaviours can be modified to fit almost any geometric shape. For that, one can either use the properties in the component window or change them in the viewport directly, which is advised.
The following scoring behaviours are available:
The single Point Scoring Behaviour is the default one for an Intel Selectable actor and only has a single geometric property, the point that is used for scoring. The point are stores as vectors in an array as a component property. The point can be moved freely in the editor.
The multi Point scoring behaviour can be used to define as many points as needed that are all used for Scoring of the IntenSelect Component. These Points are stores as vectors in an array as a component property. The point can be moved freely in the editor.
The Circle scoring behaviour can be used to define a circle in three-dimensional space by storing its centre, radius, and rotation. These values are stored as properties in the component properties as well as in the components transforms. The circle can be moved freely in the editor.
The Cube scoring behaviour can be used to define a cube by storing its position, and the size along all axes. These values are stored as floats in the component properties. The cube can be moved freely in the editor.
The Cylinder scoring behaviour can be used to define a cylinder by storing a radius and two 3D-vectors that span the cylinder in three-dimensional space. These Points are stored in an array as a component property. The cylinder can be moved freely in the editor.
The Line scoring behaviour can be used to define a line in three-dimensional space by storing two 3D-vectors. These points are stores in a length 2 array as a component property. The entire line can be moved freely in the editor.
The Rectangle scoring behaviour can be used to define a Rectangle by storing its postion, as well as the two sizes along the axis. These values are stored as component properties. The rectangle can be moved freely in the editor.
The Sphere scoring behaviour can be used to define a Sphere by storing its centre and its radius. These variables are stored as component properties. The centre point can be moved freely in the editor. The radius can be changed with a slider in the component window.
Runtime Usage
Selection Process: Users select objects by pointing. IntenSelect+ calculates scores for objects within the selection cone (which can be visualized by activating debugging mode on the IntenSelectComponent).