Manipulable
- Last UpdatedDec 14, 2023
- 4 minute read
The Manipulable node provides manipulation capabilities to an Item type object.
It defines manipulation-related properties of the addressed node, such as:
-
Positioning when manipulated
-
Collision management when manipulated (sensors)
-
Ghost visualization
It also provides functionality to bypass the Manipulator and manage interaction with AttachPoint .
For more information, see Using the manipulation system.
Platform support
This node is supported on XR-Windows platform only.
|
XR-WIN |
XR-P-WIN |
XR-P-IOS |
XR-P-AND |
XR-P-WASM |
|---|---|---|---|---|
|
Full support |
No support |
No support |
No support |
No support |
|
|
|
|
|
|
Manipulator relative positioning
Use the ManipulatorOrientation and ManipulatorPosition properties to adapt the position and orientation of the object when attached to the Manipulator.
For example, a sheet can display vertically and shifted to the left to improve readability, while a pen could be inclined.
Manipulated object collision
An object can generate a collision only when owned by the Manipulator.
-
By collision, we mean the recognition of an interaction between the manipulated object and another object.
-
The object Manipulable node defines all the collision functionalities for the corresponding object.
Collision Sensor
You can select between three options of collision by setting the sensorType parameter.
|
Collision type |
Description |
|---|---|
|
None |
No collisions. |
|
Ray |
Collision is managed by an oriented segment defined by sensorPositionsensorRayDirection and sensorRayLength. For multiple collisions, the selected one is the one nearest to sensorPosition. |
|
Sphere |
Collision is managed by the surface of a sphere defined by sensorPosition and sensorSphereRadius. |

Collision List
The interactWith parameter defines which Item type objects can be collided by the object when manipulated.
For example, you can restrict screwdriver interaction to only screws.
Ghost
The Manipulable node enables you to define an alternative geometry to display on a compatible AttachPoint when near it.
If no ghost is set, then nothing appears over the AttachPoint .

Code example
This is a code example for the Manipulable node.
<Manipulable name="manip_screwdriver" node="screwdriver" attachTo="screwdriver_equipRoom_POA" sensorType="ray" sensorRayLength="0.13" ghost="tools|ghost_screwdriver" manipulatorPosition="0 0 0.04"/>
Manipulable fields
These are the fields for Manipulable node. Only the node-specific fields are indicated, not fields obtained by inheritance.
Field inheritance: NodeBase > Manipulable
|
Fields |
Type |
Use |
Default value |
Description |
|---|---|---|---|---|
|
_debug |
sbool |
Optional |
false |
If set to true, enables sensor display when 3D Debug is running. |
|
attachedTo |
sstring |
Read only |
Internally calculated |
If the manipulated node is linked to an AttachPoint , this parameter contains its name. The parameter is void when not attached. |
|
attachTo |
sstring |
Optional |
Not set |
Offers a way to directly place the manipulated node on an AttachPoint . |
|
collisionWithCMesh |
sstring |
Read only |
Internally calculated |
Fully qualified name of the collision mesh that is colliding with the sensor. |
|
collisionWithNode |
sstring |
Read only |
Internally calculated |
Name of the node that is colliding with the sensor. |
|
ghost |
sstring |
Optional |
Not set |
Fully qualified ghost mesh. When not set, no ghost is shown. |
|
interactWith |
mstring |
Optional |
List of all and only the item type nodes with which the node can interact (collide) when manipulated. Cannot be changed at runtime. |
|
|
manipulatorOrientation |
svec3 |
Optional |
0 0 0 |
Object offset to be used when owned by the manipulator. |
|
manipulatorPosition |
svec3 |
Optional |
0 0 0 |
Object offset to be used when owned by the manipulator. |
|
node |
sstring |
Mandatory |
Name of the item type node to enables as manipulable. |
|
|
sensorPosition |
svec3 |
Optional |
0 0 0 |
The sensor position, relative to manipulated object center. |
|
sensorRayDirection |
svec3 |
Optional |
0 0 1 |
Ray sensor vector, relative to object axis. |
|
sensorRayLength |
sfloat |
Optional |
0 |
Collision ray length, expressed in meters. |
|
sensorSphereRadius |
sfloat |
Optional |
0.001 |
The sphere sensor radius, in meters. |
|
sensorType |
senum |
Optional |
none |
Specifies type as None, Sphere, or Ray collision style. |