Skip to content
lukesd edited this page Nov 12, 2018 · 13 revisions

Welcome to the modosc wiki!

Overview

Modosc is a library of Max abstractions for processing marker-based motion capture data in real-time. The library performs two main functions: It formats incoming motion capture (MoCap) data into a form that is easier to handle in Max. And it computes various motion descriptors, which are quantities that describe various aspects of movement. For example, velocity is a "low level" descriptor, and is calculated from the incoming position data. A higher-level descriptor is quantity of motion which is based on the velocity and mass of a collection of points on the body.

Modosc was designed to make it easier to implement real-time interaction scenarios using motion capture. The creators of Modosc are especially interested in real-time music interaction. However Modosc may be useful in any situation where movement is used to generate some real-time output or feedback.

The initial alpha release of Modosc works with Qualisys motion capture systems which can stream data as Open Sound Control (OSC) messages. The name Modosc comes from "motion descriptors OSC". The implementation of Modosc relies heavily on the o.dot framework from CNMAT.

Please contact us at motiondescriptors@gmail.com if you have feature requests, bug reports, and to let us know how you're using Modosc.

Getting Started

Checkout these video tutorials:

[We will add a detailed text description directly in the wiki soon!]

Installing Modosc

[Coming soon]

A simple starter patch

[Coming soon]

Motion Descriptors

[Documentation for each descriptor is in progress.]

Modosc data is structured into two basic data types: points and groups.

A point represents a single entity in space. The most common use of a point is to store the 3D position of a specific MoCap marker. Since many MoCap systems can identify small sets of markers in a unique static configuration and transmit both a position and orientation, a point can also store both orientation and position for such a 6 degree-of-freedom (6DOF) rigid body.

A group is a named group of points. For example all the marker points on a mover's left arm might be put in a group named "leftArm".

Some Modosc descriptors operate on points, while others operate on groups.

Point Descriptors

  • mo.qtm3D takes as input the OSC messages coming from the Qualisys Track Manager (QTM) software. It re-formats 3D position data into the OSC namespace used for points in Modosc. (It also removes the original messages from the OSC bundle). The arguments to this object are the names of the 3D markers coming from QTM. For example, [mo.qtm3D /handL /handR] will look for points named /handL and /handR, and when they exist in the OSC bundle, will reformat each as a message /modosc/points/point_name/pos: [x, y, z].

  • mo.qtm6Deuler takes as input the OSC messages coming from QTM which represent 6DOF rigid bodies using position and Euler angles. It reformats this data into the modosc namespace and removes the original messages. The arguments to mo.qtm6Deuler are the names of the 6D markers coming from QTM. It outputs two messages for each 6DOF rigid body, where one has position (/modosc/points/point_name/pos: [x, y, z]) and the other has orientation (/modosc/points/point_name/rot: [roll, pitch ,yaw]).

  • mo.velocity

  • mo.acceleration

  • mo.jerk

  • mo.positionLPF

  • mo.fluidity

  • mo.newStaticPoint

Group Descriptors

  • mo.group
  • mo.setWeights
  • mo.boundingBox
  • mo.centroid
  • mo.centerOfMass
  • mo.contractionIndex
  • mo.distance
  • mo.qom