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:
- An optional
[point_groups]table that defines reusable groups of markers. - One or more named tables (for example
[config1]) — each one is a selectable visualization configuration. - Optional
[group_name.config]tables that style a specific point group.
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:
visible_points— markers and groups that should be shown.joins— lines or shapes connecting markers.planes— four-point planes drawn between markers.vectors— vectors anchored to a marker.point_color,join_color—[r, g, b]or[r, g, b, a].point_size,line_thickness— positive floats.
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.