Biomecánica Deportiva UPM

Reference

Configuration files

Visualization configurations are written in TOML. A single file can define several named configurations, and you switch between them from the Config / Data menu inside the app. The default configuration on startup is called config1, so make sure your file either defines it or you select another one after loading.

Overall structure

A configuration file has two kinds of top-level tables:

Point groups

Groups are lists of marker labels you can reuse across configurations. Reference a group from a config by wrapping its name in a one-element array, like ["head"].

[point_groups]
head = ["LFHD", "RFHD", "RBHD", "LBHD", "LFHD"]
club = ["OBJA", "ClubFace3", "ClubFace4", "ClubFace6", "ClubFace5"]

Configuration fields

Inside a configuration table you can use:

Always write numeric sizes as floats (1.0, not 1) — plain integers may be silently ignored.

Visible points

Entries in visible_points are treated as regex patterns: "BALL" matches exactly BALL, "(L|R)WRB" matches either variant, and prefixing with an underscore ("_OBJ[1-6]") removes the automatic anchoring so the pattern is used raw. Use exact marker names — not regexes — for joins and planes.

Joins

Joins connect consecutive markers pairwise. They can be plain lines or shaped meshes.

joins = [
  [["head"]],
  ["CLAV", "C7", "T10", "STRN", "CLAV"],
  { points = ["RSJC", "RELJ"], shape = { type = "semicone", radius1 = 4.0, radius2 = 2.0 } },
  { points = ["RELJ", "RWJC"], shape = { type = "cylinder", radius = 2.0 } },
  { points = ["RHJC", "RKJC", "RAJC"], shape = { type = "prism", width = 5.0, height = 3.0 } }
]

Supported shapes: line, cylinder, cone, semicone (with radius1 and radius2), and prism (with width and height).

Planes

Planes are drawn between four markers, optionally with a name and a filled color. fill_color must be RGBA (four components).

planes = [
  { name = "club face",
    points = ["ClubFace3", "ClubFace4", "ClubFace6", "ClubFace5"],
    fill_color = [255, 255, 150, 50] }
]

Vectors

Vectors attach one or more vector markers to an anchor marker, with an optional scale. When exactly three vectors share the same anchor, they render as red / green / blue basis vectors.

vectors = [
  ["OBJ1", "LVelOBJ1"],
  ["OBJ2", "LVelOBJ2", 1.5],
  ["ClubFaceCenter", ["LVelClubFaceCenter", "FaceVector"], 10.0],
  ["RUarmCM", ["RUarmIv", "RUarmJv", "RUarmKv"], 2.5]
]

Styling a point group

Give a group its own colors and sizes with [group_name.config]. Group styling has priority over the config-level style when the marker appears literally in the group list.

[head.config]
point_color = [255, 0, 0]
point_size = 0.6
join_color = [255, 128, 0]
line_thickness = 1.5

Minimal working example

[point_groups]
head = ["LFHD", "RFHD", "RBHD", "LBHD", "LFHD"]
club = ["OBJA", "ClubFace3", "ClubFace4", "ClubFace6", "ClubFace5"]

[head.config]
point_color = [255, 0, 0]
point_size = 0.6
join_color = [255, 128, 0]

[config1]
visible_points = [
  ["head"],
  ["club"],
  "BALL",
  "_OBJ[1-6]"
]

joins = [
  [["head"]],
  [["club"]],
  { points = ["RSJC", "RELJ"], shape = { type = "semicone", radius1 = 4.0, radius2 = 2.0 } }
]

planes = [
  { name = "club face",
    points = ["ClubFace3", "ClubFace4", "ClubFace6", "ClubFace5"],
    fill_color = [255, 255, 150, 50] }
]

vectors = [
  ["OBJ1", "LVelOBJ1", 1.0]
]

point_color = [80, 140, 255]
join_color = [0, 255, 0]
line_thickness = 1.0
point_size = 1.0

Validation

When you load a configuration together with a motion file, Swing3D checks that colors have the correct number of components, that sizes are positive, that visible-point patterns match at least one label in the recording, and that every join, plane and vector anchor refers to an existing marker. Problems are reported in an on-screen "Configuration Errors" panel so you can fix the file and reload with F5.