simview 3.2__tar.gz → 3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {simview-3.2 → simview-3.4}/PKG-INFO +79 -5
- simview-3.2/simview.egg-info/PKG-INFO → simview-3.4/README.md +75 -32
- {simview-3.2 → simview-3.4}/pyproject.toml +4 -3
- {simview-3.2 → simview-3.4}/simview/__init__.py +10 -0
- simview-3.4/simview/__main__.py +463 -0
- simview-3.4/simview/diff.py +360 -0
- simview-3.4/simview/info.py +561 -0
- {simview-3.2 → simview-3.4}/simview/live.py +12 -0
- {simview-3.2 → simview-3.4}/simview/server.py +1 -0
- {simview-3.2 → simview-3.4}/simview/static/js/components/BatchManager.js +0 -2
- simview-3.4/simview/terrain.py +558 -0
- simview-3.2/README.md → simview-3.4/simview.egg-info/PKG-INFO +106 -2
- {simview-3.2 → simview-3.4}/simview.egg-info/SOURCES.txt +6 -0
- simview-3.4/tests/test_cli.py +621 -0
- simview-3.4/tests/test_diff.py +248 -0
- simview-3.4/tests/test_info.py +255 -0
- simview-3.4/tests/test_terrain_query.py +333 -0
- simview-3.2/simview/__main__.py +0 -174
- simview-3.2/tests/test_cli.py +0 -169
- {simview-3.2 → simview-3.4}/LICENSE +0 -0
- {simview-3.2 → simview-3.4}/MANIFEST.in +0 -0
- {simview-3.2 → simview-3.4}/setup.cfg +0 -0
- {simview-3.2 → simview-3.4}/simview/launcher.py +0 -0
- {simview-3.2 → simview-3.4}/simview/merge.py +0 -0
- {simview-3.2 → simview-3.4}/simview/model.py +0 -0
- {simview-3.2 → simview-3.4}/simview/py.typed +0 -0
- {simview-3.2 → simview-3.4}/simview/scene.py +0 -0
- {simview-3.2 → simview-3.4}/simview/state.py +0 -0
- {simview-3.2 → simview-3.4}/simview/static/css/controls.css +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/SimView.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/components/AnimationController.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/components/InteractionController.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/components/InteractionControls.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/components/Scene.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/components/StateStore.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/config.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/main.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/objects/Body.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/objects/StaticObject.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/objects/Terrain.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/objects/utils.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/AnalysisPanel.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/BatchLegend.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/BodyStateWindow.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/Controls.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/ErrorMetrics.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/Legend.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/PlaybackControls.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/ui/ScalarPlotter.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/blobCodec.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/bodyTransforms.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/csv.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/errorMath.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/injectStyles.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/interpolate.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/liveFollow.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/loadRecordingLibs.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/js/utils/viewState.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/index.min.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/Color.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/chroma.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/colors/colorbrewer.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/colors/w3cx11.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/average.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/bezier.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/blend.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/cubehelix.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/mix.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/random.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/scale.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/_hsx.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hcg.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hsi.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hsl.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hsv.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/lab.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/lch.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/lrgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/num.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/oklab.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/oklch.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/cmyk/cmyk2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/cmyk/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/cmyk/rgb2cmyk.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/css2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/hsl2css.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/lab2css.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/lch2css.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/oklab2css.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/oklch2css.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/rgb2css.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/gl/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hcg/hcg2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hcg/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hcg/rgb2hcg.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hex/hex2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hex/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hex/rgb2hex.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsi/hsi2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsi/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsi/rgb2hsi.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsl/hsl2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsl/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsl/rgb2hsl.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsv/hsv2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsv/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsv/rgb2hsv.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/input.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/lab-constants.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/lab2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/rgb2lab.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/hcl2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/lab2lch.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/lch2lab.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/lch2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/rgb2lch.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/named/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/num/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/num/num2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/num/rgb2num.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklab/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklab/oklab2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklab/rgb2oklab.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklch/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklch/oklch2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklch/rgb2oklch.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/rgb/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/temp/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/temp/rgb2temperature.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/temp/temperature2rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/alpha.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/clipped.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/darken.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/get.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/luminance.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/mix.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/premultiply.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/saturate.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/set.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/shade.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/analyze.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/clip_rgb.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/contrast.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/contrastAPCA.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/delta-e.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/distance.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/index.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/last.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/limit.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/multiply-matrices.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/scales.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/type.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/unpack.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/valid.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/version.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/download.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/js-colormaps.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/tar.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/addons/controls/OrbitControls.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/addons/libs/lil-gui.module.min.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/three.core.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/three.module.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/uPlot.esm.js +0 -0
- {simview-3.2 → simview-3.4}/simview/static/lib/uPlot.min.css +0 -0
- {simview-3.2 → simview-3.4}/simview/static/textures/contacts/red-cross0.png +0 -0
- {simview-3.2 → simview-3.4}/simview/static/textures/points/ball0.png +0 -0
- {simview-3.2 → simview-3.4}/simview/static/textures/points/ball1.png +0 -0
- {simview-3.2 → simview-3.4}/simview/templates/index.html +0 -0
- {simview-3.2 → simview-3.4}/simview/utils.py +0 -0
- {simview-3.2 → simview-3.4}/simview.egg-info/dependency_links.txt +0 -0
- {simview-3.2 → simview-3.4}/simview.egg-info/entry_points.txt +0 -0
- {simview-3.2 → simview-3.4}/simview.egg-info/requires.txt +0 -0
- {simview-3.2 → simview-3.4}/simview.egg-info/top_level.txt +0 -0
- {simview-3.2 → simview-3.4}/tests/test_columnar_states.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_contacts.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_launcher.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_live.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_merge.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_roundtrip.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_scene.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_server.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_show.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_terrain.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_trajectory.py +0 -0
- {simview-3.2 → simview-3.4}/tests/test_utils.py +0 -0
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simview
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4
|
|
4
4
|
Summary: THREE.js-based simulation visualization tool
|
|
5
|
-
Author-email: Ales Kucera <kuceral4@fel.cvut.cz>, David Korcak <david.korcak@gmail.com
|
|
5
|
+
Author-email: Jan Vlk <vlkjan6@fel.cvut.cz>, Ales Kucera <kuceral4@fel.cvut.cz>, David Korcak <david.korcak@gmail.com>
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
7
7
|
Project-URL: Homepage, https://github.com/vlk-jan/simview
|
|
8
8
|
Project-URL: Repository, https://github.com/vlk-jan/simview
|
|
9
9
|
Project-URL: Issues, https://github.com/vlk-jan/simview/issues
|
|
10
|
-
Classifier: Development Status ::
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
11
|
Classifier: Intended Audience :: Science/Research
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
16
|
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
16
17
|
Requires-Python: >=3.12
|
|
17
18
|
Description-Content-Type: text/markdown
|
|
@@ -67,16 +68,28 @@ require `torch`.
|
|
|
67
68
|
|
|
68
69
|
Requires **Python 3.12+**.
|
|
69
70
|
|
|
71
|
+
### From PyPI
|
|
72
|
+
|
|
70
73
|
To only view existing simulation JSON files:
|
|
71
74
|
|
|
72
75
|
```bash
|
|
73
|
-
pip install
|
|
76
|
+
pip install simview
|
|
74
77
|
```
|
|
75
78
|
|
|
76
79
|
To also author simulations from Python (installs `torch` and `einops`):
|
|
77
80
|
|
|
78
81
|
```bash
|
|
79
|
-
pip install
|
|
82
|
+
pip install "simview[authoring]"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### From source
|
|
86
|
+
|
|
87
|
+
For working on SimView itself (or to track an unreleased commit), install an
|
|
88
|
+
editable checkout instead:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pip install -e . # viewing only
|
|
92
|
+
pip install -e ".[authoring]" # viewing + authoring
|
|
80
93
|
```
|
|
81
94
|
|
|
82
95
|
For independent use of this repository, use `venv` or `uv`:
|
|
@@ -107,6 +120,67 @@ all of this using the following command:
|
|
|
107
120
|
simview clear
|
|
108
121
|
```
|
|
109
122
|
|
|
123
|
+
### Inspecting a scene file
|
|
124
|
+
|
|
125
|
+
To print a quick structural summary of a scene JSON file (body/terrain/state
|
|
126
|
+
breakdown, plus consistency warnings) without opening the viewer:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
simview info scene.json # human-readable text
|
|
130
|
+
simview info scene.json --json # machine-readable JSON (for scripts/agents)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Works on gzip-compressed files automatically, and does not require the
|
|
134
|
+
`authoring` extra.
|
|
135
|
+
|
|
136
|
+
### Querying terrain data
|
|
137
|
+
|
|
138
|
+
To read raw numeric terrain values (height, and friction/stiffness if present)
|
|
139
|
+
at a single point or over an area, without opening the viewer:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
simview terrain scene.json --point 1.5 -2.0 # bilinear-interpolated value(s) at (x, y)
|
|
143
|
+
simview terrain scene.json --area # whole terrain extent
|
|
144
|
+
simview terrain scene.json --area -5 5 -5 0 # xmin xmax ymin ymax sub-box
|
|
145
|
+
simview terrain scene.json --area --json # machine-readable JSON (for scripts/agents)
|
|
146
|
+
simview terrain scene.json --area --csv # CSV (for pandas/spreadsheets)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Add `--layer height|friction|stiffness` to restrict to one layer, `--batch N`
|
|
150
|
+
to pick a batch (only matters when the terrain isn't a singleton), and
|
|
151
|
+
`--stride N` to subsample an `--area` query. Like `simview info`, this works
|
|
152
|
+
on gzip-compressed files and doesn't require the `authoring` extra.
|
|
153
|
+
|
|
154
|
+
Pass `--batches A B` instead of `--batch N` to compare two batches directly
|
|
155
|
+
(e.g. a ground-truth terrain vs. a recovered friction/stiffness estimate)
|
|
156
|
+
instead of querying a single one — each layer then reports `value_a`,
|
|
157
|
+
`value_b`, and their `delta`:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
simview terrain scene.json --area --batches 0 1 --json # ground truth vs. estimate, whole extent
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Comparing two batches' trajectories
|
|
164
|
+
|
|
165
|
+
To check how far apart two batches' trajectories are — e.g. ground truth vs.
|
|
166
|
+
a model's prediction, or baseline vs. post-adaptation — without opening the
|
|
167
|
+
viewer:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
simview diff scene.json --batches 0 1 # every body, human-readable text
|
|
171
|
+
simview diff scene.json --batches 0 1 --json # machine-readable JSON (for scripts/agents)
|
|
172
|
+
simview diff scene.json --batches 0 1 --csv # CSV, one row per (body, frame)
|
|
173
|
+
simview diff scene.json --batches 0 1 --body Box # restrict to one body
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
For each body, this reports per-frame position error (meters) and
|
|
177
|
+
orientation error (degrees, quaternion angular distance) between the two
|
|
178
|
+
batches, plus mean/max/final summaries. Add `--every N` to subsample frames,
|
|
179
|
+
and `--pos-threshold METERS`/`--rot-threshold-deg DEGREES` to report the
|
|
180
|
+
first frame where a batch's trajectory diverges past a given tolerance. Like
|
|
181
|
+
`simview info`/`simview terrain`, this works on gzip-compressed files and
|
|
182
|
+
doesn't require the `authoring` extra.
|
|
183
|
+
|
|
110
184
|
### Visualization of exported simulations
|
|
111
185
|
|
|
112
186
|
To visualize a simulation defined in a JSON file, run the following command, replacing `[path_to_json_file]` with the actual path to your JSON data:
|
|
@@ -1,33 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: simview
|
|
3
|
-
Version: 3.2
|
|
4
|
-
Summary: THREE.js-based simulation visualization tool
|
|
5
|
-
Author-email: Ales Kucera <kuceral4@fel.cvut.cz>, David Korcak <david.korcak@gmail.com>, Jan Vlk <vlkjan6@fel.cvut.cz>
|
|
6
|
-
License-Expression: BSD-3-Clause
|
|
7
|
-
Project-URL: Homepage, https://github.com/vlk-jan/simview
|
|
8
|
-
Project-URL: Repository, https://github.com/vlk-jan/simview
|
|
9
|
-
Project-URL: Issues, https://github.com/vlk-jan/simview/issues
|
|
10
|
-
Classifier: Development Status :: 4 - Beta
|
|
11
|
-
Classifier: Intended Audience :: Science/Research
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
-
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
16
|
-
Requires-Python: >=3.12
|
|
17
|
-
Description-Content-Type: text/markdown
|
|
18
|
-
License-File: LICENSE
|
|
19
|
-
Requires-Dist: fastapi>=0.135.3
|
|
20
|
-
Requires-Dist: httptools>=0.7.1; sys_platform != "win32"
|
|
21
|
-
Requires-Dist: jinja2>=3.1.6
|
|
22
|
-
Requires-Dist: orjson>=3.11.8
|
|
23
|
-
Requires-Dist: uvicorn>=0.44.0
|
|
24
|
-
Requires-Dist: uvloop>=0.22.1; sys_platform != "win32"
|
|
25
|
-
Provides-Extra: authoring
|
|
26
|
-
Requires-Dist: torch; extra == "authoring"
|
|
27
|
-
Requires-Dist: einops; extra == "authoring"
|
|
28
|
-
Requires-Dist: numpy; extra == "authoring"
|
|
29
|
-
Dynamic: license-file
|
|
30
|
-
|
|
31
1
|
# SimView Visualizer
|
|
32
2
|
|
|
33
3
|
**SimView** is a powerful and interactive tool for visualizing 3D models and terrain data in simulations. It enables you to explore and analyze multiple simulation scenarios (batches) within a shared environment, all defined through an intuitive JSON format or a Python API.
|
|
@@ -67,16 +37,28 @@ require `torch`.
|
|
|
67
37
|
|
|
68
38
|
Requires **Python 3.12+**.
|
|
69
39
|
|
|
40
|
+
### From PyPI
|
|
41
|
+
|
|
70
42
|
To only view existing simulation JSON files:
|
|
71
43
|
|
|
72
44
|
```bash
|
|
73
|
-
pip install
|
|
45
|
+
pip install simview
|
|
74
46
|
```
|
|
75
47
|
|
|
76
48
|
To also author simulations from Python (installs `torch` and `einops`):
|
|
77
49
|
|
|
78
50
|
```bash
|
|
79
|
-
pip install
|
|
51
|
+
pip install "simview[authoring]"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### From source
|
|
55
|
+
|
|
56
|
+
For working on SimView itself (or to track an unreleased commit), install an
|
|
57
|
+
editable checkout instead:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
pip install -e . # viewing only
|
|
61
|
+
pip install -e ".[authoring]" # viewing + authoring
|
|
80
62
|
```
|
|
81
63
|
|
|
82
64
|
For independent use of this repository, use `venv` or `uv`:
|
|
@@ -107,6 +89,67 @@ all of this using the following command:
|
|
|
107
89
|
simview clear
|
|
108
90
|
```
|
|
109
91
|
|
|
92
|
+
### Inspecting a scene file
|
|
93
|
+
|
|
94
|
+
To print a quick structural summary of a scene JSON file (body/terrain/state
|
|
95
|
+
breakdown, plus consistency warnings) without opening the viewer:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
simview info scene.json # human-readable text
|
|
99
|
+
simview info scene.json --json # machine-readable JSON (for scripts/agents)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Works on gzip-compressed files automatically, and does not require the
|
|
103
|
+
`authoring` extra.
|
|
104
|
+
|
|
105
|
+
### Querying terrain data
|
|
106
|
+
|
|
107
|
+
To read raw numeric terrain values (height, and friction/stiffness if present)
|
|
108
|
+
at a single point or over an area, without opening the viewer:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
simview terrain scene.json --point 1.5 -2.0 # bilinear-interpolated value(s) at (x, y)
|
|
112
|
+
simview terrain scene.json --area # whole terrain extent
|
|
113
|
+
simview terrain scene.json --area -5 5 -5 0 # xmin xmax ymin ymax sub-box
|
|
114
|
+
simview terrain scene.json --area --json # machine-readable JSON (for scripts/agents)
|
|
115
|
+
simview terrain scene.json --area --csv # CSV (for pandas/spreadsheets)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Add `--layer height|friction|stiffness` to restrict to one layer, `--batch N`
|
|
119
|
+
to pick a batch (only matters when the terrain isn't a singleton), and
|
|
120
|
+
`--stride N` to subsample an `--area` query. Like `simview info`, this works
|
|
121
|
+
on gzip-compressed files and doesn't require the `authoring` extra.
|
|
122
|
+
|
|
123
|
+
Pass `--batches A B` instead of `--batch N` to compare two batches directly
|
|
124
|
+
(e.g. a ground-truth terrain vs. a recovered friction/stiffness estimate)
|
|
125
|
+
instead of querying a single one — each layer then reports `value_a`,
|
|
126
|
+
`value_b`, and their `delta`:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
simview terrain scene.json --area --batches 0 1 --json # ground truth vs. estimate, whole extent
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Comparing two batches' trajectories
|
|
133
|
+
|
|
134
|
+
To check how far apart two batches' trajectories are — e.g. ground truth vs.
|
|
135
|
+
a model's prediction, or baseline vs. post-adaptation — without opening the
|
|
136
|
+
viewer:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
simview diff scene.json --batches 0 1 # every body, human-readable text
|
|
140
|
+
simview diff scene.json --batches 0 1 --json # machine-readable JSON (for scripts/agents)
|
|
141
|
+
simview diff scene.json --batches 0 1 --csv # CSV, one row per (body, frame)
|
|
142
|
+
simview diff scene.json --batches 0 1 --body Box # restrict to one body
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
For each body, this reports per-frame position error (meters) and
|
|
146
|
+
orientation error (degrees, quaternion angular distance) between the two
|
|
147
|
+
batches, plus mean/max/final summaries. Add `--every N` to subsample frames,
|
|
148
|
+
and `--pos-threshold METERS`/`--rot-threshold-deg DEGREES` to report the
|
|
149
|
+
first frame where a batch's trajectory diverges past a given tolerance. Like
|
|
150
|
+
`simview info`/`simview terrain`, this works on gzip-compressed files and
|
|
151
|
+
doesn't require the `authoring` extra.
|
|
152
|
+
|
|
110
153
|
### Visualization of exported simulations
|
|
111
154
|
|
|
112
155
|
To visualize a simulation defined in a JSON file, run the following command, replacing `[path_to_json_file]` with the actual path to your JSON data:
|
|
@@ -4,23 +4,24 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "simview"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.4"
|
|
8
8
|
readme = "README.md"
|
|
9
9
|
requires-python = ">=3.12"
|
|
10
10
|
license = "BSD-3-Clause"
|
|
11
11
|
license-files = ["LICENSE"]
|
|
12
12
|
authors = [
|
|
13
|
+
{ name = "Jan Vlk", email = "vlkjan6@fel.cvut.cz" },
|
|
13
14
|
{ name = "Ales Kucera", email = "kuceral4@fel.cvut.cz" },
|
|
14
15
|
{ name = "David Korcak", email = "david.korcak@gmail.com" },
|
|
15
|
-
{ name = "Jan Vlk", email = "vlkjan6@fel.cvut.cz" },
|
|
16
16
|
]
|
|
17
17
|
description = "THREE.js-based simulation visualization tool"
|
|
18
18
|
classifiers = [
|
|
19
|
-
"Development Status ::
|
|
19
|
+
"Development Status :: 5 - Production/Stable",
|
|
20
20
|
"Intended Audience :: Science/Research",
|
|
21
21
|
"Programming Language :: Python :: 3",
|
|
22
22
|
"Programming Language :: Python :: 3.12",
|
|
23
23
|
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Programming Language :: Python :: 3.14",
|
|
24
25
|
"Topic :: Scientific/Engineering :: Visualization",
|
|
25
26
|
]
|
|
26
27
|
dependencies = [
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
from importlib.metadata import PackageNotFoundError
|
|
3
|
+
from importlib.metadata import version as _version
|
|
2
4
|
from typing import TYPE_CHECKING
|
|
3
5
|
|
|
4
6
|
CACHE_DIR = ".simview_cache"
|
|
5
7
|
|
|
8
|
+
try:
|
|
9
|
+
__version__ = _version("simview")
|
|
10
|
+
except PackageNotFoundError:
|
|
11
|
+
# Editable/source checkout that was never installed as a distribution.
|
|
12
|
+
__version__ = "0.0.0.dev0"
|
|
13
|
+
del _version, PackageNotFoundError
|
|
14
|
+
|
|
6
15
|
# Library best practice: attach a NullHandler to the package root logger so
|
|
7
16
|
# `import simview` is silent by default for downstream users. Applications
|
|
8
17
|
# (including simview's own CLI, in __main__.py) are responsible for adding
|
|
@@ -41,6 +50,7 @@ if TYPE_CHECKING:
|
|
|
41
50
|
from simview.state import BodyTrajectory, SimViewBodyState
|
|
42
51
|
|
|
43
52
|
__all__ = [
|
|
53
|
+
"__version__",
|
|
44
54
|
"CACHE_DIR",
|
|
45
55
|
"SimulationScene",
|
|
46
56
|
"ViewerHandle",
|