Skip to content

Add Record/Playback nodes for recording Track type#57

Draft
shamilatesoglu wants to merge 9 commits intonodos-1.3from
nodos-1.3-track-recorder
Draft

Add Record/Playback nodes for recording Track type#57
shamilatesoglu wants to merge 9 commits intonodos-1.3from
nodos-1.3-track-recorder

Conversation

@shamilatesoglu
Copy link
Copy Markdown
Member

No description provided.

@shamilatesoglu shamilatesoglu changed the title Nodos 1.3 track recorder Add Record/Playback nodes for recording Track type Apr 9, 2026
shamilatesoglu and others added 9 commits April 14, 2026 15:31
New node that records camera tracking data per frame and exports
COLMAP-format files (cameras.txt + images.txt).

- RecordTrackCOLMAP.cpp: Node implementation with Record/Stop/Save/Clear/
  Open Folder functions. Captures position, rotation, FOV, sensor size,
  and lens distortion each frame. Exports OPENCV camera model intrinsics
  and world-to-camera extrinsics.
- RecordTrackCOLMAP.nosdef: Node definition with Track input/output,
  output directory, image resolution, euler order, record toggle, and
  frame count pins.
- Track.fbs: Added EulerOrder enum (ZYX, XYZ, YXZ, YZX, ZXY, XZY) for
  configurable euler angle rotation order in COLMAP export.
- TrackMain.cpp: Registered RecordTrackCOLMAP in TrackNode enum and
  ExportNodeFunctions switch.
- Track.noscfg: Bumped plugin version to 1.10.0, added nosdef entry.

Review fixes applied:
- Pin buffer size looked up by name instead of hardcoded index
- Null checks on Track flatbuffer fields to prevent crashes
- Euler convention matches MakeRotation (eulerAngleZYX with sign negation)
- Float output precision set to 12 digits for camera parameters
- macOS support added to Open Folder

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

# Conflicts:
#	Subsystems/nosTrackSubsystem/Config/Track.fbs
New PlaybackTrackCOLMAP node loads cameras.txt + images.txt and outputs
Track data. Two modes via PlaybackMode enum:
- Sequential: Play/Stop auto-advance frames each execution
- Manual: frame index input pin controls which frame to output
Pins and functions are orphaned based on mode.

Also:
- Added PlaybackMode enum to Track.fbs
- Renamed Record node pins to InTrack/OutTrack with "Track" display name
- Renamed Playback frame pins to InFrameIndex/OutFrameIndex
- Replaced nosEngine.SetPinValueByName with NodeContext::SetPinValue

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… frame index only

Also fix frames not loading on node creation by always loading when InputDirectory
or EulerOrder changes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Migrate COLMAP nodes from the removed plugin-local EulerOrder enum to
the existing nos.sys.track.CoordinateSystem enum. Also fix nos.track
namespace references to nos.sys.track after upstream merge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@shamilatesoglu shamilatesoglu force-pushed the nodos-1.3-track-recorder branch from 11ff5eb to 8b13957 Compare April 14, 2026 12:31
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.

1 participant