Susi Server

Optical Source

Node ID: optical · Role: Source · Realtime config: no

Description

Optical/motion capture tracking source. Subtypes: DTrack (ART), Vicon, Optitrack, Antilatency. Outputs OpticalData (6-DOF position+orientation, quality, frame rate).

Inputs / Outputs

Config aliases

OpticalSource, opticalSource, optical

Properties

The following fields are exposed in the node’s Properties panel in the UI. Types map to UI widgets (e.g. string → text input, number → numeric, boolean → toggle, select → dropdown, json → JSON editor).

KeyLabelTypeDefaultDescription / Notes
bodyIDsBody IDsjson[0]List of tracked body IDs to forward from the mocap system. Empty means all bodies.

Subtypes

ValueDisplay nameExtra properties
dtrackDTrack11 field(s)
viconViconnone
optitrackOptitrack11 field(s)
antilatencyAntilatencynone

Subtype: dtrack — DTrack

KeyLabelTypeDefaultDescription / Notes
bodyIDsBody IDsid-name-list[{"id":1,"name":"hmd"},{"id":2,"name":"leftCtrl"},{"id":3...List of tracked body IDs to forward from the mocap system. Empty means all bodies.
measurementToolIDsMeasurement Tool IDsid-name-list[]ART measurement tools (6dmt) to publish as optical streams. The reported position is the calibrated tool tip, so no stylus tip offset or pivot calibration is needed.
portPortnumber5000UDP port that DTrack multicasts/unicasts tracking frames to.
roomDirectionsRoom Directionsdirections["right","up","backward"]Three-axis permutation describing the DTrack room coordinate system, e.g. [‘right’,‘up’,‘backward’]. Used to map into FusionHub’s +X forward, +Y left, +Z up frame.
bodyDirectionsBody Directionsdirections["right","up","backward"]Three-axis permutation describing the tracked body’s local frame.
roomOffsetRoom Offsetvector3{"x":0,"y":0,"z":0}Translation (m) applied to the room origin before publishing the pose.
useWorldTrafoUse World TransformbooleanfalseApply the World Transform instead of Room Directions / Room Offset. Enabled automatically by the Point Alignment apply.
worldTrafoWorld Transformtransform{"quat":{"w":1,"x":0,"y":0,"z":0},"vect":{"x":0,"y":0,"z"...Rigid world-frame transform applied to all published poses when ‘Use World Transform’ is on. Replaces Room Directions / Room Offset. Written by the Point Alignment apply.
jumpGateEnabledJump GatebooleanfalseReject frames whose pose moves implausibly fast relative to the last accepted pose - catches bad marker fits during partial occlusion.
maxPositionSpeedMax Position Speed (m/s)number5.0Position speed limit for the jump gate. 0 disables the position check.
maxRotationSpeedMax Rotation Speed (deg/s)number1000.0Rotation speed limit for the jump gate. 0 disables the rotation check.

Subtype: optitrack — Optitrack

KeyLabelTypeDefaultOptionsDescription / Notes
serverAddressServer Addressstring127.0.0.1Hostname or IP of the OptiTrack Motive server.
localAddressLocal Addressstring0.0.0.0Local interface IP used when Motive has multiple NICs; usually 127.0.0.1 when running on the same host.
multicastAddressMulticast Addressstring239.255.42.99Multicast group Motive streams data to; must match Motive’s ‘Multicast Interface’ setting.
serverCommandPortCommand Portnumber1510TCP/UDP command port on the Motive server (Motive default: 1510).
serverDataPortData Portnumber1511UDP data port on the Motive server (Motive default: 1511).
connectionTypeConnection Typeselectmulticastmulticast, unicastNatNet transport: ‘multicast’ (default) or ‘unicast’. Must match Motive’s streaming settings.
bodyIDsBody IDsid-name-list[{"id":0,"name":"hmd"},{"id":1,"name":"leftCtrl"},{"id":2...List of tracked body IDs to forward from the mocap system. Empty means all bodies.
roomDirectionsRoom Directionsdirections["right","up","backward"]Three-axis permutation mapping the OptiTrack world axes into FusionHub’s frame.
bodyDirectionsBody Directionsdirections["right","up","backward"]Three-axis permutation mapping the rigid-body local axes into FusionHub’s frame.
useWorldTrafoUse World TransformbooleanfalseApply the World Transform instead of Room Directions. Enabled automatically by the Point Alignment apply.
worldTrafoWorld Transformtransform{"quat":{"w":1,"x":0,"y":0,"z":0},"vect":{"x":0,"y":0,"z"...Rigid world-frame transform applied to all published poses when ‘Use World Transform’ is on. Replaces Room Directions. Written by the Point Alignment apply.

Example node definition

A full node definition in config.json looks like the block below. Paste it under the sources key of your config, keyed by the node’s instance name (any identifier; it doesn’t have to match the node ID).

{
  "sources": {
    "optical": {
      "outEndpoint": "inproc://optical_data",
      "type": "dtrack",
      "settings": {
        "bodyIDs": [
          {
            "id": 1,
            "name": "hmd"
          },
          {
            "id": 2,
            "name": "leftCtrl"
          },
          {
            "id": 3,
            "name": "rightCtrl"
          }
        ],
        "measurementToolIDs": [],
        "port": 5000,
        "roomDirections": [
          "right",
          "up",
          "backward"
        ],
        "bodyDirections": [
          "right",
          "up",
          "backward"
        ],
        "roomOffset": {
          "x": 0,
          "y": 0,
          "z": 0
        },
        "useWorldTrafo": false,
        "worldTrafo": {
          "quat": {
            "w": 1,
            "x": 0,
            "y": 0,
            "z": 0
          },
          "vect": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        },
        "jumpGateEnabled": false,
        "maxPositionSpeed": 5.0,
        "maxRotationSpeed": 1000.0
      }
    }
  }
}

Field reference

FieldPurpose
outEndpointZMQ / inproc endpoint this source binds to publish its output. The runtime auto-generates one if omitted.
typeSubtype / backend selector. See the Subtypes section above for valid values.
settingsAll user-configurable fields — see the Properties table above.

Connections can also be declared at the top-level connections array when settings.explicitConnections is true, as an alternative to filling inputEndpoints on each node.

Loading documentation…