Class Skeleton3DResult#
Defined in File skeleton3d_result.hpp
Class Documentation#
-
class Skeleton3DResult#
Parses a session-root “skeleton3d.json” file written by analysis/run_pose3d.py into a queryable in-memory structure, for the Analysis tab’s 3D Pose Reconstruction plugin (per-camera reprojected skeleton overlay during playback, plus an interactive 3D room view). Mirrors GazeFusionResult (src/analysis/gaze_fusion_result.hpp) closely — same load()
/is_valid() shape and the same “keyed on the shared master
tick/timestamp, not any single video’s frame_index” nearest-frame lookup, since reconstruction is inherently cross-camera. Diverges from
GazeFusionResult in carrying MULTIPLE people per frame (gaze fusion only ever tracks one face) with a persistent trackId across frames.Usage:
auto result = Skeleton3DResult::load(jsonPath); if (result.is_valid()) { ... }
Public Functions
-
Skeleton3DResult() = default#
-
inline bool is_valid() const#
-
inline const QStringList &source_videos() const#
-
inline const QVector<Skeleton3DRoomCamera> &cameras() const#
-
inline const QStringList &keypoint_names() const#
-
inline const QVector<QPair<int, int>> &skeleton_edges() const#
-
inline double master_fps() const#
-
inline const QVector<Skeleton3DFrame> &frames() const#
-
const Skeleton3DFrame *nearest_frame(int64_t timestampNsEstimate) const#
Nearest-frame lookup by timestamp (ns) estimate — binary search, since frames() is stored in the ascending timestampNs order run_pose3d.py writes ascending master ticks in. Returns nullptr if there are no frames.
Public Static Functions
-
static Skeleton3DResult load(const QString &jsonPath)#
Parses jsonPath. Returns a default-constructed (is_valid() == false) result if the file is missing or malformed.
-
Skeleton3DResult() = default#