Mesh visualization

scripts/run_mesh_vis_hands_egoexo.py renders the reconstructed per-frame SMPL mesh into each exo camera's view, producing one output video per camera.

python scripts/run_mesh_vis_hands_egoexo.py \
    --npz_path <path/to/world_results(.npz)|merged.npz> \
    [--output_dir <dir>] [--num_render N]
FlagDefaultNotes
--npz_pathrequiredThe take's points_triangulated_world_results_merged.npz — see Data Format
--output_dirnpz_path.parent / "final_vis"
--num_render-1 (all frames)Cap the frame count for a quick smoke test on a long take

The npz is the only input needed: the script generates the SMPL meshes from it directly and extracts/undistorts the take's raw frames itself — only EGOEXO4D_DATASET needs to be set.

Output: view_1.mp4view_4.mp4 in --output_dir, one per exo camera, with the rendered mesh overlaid on the source footage. Frames with valid == 0 are written without an overlay.

Needs a working headless EGL setup:

export PYOPENGL_PLATFORM=egl
export EGL_DEVICE_ID=<N>