Skip to content

Annotation Workflow

This page covers the core annotation workflow in LUC3D: creating instances, editing keypoints, and managing annotations across camera views.

Instance Types

LUC3D has three types of instances:

Type Description Visual Style
User Instance Manually created or edited by the annotator Solid lines, fully editable
Predicted Instance Auto-generated by a tracker or imported from SLEAP Dashed lines, read-only until converted
Reprojected Instance Projected from 3D triangulation back to 2D Dotted lines, read-only

Creating Instances

Add a New Instance

  1. Navigate to the frame you want to annotate
  2. Press N or click Edit → Add Instance in the toolbar
  3. A new skeleton appears in the active camera view, positioned at the view center
  4. Drag individual keypoints to their correct positions

Converting Predicted Instances

If you have loaded SLEAP predictions or run the tracker:

  1. Double-click a predicted instance to convert it to a user instance
  2. It becomes fully editable — adjust any keypoints as needed

Editing Keypoints

Moving Keypoints

  • Click and drag a keypoint node to reposition it
  • The node snaps to the cursor and follows your mouse

Moving an Entire Instance

  • Hold Alt and drag any node to move all keypoints together
  • Relative positions are preserved — useful for repositioning a roughly correct skeleton

Toggling Visibility/Occlusion

  • Right-click a node to cycle through visibility states:
    • Visible (solid) — keypoint is clearly visible in this view
    • Occluded (hollow) — keypoint exists but is hidden behind something
    • Not visible (hidden) — keypoint is not present in this view

Deleting Instances

  • Select an instance and press Del or Backspace to delete it from the current camera
  • Press Shift+Del to delete the instance from all camera views

Selecting Instances

  • Click on any keypoint or edge to select that instance
  • Press Tab to cycle through instances in the current frame
  • Press Esc to clear the selection
  • The selected instance is highlighted in the Instances panel

Working Across Views

When annotating multi-view data, you annotate each camera view independently, then group the instances that correspond to the same individual.

Typical Per-Frame Workflow

  1. Annotate the subject in Camera 1 (e.g., back view)
  2. Switch to Camera 2 (click the view or press V)
  3. Annotate the same subject in Camera 2
  4. Repeat for all camera views
  5. Group the instances across views
  6. Triangulate to verify with 3D

Tip

You don't need to annotate every keypoint in every view. If a keypoint is not visible in a particular camera angle, right-click it to mark it as occluded or leave it unpositioned.

View Controls

Zooming

  • Scroll wheel on a camera view to zoom in/out
  • Press + / - to zoom all views simultaneously
  • Press 0 to reset zoom to fit

Panning

  • Drag on empty space (not on a keypoint) to pan when zoomed in
  • Double-click empty space to reset the view

View Layout

  • Press V to cycle through single-camera views
  • Press G to return to the grid layout (all cameras visible)

Info Panel

Press I to toggle the info panel, which shows:

  • Instances tab — List of all instances in the current frame, grouped and ungrouped, with reprojection errors
  • Visibility tab — Rendering controls (node size, edge weight, transparency, label visibility)
  • Videos tab — Loaded video details (frame count, resolution, labeled frames)
  • Cameras tab — Calibration info (name, resolution, focal length)
  • Skeleton tab — Full skeleton editor: add, rename, and remove nodes and edges inline. A project uses one skeleton shared across all sessions, so an edit (or loading a new skeleton) applies everywhere — LUC3D warns before overwriting a non-empty skeleton.
  • Session tab — Multi-session management and camera-video assignment

Responsive tabs

When the info panel is narrow, tabs that don't fit collapse into a More ▾ overflow menu.