{
  "version": 1,
  "generated_at_epoch": 1784144339,
  "analysis_fps": 10.0,
  "scene": {
    "frame_size": [
      960,
      540
    ],
    "truth": "observed_pixels_plus_inferred_normalized_floor",
    "metric_calibration": false,
    "metric_reason": "Official court boundary lines and enough metric correspondences are not visible.",
    "sand_horizon": [
      [
        0,
        392
      ],
      [
        960,
        392
      ]
    ],
    "net_base_near": [
      638,
      540
    ],
    "net_base_far": [
      478,
      354
    ],
    "net_top_near_offscreen": [
      528,
      0
    ],
    "net_top_far": [
      478,
      329
    ],
    "observation_floor_polygon": [
      [
        0,
        540
      ],
      [
        960,
        540
      ],
      [
        930,
        392
      ],
      [
        30,
        392
      ]
    ],
    "uncertainty_px": {
      "sand_horizon": 12,
      "net_base_near": 18,
      "net_base_far": 12
    },
    "notes": [
      "The camera is fixed next to the near net structure and looks approximately along the net.",
      "The normalized floor maps the visible sand observation region, not regulation court dimensions.",
      "Net-relative side and depth are suitable for tactical visualization, not metric distance or speed."
    ]
  },
  "events": [
    {
      "event_id": "H01",
      "start": "00:12:17",
      "end": "00:12:22",
      "event_type": "defensive_retrieve_candidate",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H01.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H01_digital_twin.mp4",
      "player_track_count": 4,
      "ball_track_quality": {
        "confidence": 0.82,
        "level": "medium",
        "coverage": 0.84,
        "yolo_anchor_count": 11,
        "inferred_frame_count": 7,
        "p90_step_px": 28.49,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 4,
      "net_crossings": 0,
      "physics_segments": 5
    },
    {
      "event_id": "H02",
      "start": "00:13:07",
      "end": "00:13:14",
      "event_type": "active_exchange_candidate",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H02.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H02_digital_twin.mp4",
      "player_track_count": 4,
      "ball_track_quality": {
        "confidence": 0.82,
        "level": "medium",
        "coverage": 0.871,
        "yolo_anchor_count": 20,
        "inferred_frame_count": 7,
        "p90_step_px": 85.89,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 4,
      "net_crossings": 2,
      "physics_segments": 5
    },
    {
      "event_id": "H03",
      "start": "00:34:31",
      "end": "00:34:43",
      "event_type": "set_or_controlled_return_candidate",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H03.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H03_digital_twin.mp4",
      "player_track_count": 4,
      "ball_track_quality": {
        "confidence": 0.82,
        "level": "medium",
        "coverage": 0.933,
        "yolo_anchor_count": 29,
        "inferred_frame_count": 21,
        "p90_step_px": 54.01,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 12,
      "net_crossings": 2,
      "physics_segments": 13
    },
    {
      "event_id": "H04",
      "start": "00:35:35",
      "end": "00:36:10",
      "event_type": "repeated_exchange_cluster",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H04.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H04_digital_twin.mp4",
      "player_track_count": 10,
      "ball_track_quality": {
        "confidence": 0.82,
        "level": "medium",
        "coverage": 0.974,
        "yolo_anchor_count": 19,
        "inferred_frame_count": 32,
        "p90_step_px": 34.46,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 29,
      "net_crossings": 2,
      "physics_segments": 29
    },
    {
      "event_id": "H05",
      "start": "00:55:44",
      "end": "00:55:55",
      "event_type": "multiplayer_exchange_candidate",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H05.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H05_digital_twin.mp4",
      "player_track_count": 4,
      "ball_track_quality": {
        "confidence": 0.82,
        "level": "medium",
        "coverage": 0.982,
        "yolo_anchor_count": 37,
        "inferred_frame_count": 18,
        "p90_step_px": 67.93,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 7,
      "net_crossings": 4,
      "physics_segments": 9
    },
    {
      "event_id": "H06",
      "start": "01:06:24",
      "end": "01:06:45",
      "event_type": "low_defense_candidate",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H06.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H06_digital_twin.mp4",
      "player_track_count": 5,
      "ball_track_quality": {
        "confidence": 0.396,
        "level": "low",
        "coverage": 0.962,
        "yolo_anchor_count": 0,
        "inferred_frame_count": 28,
        "p90_step_px": 30.22,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 7,
      "net_crossings": 0,
      "physics_segments": 8
    },
    {
      "event_id": "H07",
      "start": "01:12:38",
      "end": "01:12:45",
      "event_type": "best_highlight_net_action_candidate",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H07.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H07_digital_twin.mp4",
      "player_track_count": 4,
      "ball_track_quality": {
        "confidence": 0.82,
        "level": "medium",
        "coverage": 0.943,
        "yolo_anchor_count": 16,
        "inferred_frame_count": 15,
        "p90_step_px": 60.83,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 3,
      "net_crossings": 1,
      "physics_segments": 3
    },
    {
      "event_id": "H08",
      "start": "01:12:57",
      "end": "01:13:02",
      "event_type": "short_late_exchange_candidate",
      "data": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/digital_twin/data/H08.json",
      "annotated_video": "/home/kristjan-variksoo/volleyball-analysis-iS3G8p90TYY/web/digital_twin_h264/H08_digital_twin.mp4",
      "player_track_count": 5,
      "ball_track_quality": {
        "confidence": 0.82,
        "level": "medium",
        "coverage": 0.84,
        "yolo_anchor_count": 9,
        "inferred_frame_count": 0,
        "p90_step_px": 28.6,
        "truth": "inferred_hypothesis"
      },
      "contact_candidates": 6,
      "net_crossings": 0,
      "physics_segments": 4
    }
  ],
  "limitations": [
    "Single camera and absent official boundary lines prevent unique metric 3D reconstruction.",
    "Player identities are event-local track hypotheses and can switch under occlusion.",
    "Ball tracks fuse sparse model detections with motion candidates and are hypotheses, not ground truth.",
    "The 3D view uses normalized net-relative coordinates and a height proxy; metric speed/height are unknown."
  ]
}