Hotspot
- Last UpdatedOct 22, 2025
- 5 minute read
The Hotspot node attaches a clickable 2D overlay pointer to a 3D element.
-
The hotspot is made up of an image and an optional text label.
-
The image has three states: normal, over, and selected.
Platform support
This node is fully supported on XR-Windows platform.
It is partially supported on XR-Portable Windows, XR-Portable iOS, XR-Portable Android, and XR-P WASM platforms.
The portable platforms do not support 3D mode.
|
XR-WIN |
XR-P-WIN |
XR-P-IOS |
XR-P-AND |
XR-P-WASM |
|---|---|---|---|---|
|
Full support |
Partial support |
Partial support |
Partial support |
Partial support |
|
|
|
|
|
|

Attachable entities
You can assign a hotspot to different alternative entity types:
-
Mesh
-
Object
-
Collision Mesh (CMesh)
-
An instantiated node that has a position SVEC3 field, such as item, a mesh, or an object.
Note: A hotspot can be attached to only one entity.
Highlight meshes
You can provide a hotspot with a list of meshesToHighlight.
When the highlightMeshes parameter is set to true, the attached entity and all other meshesToHighlight show a colored silhouette.
Hotspot sorting
Sorting of the hotspots has few differences depending on the mode type.
-
mode2D hotspots: Sorting is based on order field value. Lower order hotspots are drawn over higher ones. When two or more hotspots share the same order they are sorted based on their distance from the camera. If all the hotspots have the same order the sorting is purely based on their distance from the camera.
-
mode3D hotspots: They are sorted based on their distance from the camera. The order field is not supported for these type of hotspots.
Using internal textures
Internal textures can be used for any of the state images. Using internal textures enables you to create dynamic hotspot images based on Texture2D and RectBase2D nodes. You might use this, for example, to show the state of a dynamic parameter of the object to which the hotspot is attached.
RectBase2D node instances rendered into a Texture2D shown in a mode2D hotspot will receive mouse events in the same way as if they were a 2D interface, allowing more complex interaction setups for the hotspots.
Note: Support for internal textures behaves a bit differently between mode2D and mode3D. When mode2D is set, it is possible to show both the Internal Texture image and hotspot title. In mode3D, the hotspot title cannot be shown when the image is an internal texture.
The options dictionary
The options dictionary can contain different information, depending on the project scope. Use the options field to display information with the hotspot when the hotspot is selected. This information is used by the application.
Code example
This is a code example for the HotSpot node.
<Hotspot name="400HZ_SSFC_M-SSP54" position="-578.1995 0.731354 1246.958" range="0 200" attachedToMesh="Airport_Total|400HZ_SSFC_M-SSP54" group="1. 400Hz System,Solid State Frequency Converters (SSFC)" options="{camera=Cam_400HZ_SSFC_M-SSP54}{images=Data\Airport\Images\Solid State Frequency Converters (SSFC)}{url=Data\Airport\Datasheet\Datasheet - M-SSP54.htm}{detail3D=PL_400HZ_SSFC_M-SSP54}{url2=Data\Airport\Cars\CARS_Dubai_Airport_Pop_up_pits.htm}" title="M-SSP54" meshesToHighlight="Airport_Total|400HZ_SSFC_M-SSP54_01,Airport_Total|400HZ_SSFC_M-SSP54_02" silhouetteColor="0 1 1" textFont="Arial,Bold,22" textColor="0 1 1" textBackColor="0 0 0 0.7"/>
Hotspot fields
These are the fields for Hotspot node. Only the node-specific fields are indicated, not fields obtained by inheritance.
Field inheritance: NodeBase > Hotspot
|
Fields |
Type |
Use |
Default value |
Description |
|---|---|---|---|---|
|
active |
sbool |
Optional |
true |
Activates or deactivates the hotspot. |
|
attachedToCMesh |
mstring |
Optional |
Not set |
The full name (including pipes) of the collision mesh to which to attach the hotspot. |
|
attachedToMesh |
mstring |
Optional |
Not set |
The full name (including pipes) of the mesh to which to attach the hotspot. |
|
attachedToNode |
mstring |
Optional |
Not set |
Name of the node to which to connect the hotspot. |
|
attachedToObject |
sstring |
Optional |
Not set |
The full name (including pipes) of the dummy object to which to attach the hotspot. |
|
fadeIn |
sfloat |
Optional |
0 |
Fade-in with the specified amount of time. |
|
fadeOut |
sfloat |
Optional |
0 |
Fade-out with the specified amount of time. |
|
group |
string |
Optional |
Not set |
Can be used to group or parent the hotspots. |
|
highlightMeshes |
sbool |
Optional |
false |
Set to true to display meshes silhouette. |
|
images |
mstring |
Optional |
hotspot_normal.png hotspot_over.png hotspot_selected.png |
List of hotspot state images for normal, selected, and over states. It supports internal textures. |
|
isOver |
sbool |
Read only |
Internally calculated |
Becomes true when the selector is over the hotspot. |
|
meshesToHighlight |
mstring |
Optional |
Not set |
List of other meshes to include into highlighting. |
|
mode |
senum |
Optional |
mode2D |
Specifies the hotspot mode as mode2D or mode3D. 2D is default while 3D is the proper use in VR. |
|
options |
dstring |
Optional |
Not set |
Dictionary where to put hotspot-related information. |
|
order |
sint |
Optional |
100 |
Defines the hotspot overlay layer. |
|
position |
svec3 |
Read only |
Internally calculated |
Hotspot position in 3D. |
|
positionOffset |
svec3 |
Optional |
0 0 0 |
Hotspot position offset. As the hotspot is placed to the attached entity center, sometimes it might be useful to move the hotspot relatively to better position it. |
|
position2DScreen |
svec2 |
Read only |
0 0 |
The hotspot position in 2D screen points.The hotspot image pinpoint usually corresponds to the center of the image. |
|
position2DOffset |
svec2 |
Optional |
0 0 |
Shifts the positioning of the hotspot in screen coordinates. |
|
range |
svec2 |
Optional |
0 -1 |
Defines the hotspot visibility range. The hotspot displays only when the distance between its position and the camera is inside the range. 0-1 means always visible. |
|
rangeFadeTime |
sfloat |
Optional |
0.5 |
Fade time when visible state is changed according to the range field. 0 or below means no fading. |
|
selected |
sbool |
Optional |
false |
Used to read/write hotspot selection. |
|
setOver |
sbool |
Optional |
false |
Can be used to trigger over behavior from script. |
|
silhouetteColor |
svec3 |
Optional |
1 1 1 |
Color for the highlight silhouette. |
|
size |
svec2 |
Optional |
256 256 |
Hotspot image size. |
|
textBackColor |
svec34 |
Optional |
0 0 0 0 |
Hotspot text background color with alpha (RGBA). |
|
textColor |
svec3 |
Optional |
1 1 1 |
Hotspot text foreground color. |
|
textFont |
sstring |
Optional |
Arial,Bold,26 |
The hotspot text font. |
|
textShow |
senum |
Optional |
Always |
Defines whether to show hotspot text. The options are Always, Never, or Onover. |
|
title |
string |
Optional |
Not set |
Text to show in the hotspot label. |
|
visible |
sbool |
Read only |
Internally calculated |
Shows the hotspot visibility state. |