Skip to content

Show a 3D viewer of stereo positions from the Display selector - #2000

Open
mattdawkins wants to merge 19 commits into
mainfrom
dev/stereo-3d-display
Open

mattdawkins wants to merge 19 commits into
mainfrom
dev/stereo-3d-display

Conversation

@mattdawkins

@mattdawkins mattdawkins commented Sep 28, 2026 •

Copy link
Copy Markdown
Member
  • Stereo pairs get a Display selector in place of Camera, a fixed width: Stereo (Left), Stereo (Right), Left + 3D, Right + 3D (the viewer takes the unselected camera's pane, which stays mounted), Stereo (Left) + 3D, Stereo (Right) + 3D (both cameras, viewer as a third pane)
  • 3D track viewer taken from Port ifremer features #1348 (vtk.js), plotting the midpoint_x/y/z detection attributes stereo measurement already writes; rebuilds a track when it is edited
  • Detections that also carry head_x/y/z and tail_x/y/z are drawn as a body segment with a cone at the head (written by VIAME's measurement processes when record_head_tail_locations is on)
  • The stereo rig's cameras are drawn from the dataset calibration (right camera at -Rᵀ·T), over a floor grid with labelled X, Y and Z axes; axes and glyph size ignore outlying positions
  • Opens looking down the depth axis from just behind the rig, on a black background; reset and rotate-left/right buttons; the vtk axes box is an opt-in setting
  • Selecting a track highlights it in the 3D view; clicking a track's ball there selects it everywhere, and clicking empty space clears the selection
  • "3D Viewer Settings" sidebar panel for stereo datasets
  • Leaves out Port ifremer features #1348's stereo-matching switch and .conf calibration handling

🤖 Generated with Claude Code

bourdaisj and others added 19 commits September 28, 2026 17:22
Viewer taken from #1348 as resolved on dev/port-ifremer-features.
Stereo pairs get a Display selector: either camera selected, or a camera
beside the 3D viewer. The viewer plots midpoint_x/y/z and follows edits.
The 3D pane no longer sizes the layout, so the bottom track list and bars
stay put. Adds both cameras plus the 3D viewer as a third pane, and narrows
the Display selector.
Detections carrying head_x/y/z and tail_x/y/z attributes are drawn as a body
segment with a cone at the head. Axes ignore outlying positions, and the
initial view looks on from behind the rig so it reads like the image.
The view opens looking down the depth axis from just behind the rig, on a
black background, with the cameras drawn from the calibration and a floor
grid marking depth. A button returns to that view; the axes box is optional.
X, Y and Z axes with ticks meet at the grid's near left corner. The selected
track takes the selection color on its trail, glyph and label.
A click on a track's glyph or trail selects it everywhere; a press that moves
still turns the view.
A click on empty space in the 3D view clears the selection. The stereo
Display box is as wide as its label, and the Y axis carries at least three
marks. The orientation cube moves to the top left, clear of the axes.
Trails and body segments no longer take clicks, which made stray selections
too easy.
Each diagram now ends at its optical center, where depth is measured from,
instead of reaching into the scene. The floor grid still starts at depth 0.
The grid and X axis lie in the plane y = 0, with heights marked above and
below. The orientation marker shows plain bars, with one arrow for up, and
the empty-scene message is gone.
The diagrams open toward the scene again, with the square front at the
camera's depth and the tip behind it. The grid goes back under the data.
The box had no minimum width, so a crowded toolbar squeezed it to its label.
The 3D view's reset uses the timeline's pan-and-zoom icon, and two corner
buttons turn the view left and right.
The 3D viewer's @kitware/vtk.js only resolves with legacy-peer-deps.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants