Skip to content

Make VMESH the standalone format for all codecs - #60

Merged
cicm4 merged 5 commits into
mainfrom
further_vmesh_testing
Sep 30, 2026
Merged

cicm4 merged 5 commits into
mainfrom
further_vmesh_testing

Conversation

@cicm4

@cicm4 cicm4 commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

What changed

All twelve public compression methods now write standalone .vmesh files with VMESH-owned framing, metadata and validated native payload profiles. Loading detects the embedded codec; older exports require explicit migration. Compressed USD interchange preserves the complete VMESH artifact through a VMESH prim.

The change also fixes codec numerical regressions, validates malformed payloads before decoding, migrates browser frame delivery to VMESH, and hardens browser server paths and study sessions. CI now exercises the streamer/browser, native C# numerical contracts, and the full Python suite with research dependencies. Installed-wheel coverage includes a VMESH round trip and the public codec registry.

Verification

Local validation on macOS / Apple Silicon, Python 3.13:

  • python -m pytest -q: 834 passed, 71 skipped with available optional dependencies; clean development-only environment: 651 passed, 177 skipped.
  • python -m pytest open4d/streamer/streamer_tests: 563 passed.
  • node --test open4d/webclients/tests/*.js open4d/webclients/system/Server/test_*.js: 344 passed, 15 skipped; WebClient production build passed.
  • Native tracker/editor contracts: 28 passed, zero skipped, compiling both TVMC and TSMC sources with .NET 10.0.401. Separate N4MC model/loss contracts: 6 passed.
  • Wheel and sdist built from the committed source; exact distribution checks, isolated wheel installation, pip check, I/O/CLI/VMESH/streaming smoke, benchmark smoke, source compilation, local documentation links and provenance checks passed.
  • Fixtures include synthetic moving meshes, native model contexts, malformed/corrupt containers, and compressed USD round trips. Dataset and hardware skips are recorded separately from passes.

GitHub CI: all 26 jobs passed on 1809cbf (verified run). This includes Python 3.10–3.13, clean installations on Linux/macOS/Windows, the full research tier (869 passed, 36 conditional skips), all 563 streamer tests, 344 JavaScript passes / 15 skips, 28 native numerical passes, and 3 actual GIF-rendering tests. The isolated visualization suite also passes independently of test import order.

Safety checklist

  • Tests cover success, empty input, and relevant failure paths.
  • Optional dependencies remain optional and have actionable errors; installed-streamer namespace regressions are covered.
  • Wheel/sdist package boundaries remain unchanged and pass exact inventory checks.
  • Existing provenance records are retained; no new third-party code, datasets or binaries were imported in this migration.
  • No credentials, private captures, generated outputs or local datasets were added. Local reports and validation artifacts remain ignored.
  • Documentation and status claims match verified behavior.

Remaining limitations

Fresh native V-DMC/Faster V-DMC dataset runs could not be repeated today: the codec host times out on SSH, and the local unmodified native source requires an x86 build configuration. CUDA, camera, external-dataset and upstream-reference-dependent tests remain conditional. Re-run the native dataset matrix when the codec host is reachable.

VMESH is a standalone custom format; MPEG interoperability is not claimed for the container. Native research decoding still requires trusted payloads and its configured runtime, as documented in SECURITY.md. Publication remains blocked by the existing provenance ledger.

Carry native codec payloads in the Open4D V3C profile, preserve them through USDC round trips, and expose native sequence decoding. Add concise notebooks and regression coverage alongside the tested codec, I/O, and streaming fixes.
…o further_vmesh_testing

# Conflicts:
#	open4d/webclients/system/Server/server.js
Replace private V3C carriage and retired compressed output types with validated VMESH profiles, explicit migration, and compressed USD interchange. Harden browser routes and codec numerical handling, and add regression and optional-dependency CI coverage.
@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 138 files, which is 38 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 864894ea-a60d-4866-9129-035de5406928

📥 Commits

Reviewing files that changed from the base of the PR and between 92eb0b8 and ca5b319.

📒 Files selected for processing (138)
  • .agents.txt
  • .codex/config.toml
  • .github/workflows/ci.yml
  • README.md
  • SECURITY.md
  • THIRD_PARTY.md
  • docs/api.md
  • examples/open4d_sequence_codec.ipynb
  • examples/streaming_demo.py
  • examples/visualization/README.md
  • examples/visualization/compare_frames.py
  • examples/visualization/compare_sequences.py
  • examples/visualization/frame_sources.py
  • examples/visualization/tests/test_compare.py
  • examples/visualization/tests/test_frame_sources.py
  • examples/visualization/tests/test_visualize_sequence.py
  • examples/visualization/visualize_sequence.py
  • examples/vmesh/01_container_and_usdc.ipynb
  • examples/vmesh/02_mesh_codecs.ipynb
  • examples/vmesh/03_gaussian_codecs.ipynb
  • examples/vmesh/04_rerf.ipynb
  • integrations/open3d/open4d_open3d.py
  • integrations/open3d/tests/test_open4d_open3d.py
  • open4d/__init__.py
  • open4d/_api.py
  • open4d/_cli.py
  • open4d/_files.py
  • open4d/_native_worker.py
  • open4d/_streamer.py
  • open4d/codec/__init__.py
  • open4d/codec/_api.py
  • open4d/codec/_draco.py
  • open4d/codec/_klt.py
  • open4d/codec/_metadata.py
  • open4d/codec/_migration.py
  • open4d/codec/_n4mc.py
  • open4d/codec/_native.py
  • open4d/codec/_native_profiles.py
  • open4d/codec/_native_temporal.py
  • open4d/codec/_npz.py
  • open4d/codec/_protocol.py
  • open4d/codec/_qndf.py
  • open4d/codec/_temporal.py
  • open4d/codec/_tracked.py
  • open4d/codec/_vmesh.py
  • open4d/codec/_vmesh_format.py
  • open4d/codec/tests/editor_numerics.cs
  • open4d/codec/tests/test_artifact_validation.py
  • open4d/codec/tests/test_codec.py
  • open4d/codec/tests/test_codec_review.py
  • open4d/codec/tests/test_draco.py
  • open4d/codec/tests/test_editor_numerics.py
  • open4d/codec/tests/test_klt_quantization.py
  • open4d/codec/tests/test_n4mc_determinism.py
  • open4d/codec/tests/test_n4mc_vmesh.py
  • open4d/codec/tests/test_native_temporal.py
  • open4d/codec/tests/test_qndf_preprocess.py
  • open4d/codec/tests/test_queen_training_exports.py
  • open4d/codec/tests/test_real_dataset.py
  • open4d/codec/tests/test_reference_vmesh.py
  • open4d/codec/tests/test_research_codecs.py
  • open4d/codec/tests/test_research_cpu.py
  • open4d/codec/tests/test_research_vmesh.py
  • open4d/codec/tests/test_tracked.py
  • open4d/codec/tests/test_tracker_numerics.py
  • open4d/codec/tests/test_vmesh_format.py
  • open4d/codec/tests/test_vmesh_only.py
  • open4d/codec/tests/tracker_numerics.cs
  • open4d/codecs/klt/klt.py
  • open4d/codecs/n4mc/README.md
  • open4d/codecs/n4mc/losses/tsdf_losses.py
  • open4d/codecs/n4mc/tests/test_losses.py
  • open4d/codecs/qndf/README.md
  • open4d/codecs/qndf/build_dataset_open3d.py
  • open4d/codecs/tsmc/arap-volume-tracking/Framework/Util/ARAP.cs
  • open4d/codecs/tsmc/arap-volume-tracking/Framework/Util/KDTree.cs
  • open4d/codecs/tsmc/arap-volume-tracking/Framework/Util/TransformDistance.cs
  • open4d/codecs/tsmc/tvm-editing/TVMEditor/Editing/CenterDeformation/AffinityCenterDeformation.cs
  • open4d/codecs/tsmc/tvm-editing/TVMEditor/Editing/SurfaceDeformation/CustomSurfaceDeformation.cs
  • open4d/codecs/tvmc/arap-volume-tracking/Framework/Util/ARAP.cs
  • open4d/codecs/tvmc/arap-volume-tracking/Framework/Util/KDTree.cs
  • open4d/codecs/tvmc/arap-volume-tracking/Framework/Util/TransformDistance.cs
  • open4d/codecs/tvmc/tvm-editing/TVMEditor/Editing/CenterDeformation/AffinityCenterDeformation.cs
  • open4d/codecs/tvmc/tvm-editing/TVMEditor/Editing/SurfaceDeformation/CustomSurfaceDeformation.cs
  • open4d/core/tests/test_gaussians.py
  • open4d/core/tests/test_metrics.py
  • open4d/gaussians.py
  • open4d/io/_api.py
  • open4d/io/_native_usd.py
  • open4d/io/_usd.py
  • open4d/io/tests/test_review_regressions.py
  • open4d/io/tests/test_unified_api.py
  • open4d/io/tests/test_usd_sequence.py
  • open4d/native.py
  • open4d/reconstruction/3dgstream/train_frames.py
  • open4d/reconstruction/queen/train.py
  • open4d/reconstruction/rerf/rerf_stream/bitstream.py
  • open4d/reconstruction/rerf/rerf_stream/env.py
  • open4d/reconstruction/rerf/rerf_stream_tests/test_bitstream.py
  • open4d/reconstruction/rerf/rerf_stream_tests/test_geometry.py
  • open4d/streamer/README.md
  • open4d/streamer/streamer/bundle.py
  • open4d/streamer/streamer/client/viewer.html
  • open4d/streamer/streamer/codecs.py
  • open4d/streamer/streamer/export.py
  • open4d/streamer/streamer/sequence.py
  • open4d/streamer/streamer/server/__init__.py
  • open4d/streamer/streamer/session.py
  • open4d/streamer/streamer/transfer.py
  • open4d/streamer/streamer_tests/test_codecs.py
  • open4d/streamer/streamer_tests/test_draco.py
  • open4d/streamer/streamer_tests/test_export.py
  • open4d/streamer/streamer_tests/test_open4d_stream.py
  • open4d/streamer/streamer_tests/test_representations.py
  • open4d/streamer/streamer_tests/test_sequence.py
  • open4d/streamer/streamer_tests/test_server_and_transfer.py
  • open4d/streaming/README.md
  • open4d/streaming/_transport.py
  • open4d/streaming/python/live_two_camera_webrtc.py
  • open4d/streaming/tests/test_capture.py
  • open4d/visualization/_api.py
  • open4d/visualization/tests/test_visualization.py
  • open4d/webclients/README.md
  • open4d/webclients/system/Server/path-safety.js
  • open4d/webclients/system/Server/server.js
  • open4d/webclients/system/Server/study/routes.js
  • open4d/webclients/system/Server/study/store.js
  • open4d/webclients/tests/test_server_security.js
  • open4d/webclients/tests/test_study_session.js
  • open4d/webclients/tests/test_tile_ladder.py
  • open4d/webclients/tests/test_v4ds_protocol.js
  • open4d/webclients/tests/test_vgs_format.js
  • open4d/webclients/tile_ladder.py
  • pyproject.toml
  • scripts/benchmark_codec.py
  • scripts/smoke_installed_io.py
  • scripts/tests/test_benchmark_codec.py
  • scripts/tests/test_cli.py

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

cicm4 and others added 2 commits September 30, 2026 15:52
- Make OPEN4D_NATIVE_TIMEOUT opt-in so long native encodes are not killed,
  and report invalid values as CodecError.
- Allow single-frame N4MC encodes and legacy .n4d migration again.
- Enforce the NPZ/RLE decode size bound at encode time so the codec never
  writes artifacts it cannot read; size the RLE member bound for its
  worst case, vectorize the run-length check and open each frame archive once.
- Keep can_decode a boolean probe via contains_codec, while codec inference
  still surfaces the specific damaged/archived/retired-wrapper diagnostic.
- Align the Vega decode annotations and README with its NativeSequence result.
- Detect native USD from layer metadata before a full open, so mesh USD is
  parsed once.
- Use NEURAL_CODECS in is_mesh_profile, drop an unused import and document
  how stream() treats fps for timed sources.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@cicm4
cicm4 merged commit b06fc7c into main Sep 30, 2026
27 checks passed
cicm4 added a commit that referenced this pull request Sep 30, 2026
…sting"

This reverts commit b06fc7c, reversing
changes made to 92eb0b8.
cicm4 added a commit that referenced this pull request Sep 30, 2026
Keep the changes from PR #60 available for review after reverting its merge on main. The source tree is identical to ca5b319.
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