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.
Files changed (190) hide show
  1. {simview-3.2 → simview-3.4}/PKG-INFO +79 -5
  2. simview-3.2/simview.egg-info/PKG-INFO → simview-3.4/README.md +75 -32
  3. {simview-3.2 → simview-3.4}/pyproject.toml +4 -3
  4. {simview-3.2 → simview-3.4}/simview/__init__.py +10 -0
  5. simview-3.4/simview/__main__.py +463 -0
  6. simview-3.4/simview/diff.py +360 -0
  7. simview-3.4/simview/info.py +561 -0
  8. {simview-3.2 → simview-3.4}/simview/live.py +12 -0
  9. {simview-3.2 → simview-3.4}/simview/server.py +1 -0
  10. {simview-3.2 → simview-3.4}/simview/static/js/components/BatchManager.js +0 -2
  11. simview-3.4/simview/terrain.py +558 -0
  12. simview-3.2/README.md → simview-3.4/simview.egg-info/PKG-INFO +106 -2
  13. {simview-3.2 → simview-3.4}/simview.egg-info/SOURCES.txt +6 -0
  14. simview-3.4/tests/test_cli.py +621 -0
  15. simview-3.4/tests/test_diff.py +248 -0
  16. simview-3.4/tests/test_info.py +255 -0
  17. simview-3.4/tests/test_terrain_query.py +333 -0
  18. simview-3.2/simview/__main__.py +0 -174
  19. simview-3.2/tests/test_cli.py +0 -169
  20. {simview-3.2 → simview-3.4}/LICENSE +0 -0
  21. {simview-3.2 → simview-3.4}/MANIFEST.in +0 -0
  22. {simview-3.2 → simview-3.4}/setup.cfg +0 -0
  23. {simview-3.2 → simview-3.4}/simview/launcher.py +0 -0
  24. {simview-3.2 → simview-3.4}/simview/merge.py +0 -0
  25. {simview-3.2 → simview-3.4}/simview/model.py +0 -0
  26. {simview-3.2 → simview-3.4}/simview/py.typed +0 -0
  27. {simview-3.2 → simview-3.4}/simview/scene.py +0 -0
  28. {simview-3.2 → simview-3.4}/simview/state.py +0 -0
  29. {simview-3.2 → simview-3.4}/simview/static/css/controls.css +0 -0
  30. {simview-3.2 → simview-3.4}/simview/static/js/SimView.js +0 -0
  31. {simview-3.2 → simview-3.4}/simview/static/js/components/AnimationController.js +0 -0
  32. {simview-3.2 → simview-3.4}/simview/static/js/components/InteractionController.js +0 -0
  33. {simview-3.2 → simview-3.4}/simview/static/js/components/InteractionControls.js +0 -0
  34. {simview-3.2 → simview-3.4}/simview/static/js/components/Scene.js +0 -0
  35. {simview-3.2 → simview-3.4}/simview/static/js/components/StateStore.js +0 -0
  36. {simview-3.2 → simview-3.4}/simview/static/js/config.js +0 -0
  37. {simview-3.2 → simview-3.4}/simview/static/js/main.js +0 -0
  38. {simview-3.2 → simview-3.4}/simview/static/js/objects/Body.js +0 -0
  39. {simview-3.2 → simview-3.4}/simview/static/js/objects/StaticObject.js +0 -0
  40. {simview-3.2 → simview-3.4}/simview/static/js/objects/Terrain.js +0 -0
  41. {simview-3.2 → simview-3.4}/simview/static/js/objects/utils.js +0 -0
  42. {simview-3.2 → simview-3.4}/simview/static/js/ui/AnalysisPanel.js +0 -0
  43. {simview-3.2 → simview-3.4}/simview/static/js/ui/BatchLegend.js +0 -0
  44. {simview-3.2 → simview-3.4}/simview/static/js/ui/BodyStateWindow.js +0 -0
  45. {simview-3.2 → simview-3.4}/simview/static/js/ui/Controls.js +0 -0
  46. {simview-3.2 → simview-3.4}/simview/static/js/ui/ErrorMetrics.js +0 -0
  47. {simview-3.2 → simview-3.4}/simview/static/js/ui/Legend.js +0 -0
  48. {simview-3.2 → simview-3.4}/simview/static/js/ui/PlaybackControls.js +0 -0
  49. {simview-3.2 → simview-3.4}/simview/static/js/ui/ScalarPlotter.js +0 -0
  50. {simview-3.2 → simview-3.4}/simview/static/js/utils/blobCodec.js +0 -0
  51. {simview-3.2 → simview-3.4}/simview/static/js/utils/bodyTransforms.js +0 -0
  52. {simview-3.2 → simview-3.4}/simview/static/js/utils/csv.js +0 -0
  53. {simview-3.2 → simview-3.4}/simview/static/js/utils/errorMath.js +0 -0
  54. {simview-3.2 → simview-3.4}/simview/static/js/utils/injectStyles.js +0 -0
  55. {simview-3.2 → simview-3.4}/simview/static/js/utils/interpolate.js +0 -0
  56. {simview-3.2 → simview-3.4}/simview/static/js/utils/liveFollow.js +0 -0
  57. {simview-3.2 → simview-3.4}/simview/static/js/utils/loadRecordingLibs.js +0 -0
  58. {simview-3.2 → simview-3.4}/simview/static/js/utils/viewState.js +0 -0
  59. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/index.min.js +0 -0
  60. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/Color.js +0 -0
  61. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/chroma.js +0 -0
  62. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/colors/colorbrewer.js +0 -0
  63. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/colors/w3cx11.js +0 -0
  64. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/average.js +0 -0
  65. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/bezier.js +0 -0
  66. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/blend.js +0 -0
  67. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/cubehelix.js +0 -0
  68. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/mix.js +0 -0
  69. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/random.js +0 -0
  70. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/generator/scale.js +0 -0
  71. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/_hsx.js +0 -0
  72. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hcg.js +0 -0
  73. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hsi.js +0 -0
  74. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hsl.js +0 -0
  75. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/hsv.js +0 -0
  76. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/index.js +0 -0
  77. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/lab.js +0 -0
  78. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/lch.js +0 -0
  79. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/lrgb.js +0 -0
  80. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/num.js +0 -0
  81. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/oklab.js +0 -0
  82. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/oklch.js +0 -0
  83. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/interpolator/rgb.js +0 -0
  84. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/cmyk/cmyk2rgb.js +0 -0
  85. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/cmyk/index.js +0 -0
  86. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/cmyk/rgb2cmyk.js +0 -0
  87. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/css2rgb.js +0 -0
  88. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/hsl2css.js +0 -0
  89. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/index.js +0 -0
  90. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/lab2css.js +0 -0
  91. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/lch2css.js +0 -0
  92. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/oklab2css.js +0 -0
  93. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/oklch2css.js +0 -0
  94. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/css/rgb2css.js +0 -0
  95. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/gl/index.js +0 -0
  96. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hcg/hcg2rgb.js +0 -0
  97. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hcg/index.js +0 -0
  98. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hcg/rgb2hcg.js +0 -0
  99. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hex/hex2rgb.js +0 -0
  100. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hex/index.js +0 -0
  101. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hex/rgb2hex.js +0 -0
  102. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsi/hsi2rgb.js +0 -0
  103. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsi/index.js +0 -0
  104. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsi/rgb2hsi.js +0 -0
  105. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsl/hsl2rgb.js +0 -0
  106. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsl/index.js +0 -0
  107. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsl/rgb2hsl.js +0 -0
  108. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsv/hsv2rgb.js +0 -0
  109. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsv/index.js +0 -0
  110. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/hsv/rgb2hsv.js +0 -0
  111. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/input.js +0 -0
  112. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/index.js +0 -0
  113. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/lab-constants.js +0 -0
  114. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/lab2rgb.js +0 -0
  115. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lab/rgb2lab.js +0 -0
  116. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/hcl2rgb.js +0 -0
  117. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/index.js +0 -0
  118. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/lab2lch.js +0 -0
  119. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/lch2lab.js +0 -0
  120. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/lch2rgb.js +0 -0
  121. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/lch/rgb2lch.js +0 -0
  122. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/named/index.js +0 -0
  123. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/num/index.js +0 -0
  124. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/num/num2rgb.js +0 -0
  125. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/num/rgb2num.js +0 -0
  126. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklab/index.js +0 -0
  127. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklab/oklab2rgb.js +0 -0
  128. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklab/rgb2oklab.js +0 -0
  129. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklch/index.js +0 -0
  130. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklch/oklch2rgb.js +0 -0
  131. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/oklch/rgb2oklch.js +0 -0
  132. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/rgb/index.js +0 -0
  133. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/temp/index.js +0 -0
  134. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/temp/rgb2temperature.js +0 -0
  135. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/io/temp/temperature2rgb.js +0 -0
  136. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/alpha.js +0 -0
  137. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/clipped.js +0 -0
  138. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/darken.js +0 -0
  139. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/get.js +0 -0
  140. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/luminance.js +0 -0
  141. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/mix.js +0 -0
  142. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/premultiply.js +0 -0
  143. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/saturate.js +0 -0
  144. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/set.js +0 -0
  145. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/ops/shade.js +0 -0
  146. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/analyze.js +0 -0
  147. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/clip_rgb.js +0 -0
  148. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/contrast.js +0 -0
  149. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/contrastAPCA.js +0 -0
  150. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/delta-e.js +0 -0
  151. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/distance.js +0 -0
  152. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/index.js +0 -0
  153. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/last.js +0 -0
  154. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/limit.js +0 -0
  155. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/multiply-matrices.js +0 -0
  156. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/scales.js +0 -0
  157. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/type.js +0 -0
  158. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/unpack.js +0 -0
  159. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/utils/valid.js +0 -0
  160. {simview-3.2 → simview-3.4}/simview/static/lib/chroma-js-3.1.2/src/version.js +0 -0
  161. {simview-3.2 → simview-3.4}/simview/static/lib/download.js +0 -0
  162. {simview-3.2 → simview-3.4}/simview/static/lib/js-colormaps.js +0 -0
  163. {simview-3.2 → simview-3.4}/simview/static/lib/tar.js +0 -0
  164. {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/addons/controls/OrbitControls.js +0 -0
  165. {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/addons/libs/lil-gui.module.min.js +0 -0
  166. {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/three.core.js +0 -0
  167. {simview-3.2 → simview-3.4}/simview/static/lib/three-0.174.0/three.module.js +0 -0
  168. {simview-3.2 → simview-3.4}/simview/static/lib/uPlot.esm.js +0 -0
  169. {simview-3.2 → simview-3.4}/simview/static/lib/uPlot.min.css +0 -0
  170. {simview-3.2 → simview-3.4}/simview/static/textures/contacts/red-cross0.png +0 -0
  171. {simview-3.2 → simview-3.4}/simview/static/textures/points/ball0.png +0 -0
  172. {simview-3.2 → simview-3.4}/simview/static/textures/points/ball1.png +0 -0
  173. {simview-3.2 → simview-3.4}/simview/templates/index.html +0 -0
  174. {simview-3.2 → simview-3.4}/simview/utils.py +0 -0
  175. {simview-3.2 → simview-3.4}/simview.egg-info/dependency_links.txt +0 -0
  176. {simview-3.2 → simview-3.4}/simview.egg-info/entry_points.txt +0 -0
  177. {simview-3.2 → simview-3.4}/simview.egg-info/requires.txt +0 -0
  178. {simview-3.2 → simview-3.4}/simview.egg-info/top_level.txt +0 -0
  179. {simview-3.2 → simview-3.4}/tests/test_columnar_states.py +0 -0
  180. {simview-3.2 → simview-3.4}/tests/test_contacts.py +0 -0
  181. {simview-3.2 → simview-3.4}/tests/test_launcher.py +0 -0
  182. {simview-3.2 → simview-3.4}/tests/test_live.py +0 -0
  183. {simview-3.2 → simview-3.4}/tests/test_merge.py +0 -0
  184. {simview-3.2 → simview-3.4}/tests/test_roundtrip.py +0 -0
  185. {simview-3.2 → simview-3.4}/tests/test_scene.py +0 -0
  186. {simview-3.2 → simview-3.4}/tests/test_server.py +0 -0
  187. {simview-3.2 → simview-3.4}/tests/test_show.py +0 -0
  188. {simview-3.2 → simview-3.4}/tests/test_terrain.py +0 -0
  189. {simview-3.2 → simview-3.4}/tests/test_trajectory.py +0 -0
  190. {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.2
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>, Jan Vlk <vlkjan6@fel.cvut.cz>
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 :: 4 - Beta
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 -e .
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 -e ".[authoring]"
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 -e .
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 -e ".[authoring]"
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.2"
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 :: 4 - Beta",
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",