Skip to content

Exporting Virtual Markers

MANUS Core Dashboard can export recordings as FBX files.

One of the FBX export options added to MANUS Core 2.2 is the ability to generate virtual markers for the MANUS finger bones. These virtual finger markers can be used to combine with optical body markers and run a custom marker solve for the entire body, including the fingers.

Note

Virtual markers can also be used to convert MANUS Polygon data to marker data, but this document will solely focus on finger data.

alt text

Exporting

Settings

To export virtual markers, enable Export optical markers and select a marker preset:

alt text

Presets

MANUS Core Dashboard comes with 6 presets for virtual markers.

Preset Definitions

The marker presets are located in your MANUS Core 2 installation folder:

alt text

Typically the folder will be located in:
C:\Program Files\MANUS\Core 2\ManusCore\Manus_Dashboard\MANUS_Core_Data\StreamingAssets\MarkerPresets

Fingertips

Virtual markers on the fingertips:

alt text

Qualisys Animation Marker Set

Virtual marker placement:

alt text

Qualisys Claw Marker Set

Virtual marker placement:

alt text

Qualisys Full Fingers Marker Set

Virtual marker placement:

alt text

Vicon Production 10 Fingers

Virtual marker placement (with virtual body markers):

alt text

Vicon Production 10 Fingers (Hands Only)

Virtual marker placement (without virtual body markers):

alt text

Importing Custom Definition

MANUS Core 2 allows you to import your own virtual marker export definitions.

Custom Virtual Marker Definitions are written in XML and can be selected from the export settings:

alt text

Creating Custom Definition

Virtual Marker Definitions are written in XML and can be customized to fit your needs.

The presets that come with MANUS Core 2 can be used as a reference, combined with the following information describing the file format.

Settings

Side prefix

The side prefix adds a prefix to markers which are configured with their side set to Mirrored, Left and Right.

For example, L and R will be used as prefixes in this example:

<MarkerSet>
    <Settings>
        <SidePrefix>
            <Left>L</Left>
            <Right>R</Right>
        </SidePrefix>
    </Settings>
</MarkerSet>

Marker

Name

The name will set the name of the marker in the exported FBX file.

For markers with a side it will set the name to: [side prefix]+[marker name].

Export

The value for export can be true or false.

This value determines if the marker will be exported.

You can use this setting to temporarily disable exporting markers without deleting them.

Offset

The offset will move the markers relative to its parent.

The x, y and z values are in centimeters.

The general rule for the directions are:

  • Z (blue) is the forward direction, this is aiming at the next bone in the chain.
  • Y (green)is the up direction.
  • X (red) is the side direction, for chains on the right side this value is mirrored.

Example of 1.5cm offset in the (Y) up direction:

<Marker name="HandIn" export="true">
    <Offset x="0" y="1.5" z="0"/>
    <Parent chain="Index" boneIndex="1" side="Mirrored" />
</Marker>

Bone orientation in the hands:

alt text

Bone orientation in the body:

alt text

Parent

The parent value determines what position marker will be following by combining the chain type, bone index, percentage and side value.

Chain

A marker can be assigned to a chain, which is a type of parent.

There are 14 different kind of chains.

Hand chains:‍

  • Hand
  • Thumb
  • Index
  • Middle
  • Ring
  • Pinky

Body chains:

  • Head
  • Neck
  • Spine
  • Leg
  • Foot
  • Toe
  • Shoulder
  • Arm

Example of a Thumb chain:

<Marker name="Thumb_Tip" export="true">
    <Offset x="0" y="0" z="0"/>
    <Parent chain="Thumb" boneIndex="3" side="Mirrored" />
</Marker>

Boneindex

The BoneIndex value refers to the number of a joint in a chain.

For example, for the Arm chain:

  • 0 refers to the shoulder joint.
  • 1 refers to the elbow joint.
  • 2 refers to the wrist joint.

For the Index, Middle, Ring and Pinky chains:

  • 0 refers to the CMC joint.
  • 1 refers to the MCP joint.
  • 2 refers to the PIP joint.
  • 3 refers to the DIP joint.
  • 4 refers to the fingertip.

For the Thumb chain:

  • 0 refers to the CMC joint.
  • 1 refers to the MCP joint.
  • 2 refers to the IP joint.
  • 3 refers to the fingertip.

Example of the thumb fingertip index:

<Marker name="Thumb_Tip" export="true">
    <Offset x="0" y="0" z="0"/>
    <Parent chain="Thumb" boneIndex="3" side="Mirrored" />
</Marker>

Percentage

The percentage represents the position of a marker along a chain.

0 means the beginning of a chain, 1 means the end of a chain.

If the marker is placed at a certain percentage value, it signifies where it is located relative to the entire length of the chain.

When the percentage option is combined with the bone index option, it affects the placement of the marker within a specific range between bone indices.

In this case, a value of 0 for the percentage means the marker is positioned directly on top of the current bone index, while a value of 1 means it's positioned right on top of the next bone index.

Example placement of 0.3 between the middle finger MCP and PIP joint:

<Marker name="Middle_Tip" export="true">
    <Offset x="0" y="1.5" z="0"/>
    <Parent chain="Middle" boneIndex="" percentage="0.3" side="Mirrored" />
</Marker>

alt text

Side

The side of the parent chain.

Options:

  • Center, apply markers to center chains (Head, Spine and Neck)
  • Left, apply markers to the chains on the left side (Arm, Hand, Index, etc.)
  • Right, apply markers to the chains on the right side (Arm”, Hand, Index, etc.)
  • Mirrored, apply markers to both left and right chains (Arm, Hand, Index, etc.)

Example of a center sided chain:

<Marker name="C7" export="true">
    <Offset x="0" y="5" z="0"/>
    <Parent chain="Spine" percentage="1" side="Center" />
</Marker>

Example of a mirrored (left and right) chain:

<Marker name="RNG6" export="true">
    <Offset x="0" y="1.5" z="0"/>
    <Parent chain="Ring" boneIndex="4" side="Mirrored" />
</Marker>

Example of a left chain:

<Marker name="LTHI" export="true">
    <Offset x="-8" y="5" z="0"/>
    <Parent chain="Leg" boneIndex="0" percentage="0.5" side="Left" />
</Marker>

Example of a right chain:

<Marker name="RSHN" export="true">
    <Offset x="-5" y="3" z="0"/>
    <Parent chain="Leg" boneIndex="1" percentage="0.7" side="Right" />
</Marker>

HandMarkers

All markers with parent chain type Hand, Thumb, Index, Middle, Ring or Pinky are hand markers.

Example of hand markers:

<MarkerSet>
    <Settings>
        <SidePrefix>
            <Left>Left_</Left>
            <Right>Right_</Right>
        </SidePrefix>
    </Settings>
    <HandMarkers>
        <Marker name="Thumb_Tip" export="true">
            <Offset x="0" y="0" z="0"/>
            <Parent chain="Thumb" boneIndex="3" side="Mirrored" />
        </Marker>
        <Marker name="Index_Tip" export="true">
            <Offset x="0" y="0" z="0"/>
            <Parent chain="Index" boneIndex="4" side="Mirrored" />
        </Marker>
        <Marker name="Middle_Tip" export="true">
            <Offset x="0" y="1.5" z="0"/>
            <Parent chain="Middle" boneIndex="" percentage="0.3" side="Mirrored" />
        </Marker>
        <Marker name="Ring_Tip" export="true">
            <Offset x="0" y="0" z="0"/>
            <Parent chain="Ring" boneIndex="4" side="Mirrored" />
        </Marker>
        <Marker name="Pinky_Tip" export="true">
            <Offset x="0" y="0" z="0"/>
            <Parent chain="Pinky" boneIndex="4" side="Mirrored" />
        </Marker>
    </HandMarkers>
    <BodyMarkers></BodyMarkers>
</MarkerSet>

Bodymarkers

All markers with parent chain type Head, Neck, Spine, Leg, Foot, Toe, Shoulder or Arm are body markers.

Example of body markers:

<MarkerSet>
    <Settings>
        <SidePrefix>
            <Left>L</Left>
            <Right>R</Right>
        </SidePrefix>
    </Settings>
    <HandMarkers>
    </HandMarkers>
    <BodyMarkers>
        <!-- Head -->
        <Marker name="ARIEL" export="true">
            <Offset x="0" y="16" z="-2.5"/>
            <Parent chain="Head" boneIndex="0" side="Center" />
        </Marker>
        <!-- Shoulder -->
        <Marker name="TSH" export="true">
            <Offset x="0" y="6" z="0"/>
            <Parent chain="Shoulder" boneIndex="0" percentage="0.5" side="Mirrored" />
        </Marker>
        <Marker name="FSH" export="true">
            <Offset x="-8" y="0" z="0"/>
            <Parent chain="Shoulder" boneIndex="0" percentage="0.5" side="Mirrored" />
        </Marker>
        <Marker name="BSH" export="true">
            <Offset x="8" y="0" z="0"/>
            <Parent chain="Shoulder" boneIndex="0" percentage="0.5" side="Mirrored" />
        </Marker>
    </BodyMarkers>
</MarkerSet>