TurboWarp Realtime Motion Capture

Composite blocks for realtime motion capture camera and fusion applications.

Install and configure

Load the provider extensions you use first, then load the version-pinned bundle as an unsandboxed custom extension:

https://cdn.jsdelivr.net/npm/@kubohiroya/turbowarp-realtime-motion-capture@0.8.1/dist/turbowarp-realtime-motion-capture.js

All feature groups are OFF by default. Set the complete startup configuration before loading the bundle:

globalThis.__TWMP_FEATURE_FLAGS__ = {
  qrCourierPairing: true,
  webgpuMoveNetMultiPose: true,
  protocolV1Codec: true,
  cameraCalibrationV1: true,
  avatarRetargetV1: true,
  frameSyncPatternV1: true,
  poseFusion3D: true,
  glowStickMarkers: true,
};
globalThis.__TWMP_QR_CONFIG__ = {errorCorrectionLevel: "M"};

Omit features you do not use. Reload the project and extension after changing this startup-fixed object.

Offer QR blocks

prepare offer QR for peer [PEER]

Creates a named WebRTC offer and prepares one or more QR courier parts.

show offer QR part [INDEX] on this sprite

Displays a one-based part as a temporary, lossless SVG sprite skin.

end offer QR display

Restores original skins and discards sensitive temporary session data.

The extension exposes blocks across eight independently enabled feature groups. See the generated block reference for every opcode, argument, type, and default.

Enablement and safety

The startup-fixed qrCourierPairing flag is OFF by default. The extension requires the version 2 TurboWarp WebRTC runtime capability and must run unsandboxed.

Pairing QR codes can expose local addressing and ICE credentials. Display them only inside a trusted venue and remove courier photographs after pairing.

WebGPU MoveNet MultiPose

The independent webgpuMoveNetMultiPose flag is OFF by default. When enabled, the extension leases frames from TurboWarp Camera Source, explicitly requires the TensorFlow.js webgpu backend, and returns up to six tracked COCO-17 poses as PoseFrame2D version 1 JSON.

No CPU, WASM, or WebGL inference fallback is provided. The first model load generally requires network access; prepare the browser cache before an offline venue run.

Application contract codec

The independent protocolV1Codec flag is OFF by default. When enabled, blocks validate and round-trip SessionPolicy, CameraCalibration, PoseFrame2D (v1 and v2), PoseFrame3D, and Performance DSL JSON. This extension owns those contracts and publishes their generated JSON Schemas; applications depend on the extension, never the reverse.

Unknown schemas, versions, fields, malformed COCO-17 tuples, and pairing credential keys fail closed. Diagnostic reporters expose the JSON Pointer path and message.

Pose timestamps are opaque values supplied by a separate synchronized local time service. This extension carries them unchanged and implements no clock probes, offset estimation, ping, or pong logic.

Camera calibration

The independent cameraCalibrationV1 flag is OFF by default. A high-level state machine leases the named Camera Source stream, fixes its real resolution, accepts diverse chessboard samples, and exports an exact CameraCalibration v1 profile.

The bundled, exact-pinned OpenCV.js 4.12 WebAssembly backend is the sole solver. It estimates intrinsic, distortion, and world-from-camera values and rejects insufficient samples, resolution changes, weak views, excessive reprojection RMS, unknown profile versions, and pairing credentials.

PoseFrame3D avatar retargeting

The independent avatarRetargetV1 flag is OFF by default. The adapter requires TurboWarp-A-Frame 0.5.0 scene capability v2, refuses any other version, and uses only its public template, transform, event, count, delete, and VRM operations.

Corresponding external PoseFrame3D and PoseFrame2D v1 values can drive up to six VRM avatars. The adapter matches person IDs, expands COCO-17 to BlazePose-33, and uses exact-pinned Kalidokit 1.1.5 as its only rotation solver before turning the VRM humanoid bones on the performer's own side. A block sets VRM expressions on the avatar bound to a person, so the application can show Performance DSL effects on it.

The deterministic expansion uses reduced-visibility duplicates for unavailable hand, foot, and face landmarks and is less precise than native BlazePose input. Kalidokit is deprecated upstream, so retargeting requires validation with real recordings. This extension provides no custom solver fallback and does not align frames, query history, triangulate, or solve 3D data.

Multi-camera 3D pose fusion

The independent poseFusion3D flag is OFF by default. When enabled, blocks buffer PoseFrame2D JSON per camera in timestamp-ordered ring buffers, resample every camera at one past instant behind a configured delay, and triangulate the synchronized 2D sets into PoseFrame3D version 1 JSON.

Out-of-order frames inside the jitter window are reordered, while duplicates, late arrivals, and frames that no loaded calibration profile describes are counted as dropped. Occluded keypoints are filled from the visible side of their bracket, disagreeing views are resolved by the largest consensus set, and a keypoint without two confident views holds its last triangulated position with score zero.

Glow stick markers

The independent glowStickMarkers flag is OFF by default. When enabled, the camera app samples the keypoints you name for a uniquely colored glow stick on the same video frame as the pose and reports PoseFrame2D version 2.

The fusion app maps those colors to performers with the Performance DSL palette. An identified person keeps the performer's identifier across occlusion and re-entry, views of different performers never merge, and a color seen on the mirrored keypoint tells the fusion that the camera read a back view as a front view, so that view's left and right labels are swapped before triangulation.

Development

The public API is the TurboWarp extension and its generated manifest. Source-level controllers are internal and are not npm exports. See the repository README and architecture documentation for build, test, release, and compatibility details.

TurboWarp Realtime Motion Capture: complete block reference

All 103 blocks are documented below, including compatibility blocks and blocks available through optional features. Select a block to read its behavior, arguments, default values, and menu choices. Each block has a permanent link.

prepare offer QR for peer [PEER]

Creates a WebRTC offer and prepares one or more QR courier parts.

Block type: COMMAND. Opcode: prepareOfferQr. Permanent link

ArgumentTypeDefault valueMenu choices
PEERSTRINGcamera-1

show offer QR part [INDEX] on this sprite

Shows the selected one-based offer QR part using a temporary sprite skin.

Block type: COMMAND. Opcode: showOfferQrPart. Permanent link

ArgumentTypeDefault valueMenu choices
INDEXNUMBER1

INDEXを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

offer QR part count

Returns the number of prepared offer QR parts, or zero when none is prepared.

Block type: REPORTER. Opcode: offerQrPartCount. Permanent link

This block has no arguments.

current offer QR part

Returns the one-based part currently selected for display, or zero when none is prepared.

Block type: REPORTER. Opcode: offerQrCurrentPart. Permanent link

This block has no arguments.

show next offer QR part on this sprite

Shows the next part and wraps from the last part to the first.

Block type: COMMAND. Opcode: showNextOfferQrPart. Permanent link

This block has no arguments.

show offer QR for peer [PEER] on this sprite

Creates an offer and shows its first QR courier part on this sprite.

Block type: COMMAND. Opcode: createAndShowOfferQr. Permanent link

ArgumentTypeDefault valueMenu choices
PEERSTRINGcamera-1

end offer QR display

Restores original sprite skins and discards all temporary offer QR data.

Block type: COMMAND. Opcode: endOfferQrDisplay. Permanent link

This block has no arguments.

offer QR state

Returns idle, generating-offer, rendering, displayed, or error.

Block type: REPORTER. Opcode: offerQrState. Permanent link

This block has no arguments.

offer QR error

Returns the latest QR pairing error message.

Block type: REPORTER. Opcode: offerQrError. Permanent link

This block has no arguments.

start WebGPU MoveNet MultiPose camera [CAMERA_ID] peer [PEER_ID] calibration [CALIBRATION_ID]

Loads MoveNet MultiPose Lightning on WebGPU and leases a named Camera Source camera.

Block type: COMMAND. Opcode: startWebGpuMoveNetMultiPose. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGpose
PEER_IDSTRINGsource-1
CALIBRATION_IDSTRINGuncalibrated

stop WebGPU MoveNet MultiPose

Stops inference and releases the detector and camera lease.

Block type: COMMAND. Opcode: stopWebGpuMoveNetMultiPose. Permanent link

This block has no arguments.

infer latest pose frame timestamp [CAPTURE_TIMESTAMP_US] us

Runs at most one inference and carries an opaque synchronized timestamp supplied by the external time service.

Block type: COMMAND. Opcode: inferNextPoseFrame. Permanent link

ArgumentTypeDefault valueMenu choices
CAPTURE_TIMESTAMP_USNUMBER0

CAPTURE_TIMESTAMP_USを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

WebGPU MoveNet ready?

Reports whether the WebGPU detector and Camera Source lease are ready.

Block type: BOOLEAN. Opcode: webGpuMoveNetReady. Permanent link

This block has no arguments.

pose backend

Returns the selected TensorFlow.js backend; successful startup always reports webgpu.

Block type: REPORTER. Opcode: poseBackend. Permanent link

This block has no arguments.

pose pipeline state

Returns the current WebGPU MoveNet pipeline lifecycle state.

Block type: REPORTER. Opcode: posePipelineState. Permanent link

This block has no arguments.

pose error code

Returns a stable code distinguishing WebGPU, model, camera, inference, and output errors.

Block type: REPORTER. Opcode: poseErrorCode. Permanent link

This block has no arguments.

pose error

Returns the latest detailed pose pipeline error.

Block type: REPORTER. Opcode: poseError. Permanent link

This block has no arguments.

latest PoseFrame2D JSON

Returns the latest protocol-v1 COCO-17 pose frame as JSON, or an empty string before inference.

Block type: REPORTER. Opcode: latestPoseFrame2D. Permanent link

This block has no arguments.

start pose estimation on camera [CAMERA_ID] peer [PEER_ID] calibration [CALIBRATION_ID]

Starts a separate MoveNet MultiPose pipeline for one named Camera Source camera, beside any others. Each camera has its own detector so tracking IDs never cross views; all of them run on the same WebGPU device.

Block type: COMMAND. Opcode: startPoseCamera. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGcam-1
PEER_IDSTRINGlocal
CALIBRATION_IDSTRINGuncalibrated

infer pose on camera [CAMERA_ID] at its frame time

Infers the frame the camera is showing and stamps it with that frame's capture time from requestVideoFrameCallback (captureTime, or presentationTime where the browser has none), in microseconds since the Unix epoch on the page clock. A frame already inferred is skipped.

Block type: COMMAND. Opcode: inferPoseCameraAtFrameTime. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGcam-1

stop pose estimation on camera [CAMERA_ID]

Stops one camera's pipeline and releases its detector and camera lease.

Block type: COMMAND. Opcode: stopPoseCamera. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGcam-1

stop pose estimation on all cameras

Stops every per-camera pipeline.

Block type: COMMAND. Opcode: stopAllPoseCameras. Permanent link

This block has no arguments.

latest PoseFrame2D JSON of camera [CAMERA_ID]

Returns the camera's latest COCO-17 pose frame as JSON, or an empty string before its first inference.

Block type: REPORTER. Opcode: poseCameraFrame2D. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGcam-1

pose status JSON of camera [CAMERA_ID]

Returns the camera pipeline's state, error, inference and skipped-frame counts, last inference duration in milliseconds, frame time source (capture or presentation), latest capture timestamp and person count as JSON, or an empty string when it is not started.

Block type: REPORTER. Opcode: poseCameraStatusJson. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGcam-1

protocol JSON [JSON] valid?

Validates and dispatches one of the five pinned multiview-pose v1 contracts without retaining it.

Block type: BOOLEAN. Opcode: protocolJsonValid. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

decode protocol JSON [JSON]

Parses, validates, and retains a supported v1 protocol value for later reporters.

Block type: COMMAND. Opcode: decodeProtocolJson. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

encode protocol JSON [JSON]

Validates a supported v1 value and returns its compact JSON encoding.

Block type: REPORTER. Opcode: encodeProtocolJson. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

decoded protocol JSON

Returns the last successfully decoded or encoded protocol value.

Block type: REPORTER. Opcode: decodedProtocolJson. Permanent link

This block has no arguments.

protocol schema

Returns the schema identifier dispatched by the latest validation attempt.

Block type: REPORTER. Opcode: protocolSchema. Permanent link

This block has no arguments.

protocol version

Returns the numeric version dispatched by the latest validation attempt, or zero when unavailable.

Block type: REPORTER. Opcode: protocolVersion. Permanent link

This block has no arguments.

protocol error path

Returns the JSON Pointer path for the latest parse or validation error.

Block type: REPORTER. Opcode: protocolErrorPath. Permanent link

This block has no arguments.

protocol error message

Returns the detailed message for the latest parse or validation error.

Block type: REPORTER. Opcode: protocolErrorMessage. Permanent link

This block has no arguments.

start camera calibration camera [CAMERA_ID] profile [CALIBRATION_ID] board [COLUMNS] by [ROWS] square [SQUARE_METERS] m max error [MAX_ERROR_PX] px

Leases a named Camera Source video and fixes its real resolution for a chessboard calibration session.

Block type: COMMAND. Opcode: startCameraCalibration. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGpose
CALIBRATION_IDSTRINGcalibration-1
COLUMNSNUMBER9
ROWSNUMBER6
SQUARE_METERSNUMBER0.025
MAX_ERROR_PXNUMBER1.5

COLUMNS・ROWS・SQUARE_METERS・MAX_ERROR_PXを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

add camera calibration sample

Detects the full board in the latest shared camera frame and retains it when quality and novelty pass.

Block type: COMMAND. Opcode: addCameraCalibrationSample. Permanent link

This block has no arguments.

solve camera calibration

Solves intrinsic, distortion, and world-from-camera values from at least eight accepted samples.

Block type: COMMAND. Opcode: solveCameraCalibration. Permanent link

This block has no arguments.

cancel camera calibration

Releases the camera lease and temporary samples while preserving the last validated profile.

Block type: COMMAND. Opcode: cancelCameraCalibration. Permanent link

This block has no arguments.

cleanup camera calibration

Releases the session and also clears the last in-memory calibration profile.

Block type: COMMAND. Opcode: cleanupCameraCalibration. Permanent link

This block has no arguments.

import CameraCalibration v1 [JSON]

Imports an exact CameraCalibration v1 JSON profile after schema and credential-boundary validation.

Block type: COMMAND. Opcode: importCameraCalibration. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

CameraCalibration v1 [JSON] valid?

Validates a calibration profile without replacing the last validated profile.

Block type: BOOLEAN. Opcode: cameraCalibrationJsonValid. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

camera calibration ready?

Reports whether a fixed-resolution camera session can accept a sample or solve.

Block type: BOOLEAN. Opcode: cameraCalibrationReady. Permanent link

This block has no arguments.

camera calibration state

Returns the current calibration session state.

Block type: REPORTER. Opcode: cameraCalibrationState. Permanent link

This block has no arguments.

camera calibration backend

Returns the single pinned production solve backend identifier.

Block type: REPORTER. Opcode: cameraCalibrationBackend. Permanent link

This block has no arguments.

camera calibration sample count

Returns the accepted sample count for the current or last solved session.

Block type: REPORTER. Opcode: cameraCalibrationSampleCount. Permanent link

This block has no arguments.

camera calibration sample quality

Returns the latest accepted board coverage and sharpness quality score from zero to one.

Block type: REPORTER. Opcode: cameraCalibrationSampleQuality. Permanent link

This block has no arguments.

camera calibration reprojection error px

Returns the latest solve RMS reprojection error in pixels.

Block type: REPORTER. Opcode: cameraCalibrationReprojectionError. Permanent link

This block has no arguments.

camera calibration error code

Returns a stable code for board, camera, sample, solve, reprojection, or profile errors.

Block type: REPORTER. Opcode: cameraCalibrationErrorCode. Permanent link

This block has no arguments.

camera calibration error

Returns the detailed calibration diagnostic.

Block type: REPORTER. Opcode: cameraCalibrationError. Permanent link

This block has no arguments.

CameraCalibration v1 JSON

Exports the last validated exact v1 profile, or an empty string when none exists.

Block type: REPORTER. Opcode: cameraCalibrationJson. Permanent link

This block has no arguments.

register avatar asset [ASSET_ID] VRM [VRM_URL] rig JSON [RIG_JSON]

Registers a VRM model and its root placement for avatars driven through TurboWarp-A-Frame capability v2.

Block type: COMMAND. Opcode: registerAvatarAsset. Permanent link

ArgumentTypeDefault valueMenu choices
ASSET_IDSTRINGactor
VRM_URLSTRINGavatar.vrm
RIG_JSONSTRING{"rootScale":1,"rootOffset":[0,0,0]}

bind person [PERSON_ID] to avatar [INSTANCE_ID] asset [ASSET_ID] under [PARENT] confidence [CONFIDENCE]

Creates an avatar instance, loads its VRM, and binds one PoseFrame3D person ID to it. The block waits until the VRM is ready.

Block type: COMMAND. Opcode: bindAvatarPerson. Permanent link

ArgumentTypeDefault valueMenu choices
PERSON_IDSTRINGperformer-1
INSTANCE_IDSTRINGavatar-1
ASSET_IDSTRINGactor
PARENTSTRING#scene
CONFIDENCENUMBER0.3

CONFIDENCEを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

unbind avatar for person [PERSON_ID]

Emits recognition end, removes the created avatar instance, and clears its binding.

Block type: COMMAND. Opcode: unbindAvatarPerson. Permanent link

ArgumentTypeDefault valueMenu choices
PERSON_IDSTRINGperformer-1

apply PoseFrame3D [POSE3D_JSON] with PoseFrame2D [POSE2D_JSON] to avatars

Adapts corresponding exact v1 frames to BlazePose-33, solves only with Kalidokit, and applies up to six rigs.

Block type: COMMAND. Opcode: applyPoseFrame3DToAvatars. Permanent link

ArgumentTypeDefault valueMenu choices
POSE3D_JSONSTRING{}
POSE2D_JSONSTRING{}

set avatar expression [NAME] to [WEIGHT] for person [PERSON_ID]

Sets a VRM expression, weight clamped to 0 through 1, on the avatar bound to a PoseFrame3D person ID. An avatar whose VRM is still loading is skipped.

Block type: COMMAND. Opcode: setAvatarExpression. Permanent link

ArgumentTypeDefault valueMenu choices
NAMESTRINGhappy
WEIGHTNUMBER1
PERSON_IDSTRINGperformer-1

WEIGHTを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

avatar expressions for person [PERSON_ID]

Returns the VRM expression names of the avatar bound to a person as a JSON array, or an empty array while it loads.

Block type: REPORTER. Opcode: avatarExpressionNames. Permanent link

ArgumentTypeDefault valueMenu choices
PERSON_IDSTRINGperformer-1

reset avatar retarget state

Removes retarget-created instances and clears assets, bindings, effects, and diagnostics after a scene reset.

Block type: COMMAND. Opcode: resetAvatarRetarget. Permanent link

This block has no arguments.

avatar binding count

Returns the current person-to-avatar binding count, at most six.

Block type: REPORTER. Opcode: avatarBindingCount. Permanent link

This block has no arguments.

avatars updated by last frame

Returns how many bound avatars accepted the last PoseFrame3D.

Block type: REPORTER. Opcode: avatarUpdatedCount. Permanent link

This block has no arguments.

avatar retarget state

Returns disabled, idle, configured, bound, ready, partial, or error.

Block type: REPORTER. Opcode: avatarRetargetState. Permanent link

This block has no arguments.

avatar retarget error

Returns per-person errors from the latest frame while other avatars continue updating.

Block type: REPORTER. Opcode: avatarRetargetError. Permanent link

This block has no arguments.

show frame sync pattern

Covers the screen with the time coded pattern that cameras decode through the projector.

Block type: COMMAND. Opcode: showFrameSyncPattern. Permanent link

This block has no arguments.

hide frame sync pattern

Removes the frame sync pattern overlay.

Block type: COMMAND. Opcode: hideFrameSyncPattern. Permanent link

This block has no arguments.

frame sync pattern shown?

Reports whether the frame sync pattern overlay is on screen.

Block type: BOOLEAN. Opcode: frameSyncPatternShown. Permanent link

This block has no arguments.

frame sync pattern wrap us

Returns the period after which the encoded display time repeats, in microseconds.

Block type: REPORTER. Opcode: frameSyncPatternWrapUs. Permanent link

This block has no arguments.

start frame sync decoder for camera [CAMERA_ID] calibrating for [SECONDS] seconds

Leases the camera, locates the projected pattern, learns its light and dark levels, and reports failure when readings do not decode often enough. The window must be at least 6.2 seconds so that every pattern cell changes at least once.

Block type: COMMAND. Opcode: startFrameSyncDecoder. Permanent link

ArgumentTypeDefault valueMenu choices
CAMERA_IDSTRINGcamera-1
SECONDSNUMBER8

SECONDSを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

calibrate frame sync decoder for [SECONDS] seconds

Runs calibration again on the running decoder, for example after the camera or the projector moved. The window must be at least 6.2 seconds so that every pattern cell changes at least once.

Block type: COMMAND. Opcode: calibrateFrameSyncDecoder. Permanent link

ArgumentTypeDefault valueMenu choices
SECONDSNUMBER8

SECONDSを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

stop frame sync decoder

Stops decoding and releases the camera lease.

Block type: COMMAND. Opcode: stopFrameSyncDecoder. Permanent link

This block has no arguments.

frame sync decoder state

Returns idle, acquiring-camera, calibrating, ready, or error.

Block type: REPORTER. Opcode: frameSyncDecoderState. Permanent link

This block has no arguments.

frame sync decoder error

Returns the last decoder error code, or an empty string when there is none.

Block type: REPORTER. Opcode: frameSyncDecoderError. Permanent link

This block has no arguments.

frame sync decode rate

Returns the share of recent camera frames the decoder could read, between 0 and 1.

Block type: REPORTER. Opcode: frameSyncDecodeRate. Permanent link

This block has no arguments.

frame sync observation available?

Reports whether a decoded frame is waiting to be taken.

Block type: BOOLEAN. Opcode: frameSyncObservationAvailable. Permanent link

This block has no arguments.

take next frame sync observation

Removes the oldest decoded frame from the queue and exposes it to the observation reporters.

Block type: COMMAND. Opcode: takeFrameSyncObservation. Permanent link

This block has no arguments.

frame sync frame timestamp us

Returns when this computer finished recording the taken frame, read from the external synchronized time service.

Block type: REPORTER. Opcode: frameSyncFrameTimestampUs. Permanent link

This block has no arguments.

frame sync frame age us

Returns how old the taken frame already was when the browser delivered it, or 0 when the browser does not report a capture time.

Block type: REPORTER. Opcode: frameSyncFrameAgeUs. Permanent link

This block has no arguments.

frame sync pattern timestamp us

Returns the display time decoded out of the taken frame, within the current pattern wrap window.

Block type: REPORTER. Opcode: frameSyncPatternTimestampUs. Permanent link

This block has no arguments.

acknowledge that the frame sync pattern flashes

Records that the operator was warned the full screen pattern flashes. Time Space Sync will not show it otherwise. The older blocks asked for nothing here because the path they drove asked for nothing; a project that delegates accepts this extra step.

Block type: COMMAND. Opcode: acknowledgeFrameSyncFlashing. Permanent link

This block has no arguments.

set frame sync display refresh to [REFRESH_US] us

Tells the decoder how long each code stays on screen. Only needed when the pattern is shown from another computer; when it is shown from this one the display has measured it. It sets the whole width of the constraint an observation carries, so assuming 60 Hz for a projector running at 50 biases every result with nothing saying so.

Block type: COMMAND. Opcode: setFrameSyncDisplayRefresh. Permanent link

ArgumentTypeDefault valueMenu choices
REFRESH_USNUMBER16667

REFRESH_USを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

start pose fusion delay [DELAY_MS] ms jitter [JITTER_MS] ms min keypoint score [MIN_SCORE]

Starts the multi-camera jitter buffer that fuses one past instant behind the newest frame.

Block type: COMMAND. Opcode: startPoseFusion. Permanent link

ArgumentTypeDefault valueMenu choices
DELAY_MSNUMBER120
JITTER_MSNUMBER80
MIN_SCORENUMBER0.3

DELAY_MS・JITTER_MS・MIN_SCOREを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

stop pose fusion

Clears every buffered frame and fused result while keeping loaded calibration profiles.

Block type: COMMAND. Opcode: stopPoseFusion. Permanent link

This block has no arguments.

cleanup pose fusion

Clears buffered frames, fused results, and every loaded fusion calibration profile.

Block type: COMMAND. Opcode: cleanupPoseFusion. Permanent link

This block has no arguments.

load fusion camera calibration [JSON]

Loads one CameraCalibration v1 profile and derives its world-to-camera projection.

Block type: COMMAND. Opcode: loadFusionCameraCalibration. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

buffer PoseFrame2D JSON [JSON]

Validates one PoseFrame2D v1 and inserts it into its camera ring buffer in timestamp order.

Block type: COMMAND. Opcode: bufferPoseFrame2D. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

fuse PoseFrame3D at buffered delay

Fuses the instant one configured delay behind the newest buffered timestamp.

Block type: COMMAND. Opcode: fuseBufferedPoseFrame3D. Permanent link

This block has no arguments.

fuse PoseFrame3D at timestamp [TIMESTAMP_US] us

Fuses one explicit past instant expressed in the synchronized microsecond time base.

Block type: COMMAND. Opcode: fusePoseFrame3DAt. Permanent link

ArgumentTypeDefault valueMenu choices
TIMESTAMP_USNUMBER0

TIMESTAMP_USを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

latest PoseFrame3D JSON

Returns the last successfully fused twrmc/pose-frame-3d version 1 JSON, or an empty string.

Block type: REPORTER. Opcode: latestPoseFrame3D. Permanent link

This block has no arguments.

synchronized 2D pose set JSON

Returns the last resampled per-camera 2D keypoint set used for triangulation.

Block type: REPORTER. Opcode: synchronizedPoseSet2D. Permanent link

This block has no arguments.

pose fusion state

Returns idle, buffering, fusing, ready, or error.

Block type: REPORTER. Opcode: poseFusionState. Permanent link

This block has no arguments.

pose fusion ready?

Returns true when fusion is started and at least two cameras are calibrated.

Block type: BOOLEAN. Opcode: poseFusionReady. Permanent link

This block has no arguments.

fusion calibrated camera count

Returns how many camera calibration profiles are loaded for fusion.

Block type: REPORTER. Opcode: poseFusionCameraCount. Permanent link

This block has no arguments.

buffered pose frame count

Returns how many PoseFrame2D frames are currently retained across all ring buffers.

Block type: REPORTER. Opcode: poseFusionBufferedFrameCount. Permanent link

This block has no arguments.

dropped pose frame count

Returns how many frames were rejected as duplicates or as arrivals past the jitter window.

Block type: REPORTER. Opcode: poseFusionDroppedFrameCount. Permanent link

This block has no arguments.

fused person count

Returns how many people the last successful fusion produced.

Block type: REPORTER. Opcode: poseFusionPersonCount. Permanent link

This block has no arguments.

fused timestamp us

Returns the synchronized timestamp of the last successful fusion in microseconds.

Block type: REPORTER. Opcode: poseFusionTimestampUs. Permanent link

This block has no arguments.

fused mean reprojection error px

Returns the mean reprojection error of the last successful fusion in pixels.

Block type: REPORTER. Opcode: poseFusionReprojectionErrorPx. Permanent link

This block has no arguments.

pose fusion error code

Returns the latest fusion error code, or an empty string.

Block type: REPORTER. Opcode: poseFusionErrorCode. Permanent link

This block has no arguments.

pose fusion error

Returns the latest fusion error message.

Block type: REPORTER. Opcode: poseFusionError. Permanent link

This block has no arguments.

sample glow stick colors at [KEYPOINTS]

Samples the named COCO-17 keypoints for a uniquely colored glow stick and reports PoseFrame2D v2.

Block type: COMMAND. Opcode: enableGlowStickMarkers. Permanent link

ArgumentTypeDefault valueMenu choices
KEYPOINTSSTRINGright_wrist,left_wrist

stop sampling glow stick colors

Returns pose reporting to PoseFrame2D v1 without glow stick markers.

Block type: COMMAND. Opcode: disableGlowStickMarkers. Permanent link

This block has no arguments.

glow stick marker count

Returns how many glow stick markers the latest pose frame carries.

Block type: REPORTER. Opcode: glowStickMarkerCount. Permanent link

This block has no arguments.

load glow stick palette from PerformanceDSL [JSON]

Loads the performer colors from a Performance DSL v1 payload for fusion identity.

Block type: COMMAND. Opcode: loadGlowStickPalette. Permanent link

ArgumentTypeDefault valueMenu choices
JSONSTRING{}

set performer [PERFORMER_ID] glow stick at [KEYPOINT]

Chooses which COCO-17 keypoint one performer carries the glow stick at.

Block type: COMMAND. Opcode: setPerformerGlowStick. Permanent link

ArgumentTypeDefault valueMenu choices
PERFORMER_IDSTRINGactor-1
KEYPOINTSTRINGright_wrist

KEYPOINTを固定フォームで編集します。数値は有限数値の完全なJSON表記を使用し、範囲と静的な関連入力を検証します。enumは既知候補から選択します。未変更の空白・大小文字・数値表記は原文を保持し、reporterは評価しません。対象外の入力は変更しません。 GUIのDialogs/FixedInputsは起動時既定OFFです。有効にして再読込すると利用できます。

glow stick palette size

Returns how many performers the loaded palette describes.

Block type: REPORTER. Opcode: glowStickPaletteSize. Permanent link

This block has no arguments.

identified performer count

Returns how many fused people the last fusion identified by glow stick color.

Block type: REPORTER. Opcode: identifiedPerformerCount. Permanent link

This block has no arguments.

mirror-corrected view count

Returns how many camera views the last fusion corrected for swapped left and right labels.

Block type: REPORTER. Opcode: mirrorCorrectedViewCount. Permanent link

This block has no arguments.

Repository guide and examples

Runnable sample / 実行できるサンプル

Open in TurboWarp Editor · Download SB3

Valid and roundtrip equal are true; schema is pose-frame-2d, version 1.