Real-Time Motion Events
Launch options that turn on or shape the real-time motion events (reps and holds, form state, feedback, presence, framing, gestures, inactivity) and the raw pose data. The Camera component always sends the real-time events; workout flows send them only when includePoseData contains "events". For the Camera component walkthrough, see Camera Component: real-time events.
Workout flows here means every view that runs the KinesteX exercise player: Main, Workout, Plan, Personalized Plan, Custom Workout, Challenge, AI Trainer workouts and the Box and Training experiences. Assessments and games send none of these events.
| Option | Type | Default | Camera component | Workout flows |
| includePoseData | string[] | none | "poseLandmarks": a pose_landmarks event every frame with a person. "worldLandmarks": world_landmarks (meters, hip-centered). "angles": adds 2D and 3D joint angles to those events. "events" is not needed: the real-time events are always on | "events": turns the real-time events on, plus exercise_setup when each exercise starts and successful_repeat / action per rep. "poseLandmarks" / "worldLandmarks": every frame of the check frame and the exercises (not on rest screens), with exercise (null during the check frame); 2D angles are always included and "angles" adds 3D |
| inactivityTimeout | number (seconds) | 15 | Idle seconds before activity INACTIVE | Same, with "events" |
| includeFramingHints | boolean | false | framing_hint (missing body parts, step back or move to center) while the positioning check is open | Same, with "events" |
| includeFormState | boolean | false | form_state (GOOD, ADJUST, OUT_OF_POSITION) | Same, with "events" |
| enableGestureControl | boolean | false | Posts gesture_detected (PAUSE or RESUME) when the user makes the hands pause gesture. KinesteX does not pause: your app decides | Not used. The workout pauses and resumes on the gesture itself (unless preventGestureControl), and with "events" posts gesture_detected when it does |
| frameExitPrompt | boolean | false | Plays the spoken prompt asking the user to come back when they leave the view (presence LEFT) | Not used: the workout already pauses and plays the prompt when the user leaves the frame |
| frameExitPause | boolean | false | No reps count while the user is out of view (from presence LEFT to RETURNED); a rep half done when they left is not counted | Not used: the workout pauses itself |
| showSilhouette | boolean | true | true: the positioning check opens before tracking. false: tracking starts at once, and framing_hint / person_in_frame are sent only during a check you open with reset_check_frame | false skips the positioning check |
| includeRealtimeAccuracy | boolean | false | true streams correct_position_accuracy (accuracy) on every frame matched against the exercise's positions | Same |
In the URL: includePoseData also takes a comma list (?includePoseData=poseLandmarks,events); inactivityTimeout is read as a number and the booleans accept true / false. See URL Parameters.
Workouts: add includePoseData: ["events"] (plus any opt-in above) to the custom params of your workout, plan, challenge or custom workout view. The workout's own events (exercise_completed, workout_progress, ...) are sent either way. See Workout Events.
Related: streamFormGuidance streams the depth-bar data (Camera & Pose Detection). pauseCamera and muteWorkout start the Camera component with the camera off or muted (Camera Component parameters).
1kinestex.createCameraView(
2 exercises: ["model-id-1", "model-id-2"],
3 currentExercise: $currentExercise,
4 user: nil,
5 style: nil,
6 isLoading: $isLoading,
7 customParams: [
8 "includePoseData": ["poseLandmarks"], // workouts: ["events"]
9 "inactivityTimeout": 20,
10 "includeFramingHints": true,
11 "includeFormState": true,
12 "enableGestureControl": true,
13 "frameExitPrompt": true,
14 "frameExitPause": true,
15 "includeRealtimeAccuracy": true
16 ],
17 onMessageReceived: { message in
18 // form_state, activity, presence, ... arrive as .custom_type
19 }
20)