Roulette Wheel Tracker V2

Roulette Wheel Tracker V2 operator properties for Script Engine. Tracks the rotation of a real roulette wheel by comparing each video frame against a pre-built reference texture atlas, and exposes a 3D wheel mesh and pocket positions that visualizers consume. Useful for live casino broadcasts where a virtual wheel overlay, winning-pocket highlight, or pocket-locked sponsor graphics must follow the spinning wheel. Current version of the Roulette Wheel Tracker — pair with Roulette Wheel Visualizer V2 or Roulette Wheel Multi Slice Visualizer V2 to overlay graphics tied to the tracked wheel. Requires the VTrack Roulette license.

Property Type Access Description
TrackerTextureAtlasInfo Uri get/set Path to the TAF (Texture Atlas File) reference that the tracker matches each video frame against. The TAF is generated up-front from a representative recording of the wheel; without one, the tracker cannot detect anything. Swap files from a script if you switch to a different physical wheel between matches.
TrackerDetectionAreaLeft int get/set X coordinate (pixels) of the top-left corner of the detection area on the input frame. Position the area so it sits squarely over the spinning wheel; the area size is derived from the TAF reference. Adjust together with TrackerDetectionAreaTop whenever the camera shot is reframed.
TrackerDetectionAreaTop int get/set Y coordinate (pixels) of the top-left corner of the detection area on the input frame. Used together with TrackerDetectionAreaLeft to anchor the search window over the wheel. Re-check this value whenever the camera or the wheel itself is moved.
ReverseAngle bool get/set Negates the detected wheel angle when on. Turn on if the TAF reference was captured with the wheel rotating in the opposite direction (clockwise vs anticlockwise) from the live broadcast. Easiest way to tell: spin the wheel and watch whether the projected pocket overlay moves with or against the real pockets.
NumberOrder string get/set Comma-separated pocket numbers in clockwise order as seen from above, e.g. "0, 32, 15, 19, …". Default is the standard 37-pocket European layout starting at 0; American 38-pocket wheels add a "00" entry. Match the order to the physical wheel exactly — a wrong sequence will report the wrong winning number.
WheelProfilePolygon double2[] get/set Cross-section of the wheel as an array of (radiusMm, heightMm) points, traced from the centre outwards. Defines the physical shape so visualizer overlays sit on the rim, the cone and the pocket band correctly. Edit visually with the polygon editor, or set from a script when switching between known wheel models.
MeshDensity int get/set Quality multiplier for the wheel mesh used by visualizers. [min=0, max=2, default=0]. 0 keeps the mesh light and is right for most setups; raise to 1 or 2 if the projected wheel looks blocky on very high-resolution outputs.
TargetRenderWidth int get/set Width (pixels) of the visualizer output that the wheel will be rendered into. Default 1920. Set this to the scene width of the visualizer — not the tracker scene — so the mesh density matches the destination size.
TargetRenderHeight int get/set Height (pixels) of the visualizer output that the wheel will be rendered into. Default 1080. Pair with TargetRenderWidth and use the visualizer's scene resolution, not the tracker scene resolution.
WheelStaticRotationOffset double get/set Constant rotation offset (degrees) added to the detected angle. [min=-180, max=180, default=0]. Use to align pocket 0 to its true on-wheel position when the TAF reference was captured at a slight rotation. Tweak by a degree at a time and watch a known-position pocket overlay until it sits centred.
NumberRingEdgeIndex int get/set Index (0-based) of the profile edge that carries the painted numbers. Default 1. The reference-image generator only labels this band with pocket numbers; pick the edge that corresponds to the visible numbered ring.
GenerateReferenceImageCommand Command get Generates a reference image of the wheel using the current profile, number order and ring edge. Use as a sanity check after changing WheelProfilePolygon or NumberOrder. The image is written next to the project; open the folder via OpenImageFolderCommand.
OpenImageFolderCommand Command get Opens the folder where reference images produced by GenerateReferenceImageCommand are written.
StoppedWheelFrameCountThreshold int get/set Number of consecutive frames at the same detected angle before the wheel is reported as stopped. [min=3, max=50, default=25]. Lower values declare a stop sooner but risk false positives when the wheel slows briefly; higher values are more conservative. Read WheelIsStopped from a script to trigger close-up cuts or graphics when the ball settles.
MaxSpeedChangeThreshold int get/set Maximum allowed change in rotation speed between frames (degrees) before an "unexpected speed" warning is raised. [min=2, max=50, default=3]. Use to flag tracker glitches where the reported angle jumps unrealistically. Combined with TrackerUnexpectedSpeedAction.
ExpectedWheelMaxRotationSpeed int get/set Expected maximum rotation speed of the wheel, plus or minus this many degrees per frame. [min=1, max=30]. Used as the visible range for the angle/speed history graph; set roughly to the highest speed you expect during a launch.
ExpectedMinDetectionConfidence int get/set Minimum match confidence (%) considered acceptable. [min=1, max=100]. Frames below this trigger the action selected in TrackerLowConfidenceAction. Casino setups typically want 70 or higher.
TrackerLowConfidenceAction TrackerIssueAction get/set Action taken when match confidence falls below ExpectedMinDetectionConfidence. Pick TriggerWarning for log-only reporting, or TriggerError to mark the broadcast as having a tracker fault.
TrackerUnexpectedSpeedAction TrackerIssueAction get/set Action taken when the rotation speed jumps by more than MaxSpeedChangeThreshold between frames. Helps catch bogus angle readings that would otherwise jerk the overlay graphics.
FrameCounter int get Frame counter that increments once per processed frame. Updates every frame.
CalculatedWheelAngleFromTrackerString string get Latest detected wheel rotation angle (read-only), formatted as a degrees string with one decimal. Updates every frame. Read this from a script when you want a display-friendly value; for numeric work consume the per-pocket angles via the visualizer.
BestFrameConfidence double get Match confidence (read-only) for the most recent frame as a 0–1 fraction (displayed as %). Values around 0.8 or higher are healthy; sustained drops indicate camera shift, lighting change or a wrong TAF reference.
AverageFrameConfidenceLevel double get Rolling average match confidence over roughly the last 200 frames (read-only), 0–1 fraction (displayed as %). Smoother than BestFrameConfidence; use as the recalibration trigger metric in scripts.
IsLowConfidence bool get True when the current frame's confidence is below ExpectedMinDetectionConfidence (read-only). Use from a script to flash an on-screen warning or pause overlay updates.
LowConfidenceFrameCounter int get Running count of frames with low confidence since the project started (read-only). Useful as a session-quality indicator; a steadily climbing counter means the tracker needs attention.
RotationSpeedString string get Wheel rotation speed in degrees per frame, formatted as a string with one decimal (read-only). Sign indicates direction. A value near zero combined with WheelIsStopped means the wheel has settled.
WheelIsStopped bool get True when the wheel has shown no rotation for StoppedWheelFrameCountThreshold frames (read-only). Cleanest signal for "ball has settled" — script automated cuts and number-display reveals on this transition.
PocketScreenPositionsX int[] get Screen X positions for each pocket, indexed by number (0-36).
PocketScreenPositionsY int[] get Screen Y positions for each pocket, indexed by number (0-36).
PocketScreenScales double[] get Perspective scale for each pocket, indexed by number (0-36). 1.0 = closest pocket to the camera (largest apparent size), smaller values for pockets further away.
PocketAngles double[] get Current angle (in degrees, 0-360) for each pocket, indexed by number (0-36). The angle includes wheel rotation and static rotation offset, normalised to the 0-360 range.
NumberOfWarningsAndErrors int get Number of errors or warnings in the current session.

Inherits from: AbstractOperator, AbstractAudioMetering.

See also: Roulette Wheel Tracker V2 in Operators — user-facing introduction, screenshots, and section summaries.