lavavu 1.9.0__tar.gz → 1.9.6__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.
- {lavavu-1.9.0/lavavu.egg-info → lavavu-1.9.6}/PKG-INFO +14 -11
- {lavavu-1.9.0 → lavavu-1.9.6}/README.md +12 -10
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/control.py +18 -5
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/menu.js +9 -4
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/webview.html +1 -1
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/lavavu.py +65 -50
- {lavavu-1.9.0 → lavavu-1.9.6/lavavu.egg-info}/PKG-INFO +14 -11
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu.egg-info/SOURCES.txt +0 -6
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu.egg-info/requires.txt +1 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/requirements.txt +1 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/setup.py +9 -14
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Geometry.cpp +47 -11
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Geometry.h +8 -6
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Include.h +1 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/InteractiveViewer.cpp +4 -1
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Model.cpp +12 -1
- {lavavu-1.9.0 → lavavu-1.9.6}/src/TriSurfaces.cpp +4 -4
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Triangles.cpp +3 -2
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Util.cpp +3 -2
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Util.h +1 -1
- lavavu-1.9.6/src/version.cpp +2 -0
- lavavu-1.9.0/lavavu/html/LavaVu-amalgamated.js +0 -7241
- lavavu-1.9.0/lavavu/html/LavaVu.data +0 -3923
- lavavu-1.9.0/lavavu/html/LavaVu.html +0 -1296
- lavavu-1.9.0/lavavu/html/LavaVu.js +0 -6035
- lavavu-1.9.0/lavavu/html/LavaVu.wasm +0 -0
- lavavu-1.9.0/lavavu/html/emscripten.js +0 -184
- lavavu-1.9.0/src/version.cpp +0 -2
- {lavavu-1.9.0 → lavavu-1.9.6}/LICENSE.md +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/MANIFEST.in +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/Makefile +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/LavaVuPython.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/__init__.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/__main__.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/amalgamate.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/aserver.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/convert.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/dict.json +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/font.bin +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/LavaVu-amalgamated.css +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/OK-min.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/baseviewer.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/control.css +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/control.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/dat-gui-light-theme.css +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/dat.gui.min.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/draw.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/drawbox.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/emscripten-template.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/emscripten.css +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/favicon.ico +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/gl-matrix-min.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/gui.css +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/server.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/stats.min.js +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/styles.css +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/html/webview-template.html +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/osmesa/LavaVuPython.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/osmesa/__init__.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/points.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/server.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/default.frag +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/default.vert +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/fontShader.frag +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/fontShader.vert +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/lineShader.frag +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/lineShader.vert +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/pointShader.frag +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/pointShader.vert +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/triShader.frag +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/triShader.vert +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/volumeShader.frag +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/shaders/volumeShader.vert +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/tracers.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu/vutils.py +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu.egg-info/dependency_links.txt +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu.egg-info/entry_points.txt +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/lavavu.egg-info/top_level.txt +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/pyproject.toml +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/setup.cfg +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/ApplicationInterface.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/ColourMap.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/ColourMap.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Colours.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Colours.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Contour.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Contour.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/DrawingObject.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/DrawingObject.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Extensions.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Extensions.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/FontLine.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/FontSans.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/GLUtils.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/GLUtils.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/GraphicsUtil.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/GraphicsUtil.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/InputInterface.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/IsoSurface.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/IsoSurface.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/LavaVu.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/LavaVu.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/LavaVuPython_wrap.cxx +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Lines.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/LinesSorted.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Links.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/CGLViewer.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/CGLViewer.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/CocoaViewer.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/CocoaViewer.mm +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/EGLViewer.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/EGLViewer.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/GLFWViewer.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/GLFWViewer.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/OSMesaViewer.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/OSMesaViewer.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/X11Viewer.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/X11Viewer.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Main/main.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Model.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/OpenGLViewer.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/OpenGLViewer.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/OutputInterface.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Points.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/QuadSurfaces.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/RenderContext.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/RenderContext.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Session.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Session.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Shaders.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Shaders.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Shapes.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/TimeStep.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Tracers.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Vectors.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/VideoEncoder.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/VideoEncoder.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/View.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/View.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/ViewerApp.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/ViewerTypes.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/Volumes.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/base64.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/base64.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/fifo_map.hpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/jpeg/jpgd.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/jpeg/jpgd.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/jpeg/jpge.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/jpeg/jpge.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/json.hpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/linalg.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/miniz/miniz.c +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/miniz/miniz.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/png/lodepng.cpp +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/png/lodepng.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/sqlite3/sqlite3.c +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/sqlite3/sqlite3.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/stb_image_resize.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/tiny_obj_loader.h +0 -0
- {lavavu-1.9.0 → lavavu-1.9.6}/src/version.h +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lavavu
|
3
|
-
Version: 1.9.
|
3
|
+
Version: 1.9.6
|
4
4
|
Summary: Python interface to LavaVu OpenGL 3D scientific visualisation utilities
|
5
5
|
Author-email: Owen Kaluza <owen@kaluza.id.au>
|
6
6
|
License: ### Licensing
|
@@ -215,6 +215,7 @@ License-File: LICENSE.md
|
|
215
215
|
Requires-Dist: numpy>=1.18
|
216
216
|
Requires-Dist: aiohttp
|
217
217
|
Requires-Dist: jupyter_server_proxy
|
218
|
+
Requires-Dist: matplotlib
|
218
219
|
Requires-Dist: numpy-quaternion
|
219
220
|
Dynamic: license-file
|
220
221
|
|
@@ -223,7 +224,7 @@ Dynamic: license-file
|
|
223
224
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Test)
|
224
225
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Deploy)
|
225
226
|
[](https://zenodo.org/badge/latestdoi/45163055)
|
226
|
-
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.
|
227
|
+
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.6)
|
227
228
|
|
228
229
|
A scientific visualisation tool with a python interface for fast and flexible visual analysis.
|
229
230
|
|
@@ -236,7 +237,7 @@ Prior development was funded by the Monash Immersive Visualisation Plaform at [M
|
|
236
237
|
|
237
238
|
The acronym stands for: lightweight, automatable visualisation and analysis viewing utility, but "lava" is also a reference to its primary application as a viewer for geophysical simulations. It was also chosen to be unique enough to find the repository with google.
|
238
239
|
|
239
|
-
The project started
|
240
|
+
The project started as a replacement rendering library for the gLucifer<sup>1</sup> framework, visualising geodynamics simulations. The new OpenGL visualisation code was re-implemented as a more general purpose visualisation tool. gLucifer continues as a set of sampling tools for Underworld simulations as part of the [Underworld2](https://github.com/underworldcode/underworld2/) code. LavaVu provides the rendering library for creating 2d and 3d visualisations to view this sampled data, inline within interactive Jupyter notebooks and offline through saved visualisation databases and images/movies.
|
240
241
|
|
241
242
|
As a standalone tool it is a scriptable 3D visualisation tool capable of producing publication quality high res images and video output from time varying data sets along with HTML5 3D visualisations in WebGL.
|
242
243
|
Rendering features include correctly and efficiently rendering large numbers of opaque and transparent points and surfaces and volume rendering by GPU ray-marching. There are also features for drawing vector fields and tracers (streamlines).
|
@@ -259,13 +260,10 @@ Development happens in the "master" branch with stable releases tagged, so if yo
|
|
259
260
|
It's now in the python package index, so you can install with *pip*:
|
260
261
|
|
261
262
|
```
|
262
|
-
pip install
|
263
|
+
python -m pip install lavavu
|
263
264
|
```
|
264
265
|
|
265
|
-
>
|
266
|
-
|
267
|
-
> Currently no binaries are provided and the installer needs to compile the library, so on Linux you may need some developer tools and headers first, eg: for Ubuntu:
|
268
|
-
`sudo apt install build-essential libgl1-mesa-dev libx11-dev zlib1g-dev`
|
266
|
+
> Currently binary wheels are provided for Linux x86_64, MacOS x86_64 and ARM64 and Windows x86_64.
|
269
267
|
|
270
268
|
To try it out:
|
271
269
|
|
@@ -282,7 +280,12 @@ Alternatively, clone this repository with *git* and build from source:
|
|
282
280
|
```
|
283
281
|
git clone https://github.com/lavavu/LavaVu
|
284
282
|
cd LavaVu
|
283
|
+
python -m pip install .
|
284
|
+
```
|
285
|
+
or
|
286
|
+
```
|
285
287
|
make -j4
|
288
|
+
|
286
289
|
```
|
287
290
|
|
288
291
|
If all goes well the viewer will be built, try running with:
|
@@ -291,14 +294,14 @@ If all goes well the viewer will be built, try running with:
|
|
291
294
|
### Dependencies ###
|
292
295
|
|
293
296
|
* OpenGL and Zlib, present on most systems, headers may need to be installed
|
294
|
-
* To use with python requires python
|
295
|
-
* For video output, requires: libavcodec, libavformat, libavutil, libswscale (from FFmpeg / libav)
|
297
|
+
* To use with python requires python 3.6+ and NumPy
|
298
|
+
* For video output, requires: PyAV or for built in encoding, libavcodec, libavformat, libavutil, libswscale (from FFmpeg / libav)
|
296
299
|
* To build the python interface from source requires swig (http://www.swig.org/)
|
297
300
|
|
298
301
|
### Who do I talk to? ###
|
299
302
|
|
300
303
|
* Report bugs/issues here on github: https://github.com/lavavu/LavaVu/issues
|
301
|
-
* Contact developer: Owen Kaluza (at)
|
304
|
+
* Contact developer: Owen Kaluza (at) anu.edu.au
|
302
305
|
|
303
306
|
For further documentation / examples, see the online documentation
|
304
307
|
* https://lavavu.github.io/Documentation
|
@@ -3,7 +3,7 @@
|
|
3
3
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Test)
|
4
4
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Deploy)
|
5
5
|
[](https://zenodo.org/badge/latestdoi/45163055)
|
6
|
-
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.
|
6
|
+
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.6)
|
7
7
|
|
8
8
|
A scientific visualisation tool with a python interface for fast and flexible visual analysis.
|
9
9
|
|
@@ -16,7 +16,7 @@ Prior development was funded by the Monash Immersive Visualisation Plaform at [M
|
|
16
16
|
|
17
17
|
The acronym stands for: lightweight, automatable visualisation and analysis viewing utility, but "lava" is also a reference to its primary application as a viewer for geophysical simulations. It was also chosen to be unique enough to find the repository with google.
|
18
18
|
|
19
|
-
The project started
|
19
|
+
The project started as a replacement rendering library for the gLucifer<sup>1</sup> framework, visualising geodynamics simulations. The new OpenGL visualisation code was re-implemented as a more general purpose visualisation tool. gLucifer continues as a set of sampling tools for Underworld simulations as part of the [Underworld2](https://github.com/underworldcode/underworld2/) code. LavaVu provides the rendering library for creating 2d and 3d visualisations to view this sampled data, inline within interactive Jupyter notebooks and offline through saved visualisation databases and images/movies.
|
20
20
|
|
21
21
|
As a standalone tool it is a scriptable 3D visualisation tool capable of producing publication quality high res images and video output from time varying data sets along with HTML5 3D visualisations in WebGL.
|
22
22
|
Rendering features include correctly and efficiently rendering large numbers of opaque and transparent points and surfaces and volume rendering by GPU ray-marching. There are also features for drawing vector fields and tracers (streamlines).
|
@@ -39,13 +39,10 @@ Development happens in the "master" branch with stable releases tagged, so if yo
|
|
39
39
|
It's now in the python package index, so you can install with *pip*:
|
40
40
|
|
41
41
|
```
|
42
|
-
pip install
|
42
|
+
python -m pip install lavavu
|
43
43
|
```
|
44
44
|
|
45
|
-
>
|
46
|
-
|
47
|
-
> Currently no binaries are provided and the installer needs to compile the library, so on Linux you may need some developer tools and headers first, eg: for Ubuntu:
|
48
|
-
`sudo apt install build-essential libgl1-mesa-dev libx11-dev zlib1g-dev`
|
45
|
+
> Currently binary wheels are provided for Linux x86_64, MacOS x86_64 and ARM64 and Windows x86_64.
|
49
46
|
|
50
47
|
To try it out:
|
51
48
|
|
@@ -62,7 +59,12 @@ Alternatively, clone this repository with *git* and build from source:
|
|
62
59
|
```
|
63
60
|
git clone https://github.com/lavavu/LavaVu
|
64
61
|
cd LavaVu
|
62
|
+
python -m pip install .
|
63
|
+
```
|
64
|
+
or
|
65
|
+
```
|
65
66
|
make -j4
|
67
|
+
|
66
68
|
```
|
67
69
|
|
68
70
|
If all goes well the viewer will be built, try running with:
|
@@ -71,14 +73,14 @@ If all goes well the viewer will be built, try running with:
|
|
71
73
|
### Dependencies ###
|
72
74
|
|
73
75
|
* OpenGL and Zlib, present on most systems, headers may need to be installed
|
74
|
-
* To use with python requires python
|
75
|
-
* For video output, requires: libavcodec, libavformat, libavutil, libswscale (from FFmpeg / libav)
|
76
|
+
* To use with python requires python 3.6+ and NumPy
|
77
|
+
* For video output, requires: PyAV or for built in encoding, libavcodec, libavformat, libavutil, libswscale (from FFmpeg / libav)
|
76
78
|
* To build the python interface from source requires swig (http://www.swig.org/)
|
77
79
|
|
78
80
|
### Who do I talk to? ###
|
79
81
|
|
80
82
|
* Report bugs/issues here on github: https://github.com/lavavu/LavaVu/issues
|
81
|
-
* Contact developer: Owen Kaluza (at)
|
83
|
+
* Contact developer: Owen Kaluza (at) anu.edu.au
|
82
84
|
|
83
85
|
For further documentation / examples, see the online documentation
|
84
86
|
* https://lavavu.github.io/Documentation
|
@@ -1689,13 +1689,26 @@ class _ControlFactory(object):
|
|
1689
1689
|
"""
|
1690
1690
|
if not is_notebook():
|
1691
1691
|
return
|
1692
|
-
|
1692
|
+
from IPython.display import display,HTML,Javascript
|
1693
|
+
display(Javascript(self.redisplay_call()))
|
1694
|
+
|
1695
|
+
def redisplay_call(self):
|
1696
|
+
"""Update the active viewer image if any
|
1697
|
+
Applies changes made in python to the viewer and forces a redisplay
|
1698
|
+
"""
|
1699
|
+
#Find matching viewer id, redisplay first match
|
1700
|
+
ids = self.active_viewers()
|
1701
|
+
return ';'.join('_wi["{0}"].redisplay()'.format(i) for i in ids)
|
1702
|
+
|
1703
|
+
def active_viewers(self):
|
1704
|
+
"""Return matching active viewer IDs
|
1705
|
+
"""
|
1706
|
+
#Find matching viewer ids, all that match
|
1707
|
+
ids = []
|
1693
1708
|
for idx,obj in enumerate(windows):
|
1694
1709
|
if obj == self._target():
|
1695
|
-
|
1696
|
-
|
1697
|
-
#display(Javascript('_wi["{0}"].redisplay();'.format(viewerid)))
|
1698
|
-
display(HTML('<script>_wi["{0}"].redisplay();</script>'.format(viewerid)))
|
1710
|
+
ids.append(winids[idx])
|
1711
|
+
return ids
|
1699
1712
|
|
1700
1713
|
def update(self):
|
1701
1714
|
"""Update the control values from current viewer data
|
@@ -123,7 +123,12 @@ function menu_addctrls(menu, obj, viewer, onchange) {
|
|
123
123
|
//Check if it has been set on the target object
|
124
124
|
if (prop in obj) {
|
125
125
|
//console.log(prop + " ==> " + JSON.stringify(viewer.dict[prop]));
|
126
|
-
|
126
|
+
try {
|
127
|
+
//Catch errors and continue gracefully
|
128
|
+
menu_addctrl(menu, obj, viewer, prop, onchange);
|
129
|
+
} catch(e) {
|
130
|
+
console.log("Error adding control to menu: " + e);
|
131
|
+
}
|
127
132
|
|
128
133
|
} else {
|
129
134
|
//Save list of properties without controls
|
@@ -159,9 +164,9 @@ function menu_addctrls(menu, obj, viewer, onchange) {
|
|
159
164
|
|
160
165
|
function menu_addcmaps(menu, obj, viewer, onchange) {
|
161
166
|
//Colourmap editing menu
|
162
|
-
if (viewer.cgui.prmenu) viewer.cgui.
|
163
|
-
if (viewer.cgui.cmenu) viewer.cgui.
|
164
|
-
if (viewer.cgui.pomenu) viewer.cgui.
|
167
|
+
if (viewer.cgui.prmenu) viewer.cgui.remove(viewer.cgui.prmenu);
|
168
|
+
if (viewer.cgui.cmenu) viewer.cgui.remove(viewer.cgui.cmenu);
|
169
|
+
if (viewer.cgui.pomenu) viewer.cgui.remove(viewer.cgui.pomenu);
|
165
170
|
viewer.cgui.prmenu = viewer.cgui.addFolder("Properties");
|
166
171
|
viewer.cgui.cmenu = viewer.cgui.addFolder("Colours");
|
167
172
|
viewer.cgui.pomenu = viewer.cgui.addFolder("Positions");
|
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
<input id="fileinput" type="file" style="visibility:hidden" onchange="useFileInput(this)" />
|
29
29
|
|
30
|
-
<script async src="https://cdn.jsdelivr.net/gh/lavavu/lavavu.github.io@1.9.
|
30
|
+
<script async src="https://cdn.jsdelivr.net/gh/lavavu/lavavu.github.io@1.9.6/LavaVu-amalgamated.min.js"></script>
|
31
31
|
<!--script src="dat.gui.min.js"></script>
|
32
32
|
<script src="OK-min.js"></script>
|
33
33
|
|
@@ -53,6 +53,7 @@ import weakref
|
|
53
53
|
import asyncio
|
54
54
|
import quaternion as quat
|
55
55
|
import platform
|
56
|
+
import matplotlib
|
56
57
|
|
57
58
|
if sys.version_info[0] < 3:
|
58
59
|
print("Python 3 required. LavaVu no longer supports Python 2.7.")
|
@@ -610,12 +611,12 @@ class Object(dict):
|
|
610
611
|
return key in self.dict
|
611
612
|
|
612
613
|
def __repr__(self):
|
613
|
-
return
|
614
|
+
return self.__str__()
|
614
615
|
|
615
616
|
def __str__(self):
|
616
617
|
#Default string representation
|
617
618
|
self.parent._get() #Ensure in sync
|
618
|
-
return '{\n' + str('\n'.join([' %s=%s' % (k,json.dumps(v)) for k,v in self.dict.items()])) + '\n}
|
619
|
+
return '{\n' + str('\n'.join([' %s=%s' % (k,json.dumps(v)) for k,v in self.dict.items()])) + '\n}'
|
619
620
|
|
620
621
|
#Interface for setting filters
|
621
622
|
def include(self, *args, **kwargs):
|
@@ -1144,7 +1145,12 @@ class Object(dict):
|
|
1144
1145
|
#Re-arrange to array of [r,g,b,a] values
|
1145
1146
|
data = numpy.dstack((data[0],data[1],data[2]))
|
1146
1147
|
|
1147
|
-
|
1148
|
+
#Use the shape as dims for texture image data
|
1149
|
+
if len(data.shape) > 1:
|
1150
|
+
width, height = data.shape[1], data.shape[0]
|
1151
|
+
depth = 4 #4 channel RGBA
|
1152
|
+
|
1153
|
+
self._loadScalar(data, LavaVuPython.lucRGBAData, width, height, depth)
|
1148
1154
|
|
1149
1155
|
|
1150
1156
|
def luminance(self, data):
|
@@ -1271,6 +1277,8 @@ class Object(dict):
|
|
1271
1277
|
self.ref.colourMap = data.ref
|
1272
1278
|
data = None
|
1273
1279
|
else:
|
1280
|
+
if isinstance(data, matplotlib.colors.Colormap):
|
1281
|
+
data = matplotlib_cmap(data)
|
1274
1282
|
if data is None:
|
1275
1283
|
self.parent._get() #Ensure in sync
|
1276
1284
|
cmid = self["colourmap"]
|
@@ -2739,7 +2747,7 @@ class Viewer(dict):
|
|
2739
2747
|
|
2740
2748
|
"""
|
2741
2749
|
|
2742
|
-
def __init__(self, *args, resolution=None, binpath=None, context=
|
2750
|
+
def __init__(self, *args, resolution=None, binpath=None, context=None, port=8080, threads=False, **kwargs):
|
2743
2751
|
"""
|
2744
2752
|
Create and init viewer instance
|
2745
2753
|
|
@@ -2776,7 +2784,9 @@ class Viewer(dict):
|
|
2776
2784
|
self._collections = {}
|
2777
2785
|
self.validate = True #Property validation flag
|
2778
2786
|
self.recording = None
|
2779
|
-
self.context =
|
2787
|
+
self.context = context
|
2788
|
+
if self.context is None:
|
2789
|
+
self.context = os.environ.get('LV_CONTEXT', 'default')
|
2780
2790
|
|
2781
2791
|
#Exit handler to clean up threads
|
2782
2792
|
#(__del__ does not always seem to get called on termination)
|
@@ -4177,7 +4187,7 @@ class Viewer(dict):
|
|
4177
4187
|
from IPython.display import display,HTML,Javascript
|
4178
4188
|
display(Javascript(js + code))
|
4179
4189
|
|
4180
|
-
def video(self, filename="", resolution=(0,0), fps=30, quality=
|
4190
|
+
def video(self, filename="", resolution=(0,0), fps=30, quality=2, encoder="h264", embed=False, player=None, options={}, **kwargs):
|
4181
4191
|
"""
|
4182
4192
|
Record and show the generated video inline within an ipython notebook.
|
4183
4193
|
|
@@ -4204,6 +4214,9 @@ class Viewer(dict):
|
|
4204
4214
|
If omitted will use default settings, can fine tune settings in kwargs
|
4205
4215
|
encoder : str
|
4206
4216
|
Name of encoder to use, eg: "h264" (default), "mpeg"
|
4217
|
+
embed : bool
|
4218
|
+
Set to true to embed the video file rather than link to url
|
4219
|
+
Not recommended for large videos, default is False
|
4207
4220
|
player : dict
|
4208
4221
|
Args to pass to the player when the video is finished, eg:
|
4209
4222
|
{"width" : 800, "height", 400, "params": "controls autoplay"}
|
@@ -4218,12 +4231,11 @@ class Viewer(dict):
|
|
4218
4231
|
recorder : Video(object)
|
4219
4232
|
Context manager object that controls the video recording
|
4220
4233
|
"""
|
4221
|
-
return Video(self, filename, resolution, fps, quality, encoder, player, options, **kwargs)
|
4234
|
+
return Video(self, filename, resolution, fps, quality, encoder, embed, player, options, **kwargs)
|
4222
4235
|
|
4223
|
-
def video_steps(self, filename="", start=0, end=0, resolution=(0,0), fps=30, quality=2, encoder="h264", player=None, options={}, **kwargs):
|
4236
|
+
def video_steps(self, filename="", start=0, end=0, resolution=(0,0), fps=30, quality=2, encoder="h264", embed=False, player=None, options={}, **kwargs):
|
4237
|
+
my_func.__doc__
|
4224
4238
|
"""
|
4225
|
-
TODO: Fix to use pyAV
|
4226
|
-
|
4227
4239
|
Record a video of the model by looping through all time steps
|
4228
4240
|
|
4229
4241
|
Shows the generated video inline within an ipython notebook.
|
@@ -4235,21 +4247,12 @@ class Viewer(dict):
|
|
4235
4247
|
|
4236
4248
|
Parameters
|
4237
4249
|
----------
|
4238
|
-
filename : str
|
4239
|
-
Name of the file to save, if not provided a default will be used
|
4240
4250
|
start : int
|
4241
4251
|
First timestep to record, if not specified will use first available
|
4242
4252
|
end : int
|
4243
4253
|
Last timestep to record, if not specified will use last available
|
4244
|
-
|
4245
|
-
|
4246
|
-
fps : int
|
4247
|
-
Frames to output per second of video
|
4248
|
-
quality : int
|
4249
|
-
Encoding quality, 1=low, 2=medium(default), 3=high, higher quality reduces
|
4250
|
-
encoding artifacts at cost of larger file size
|
4251
|
-
**kwargs :
|
4252
|
-
Any additional keyword args will also be passed as options to the encoder
|
4254
|
+
|
4255
|
+
All other parameters same as video()
|
4253
4256
|
"""
|
4254
4257
|
|
4255
4258
|
try:
|
@@ -4257,7 +4260,7 @@ class Viewer(dict):
|
|
4257
4260
|
if end == 0: end = len(steps)
|
4258
4261
|
steps = steps[start:end]
|
4259
4262
|
from tqdm.notebook import tqdm
|
4260
|
-
with Video(self, filename, resolution, fps, quality, encoder, player, options, **kwargs):
|
4263
|
+
with Video(self, filename, resolution, fps, quality, encoder, embed, player, options, **kwargs):
|
4261
4264
|
for s in tqdm(steps, desc='Rendering loop'):
|
4262
4265
|
self.timestep(s)
|
4263
4266
|
self.render()
|
@@ -4476,10 +4479,10 @@ class Viewer(dict):
|
|
4476
4479
|
for key in ["translate", "rotate", "xyzrotate", "fov", "focus"]:
|
4477
4480
|
if key in src:
|
4478
4481
|
dst[key] = copy.copy(src[key])
|
4479
|
-
#Round down arrays to max
|
4482
|
+
#Round down arrays to max 6 decimal places
|
4480
4483
|
try:
|
4481
4484
|
for r in range(len(dst[key])):
|
4482
|
-
dst[key][r] = round(dst[key][r],
|
4485
|
+
dst[key][r] = round(dst[key][r], 6)
|
4483
4486
|
except:
|
4484
4487
|
#Not a list/array
|
4485
4488
|
pass
|
@@ -5405,37 +5408,44 @@ def player(filename, params="controls autoplay loop", **kwargs):
|
|
5405
5408
|
|
5406
5409
|
if is_notebook():
|
5407
5410
|
from IPython.display import display,HTML,Video,Javascript
|
5408
|
-
import uuid
|
5409
|
-
vid = 'video_' + str(uuid.uuid4())[:8]
|
5410
5411
|
|
5411
5412
|
# Fallback - replace url on gadi and similar jupyterhub installs with
|
5412
5413
|
# fixed working directory that doesn't match notebook dir
|
5413
5414
|
# check the video tag url and remove subpath on 404 error
|
5414
|
-
|
5415
|
-
|
5416
|
-
|
5417
|
-
|
5418
|
-
|
5419
|
-
|
5420
|
-
|
5421
|
-
|
5422
|
-
|
5423
|
-
|
5424
|
-
|
5415
|
+
onerror = """{
|
5416
|
+
let url = this.src;
|
5417
|
+
console.log('Error in video url: ' + url);
|
5418
|
+
var urlp = new window.URL(url);
|
5419
|
+
let toppath = '/files/home/';
|
5420
|
+
let startidx = urlp.pathname.indexOf(toppath);
|
5421
|
+
if (startidx < 0) {
|
5422
|
+
toppath = '/files/';
|
5423
|
+
startidx = urlp.pathname.indexOf(toppath);
|
5424
|
+
}
|
5425
|
+
if (startidx >= 0) {
|
5426
|
+
let filename = urlp.pathname.split('/').pop();
|
5427
|
+
let base = urlp.pathname.substring(0, startidx+toppath.length);
|
5428
|
+
urlp.pathname = base + filename;
|
5429
|
+
if (url != urlp.href) {
|
5430
|
+
console.log('Replaced video url: ' + urlp.href);
|
5431
|
+
this.src = urlp.href;
|
5425
5432
|
//Also fix download link
|
5426
|
-
document.getElementById('link_
|
5427
|
-
|
5428
|
-
|
5429
|
-
|
5430
|
-
}
|
5431
|
-
|
5432
|
-
|
5433
|
-
|
5434
|
-
|
5435
|
-
display(Video(url=filename, html_attributes=f'id="{vid}" onerror="video_error(this)"' + params, **kwargs))
|
5433
|
+
let link = document.getElementById('link_' + this.id);
|
5434
|
+
if (link) link.href = urlp.href;
|
5435
|
+
}
|
5436
|
+
}
|
5437
|
+
}"""
|
5438
|
+
|
5439
|
+
if "embed" in kwargs:
|
5440
|
+
#Not needed if embedding
|
5441
|
+
onerror = ""
|
5436
5442
|
|
5437
|
-
#
|
5438
|
-
|
5443
|
+
#Display player and download link
|
5444
|
+
import uuid
|
5445
|
+
vid = 'video_' + str(uuid.uuid4())[:8]
|
5446
|
+
filename = os.path.relpath(filename)
|
5447
|
+
display(Video(filename=filename, html_attributes=f'id="{vid}" onerror="{onerror}" ' + params, **kwargs),
|
5448
|
+
HTML(f'<a id="link_{vid}" href="{filename}" download>Download Video</a>'))
|
5439
5449
|
|
5440
5450
|
#Class for managing video animation recording
|
5441
5451
|
class Video(object):
|
@@ -5455,7 +5465,7 @@ class Video(object):
|
|
5455
5465
|
... lv.rotate('y', 10) # doctest: +SKIP
|
5456
5466
|
... lv.render() # doctest: +SKIP
|
5457
5467
|
"""
|
5458
|
-
def __init__(self, viewer, filename="output.mp4", resolution=(0,0), framerate=30, quality=2, encoder="h264", player=None, options={}, **kwargs):
|
5468
|
+
def __init__(self, viewer, filename="output.mp4", resolution=(0,0), framerate=30, quality=2, encoder="h264", embed=False, player=None, options={}, **kwargs):
|
5459
5469
|
"""
|
5460
5470
|
Record and show the generated video inline within an ipython notebook.
|
5461
5471
|
|
@@ -5482,6 +5492,9 @@ class Video(object):
|
|
5482
5492
|
Video resolution in pixels [x,y]
|
5483
5493
|
encoder : str
|
5484
5494
|
Name of encoder to use, eg: "h264" (default), "mpeg"
|
5495
|
+
embed : bool
|
5496
|
+
Set to true to embed the video file rather than link to url
|
5497
|
+
Not recommended for large videos, default is False
|
5485
5498
|
player : dict
|
5486
5499
|
Args to pass to the player when the video is finished, eg:
|
5487
5500
|
{"width" : 800, "height", 400, "params": "controls autoplay"}
|
@@ -5516,6 +5529,8 @@ class Video(object):
|
|
5516
5529
|
self.player = {"width": self.resolution[0]//2, "height": self.resolution[1]//2}
|
5517
5530
|
else:
|
5518
5531
|
self.player = {}
|
5532
|
+
if embed:
|
5533
|
+
self.player["embed"] = True
|
5519
5534
|
self.encoder = encoder
|
5520
5535
|
self.options = options
|
5521
5536
|
#Also include extra args
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lavavu
|
3
|
-
Version: 1.9.
|
3
|
+
Version: 1.9.6
|
4
4
|
Summary: Python interface to LavaVu OpenGL 3D scientific visualisation utilities
|
5
5
|
Author-email: Owen Kaluza <owen@kaluza.id.au>
|
6
6
|
License: ### Licensing
|
@@ -215,6 +215,7 @@ License-File: LICENSE.md
|
|
215
215
|
Requires-Dist: numpy>=1.18
|
216
216
|
Requires-Dist: aiohttp
|
217
217
|
Requires-Dist: jupyter_server_proxy
|
218
|
+
Requires-Dist: matplotlib
|
218
219
|
Requires-Dist: numpy-quaternion
|
219
220
|
Dynamic: license-file
|
220
221
|
|
@@ -223,7 +224,7 @@ Dynamic: license-file
|
|
223
224
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Test)
|
224
225
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Deploy)
|
225
226
|
[](https://zenodo.org/badge/latestdoi/45163055)
|
226
|
-
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.
|
227
|
+
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.6)
|
227
228
|
|
228
229
|
A scientific visualisation tool with a python interface for fast and flexible visual analysis.
|
229
230
|
|
@@ -236,7 +237,7 @@ Prior development was funded by the Monash Immersive Visualisation Plaform at [M
|
|
236
237
|
|
237
238
|
The acronym stands for: lightweight, automatable visualisation and analysis viewing utility, but "lava" is also a reference to its primary application as a viewer for geophysical simulations. It was also chosen to be unique enough to find the repository with google.
|
238
239
|
|
239
|
-
The project started
|
240
|
+
The project started as a replacement rendering library for the gLucifer<sup>1</sup> framework, visualising geodynamics simulations. The new OpenGL visualisation code was re-implemented as a more general purpose visualisation tool. gLucifer continues as a set of sampling tools for Underworld simulations as part of the [Underworld2](https://github.com/underworldcode/underworld2/) code. LavaVu provides the rendering library for creating 2d and 3d visualisations to view this sampled data, inline within interactive Jupyter notebooks and offline through saved visualisation databases and images/movies.
|
240
241
|
|
241
242
|
As a standalone tool it is a scriptable 3D visualisation tool capable of producing publication quality high res images and video output from time varying data sets along with HTML5 3D visualisations in WebGL.
|
242
243
|
Rendering features include correctly and efficiently rendering large numbers of opaque and transparent points and surfaces and volume rendering by GPU ray-marching. There are also features for drawing vector fields and tracers (streamlines).
|
@@ -259,13 +260,10 @@ Development happens in the "master" branch with stable releases tagged, so if yo
|
|
259
260
|
It's now in the python package index, so you can install with *pip*:
|
260
261
|
|
261
262
|
```
|
262
|
-
pip install
|
263
|
+
python -m pip install lavavu
|
263
264
|
```
|
264
265
|
|
265
|
-
>
|
266
|
-
|
267
|
-
> Currently no binaries are provided and the installer needs to compile the library, so on Linux you may need some developer tools and headers first, eg: for Ubuntu:
|
268
|
-
`sudo apt install build-essential libgl1-mesa-dev libx11-dev zlib1g-dev`
|
266
|
+
> Currently binary wheels are provided for Linux x86_64, MacOS x86_64 and ARM64 and Windows x86_64.
|
269
267
|
|
270
268
|
To try it out:
|
271
269
|
|
@@ -282,7 +280,12 @@ Alternatively, clone this repository with *git* and build from source:
|
|
282
280
|
```
|
283
281
|
git clone https://github.com/lavavu/LavaVu
|
284
282
|
cd LavaVu
|
283
|
+
python -m pip install .
|
284
|
+
```
|
285
|
+
or
|
286
|
+
```
|
285
287
|
make -j4
|
288
|
+
|
286
289
|
```
|
287
290
|
|
288
291
|
If all goes well the viewer will be built, try running with:
|
@@ -291,14 +294,14 @@ If all goes well the viewer will be built, try running with:
|
|
291
294
|
### Dependencies ###
|
292
295
|
|
293
296
|
* OpenGL and Zlib, present on most systems, headers may need to be installed
|
294
|
-
* To use with python requires python
|
295
|
-
* For video output, requires: libavcodec, libavformat, libavutil, libswscale (from FFmpeg / libav)
|
297
|
+
* To use with python requires python 3.6+ and NumPy
|
298
|
+
* For video output, requires: PyAV or for built in encoding, libavcodec, libavformat, libavutil, libswscale (from FFmpeg / libav)
|
296
299
|
* To build the python interface from source requires swig (http://www.swig.org/)
|
297
300
|
|
298
301
|
### Who do I talk to? ###
|
299
302
|
|
300
303
|
* Report bugs/issues here on github: https://github.com/lavavu/LavaVu/issues
|
301
|
-
* Contact developer: Owen Kaluza (at)
|
304
|
+
* Contact developer: Owen Kaluza (at) anu.edu.au
|
302
305
|
|
303
306
|
For further documentation / examples, see the online documentation
|
304
307
|
* https://lavavu.github.io/Documentation
|
@@ -26,11 +26,6 @@ lavavu.egg-info/entry_points.txt
|
|
26
26
|
lavavu.egg-info/requires.txt
|
27
27
|
lavavu.egg-info/top_level.txt
|
28
28
|
lavavu/html/LavaVu-amalgamated.css
|
29
|
-
lavavu/html/LavaVu-amalgamated.js
|
30
|
-
lavavu/html/LavaVu.data
|
31
|
-
lavavu/html/LavaVu.html
|
32
|
-
lavavu/html/LavaVu.js
|
33
|
-
lavavu/html/LavaVu.wasm
|
34
29
|
lavavu/html/OK-min.js
|
35
30
|
lavavu/html/baseviewer.js
|
36
31
|
lavavu/html/control.css
|
@@ -41,7 +36,6 @@ lavavu/html/draw.js
|
|
41
36
|
lavavu/html/drawbox.js
|
42
37
|
lavavu/html/emscripten-template.js
|
43
38
|
lavavu/html/emscripten.css
|
44
|
-
lavavu/html/emscripten.js
|
45
39
|
lavavu/html/favicon.ico
|
46
40
|
lavavu/html/gl-matrix-min.js
|
47
41
|
lavavu/html/gui.css
|
@@ -19,7 +19,7 @@ import shutil
|
|
19
19
|
|
20
20
|
#Current version
|
21
21
|
#(must be of the form X.Y.Z to trigger wheel builds)
|
22
|
-
version = "1.9.
|
22
|
+
version = "1.9.6"
|
23
23
|
|
24
24
|
"""
|
25
25
|
To release a new verison:
|
@@ -383,19 +383,9 @@ if __name__ == "__main__":
|
|
383
383
|
#EGL and OSMesa are built as optional extra modules
|
384
384
|
'''
|
385
385
|
if find_library('OpenGL') and find_library('EGL') and check_libraries(['OpenGL', 'EGL'], ['GL/gl.h', 'EGL/egl.h']):
|
386
|
-
#EGL for offscreen OpenGL without X11/GLX - works only with NVidia currently
|
387
|
-
ex = Extension('lavavu.egl._LavaVuPython',
|
388
|
-
define_macros = defines + [('HAVE_EGL', '1')],
|
389
|
-
include_dirs = inc_dirs,
|
390
|
-
libraries = libs + ['OpenGL', 'EGL'],
|
391
|
-
library_dirs = lib_dirs,
|
392
|
-
runtime_library_dirs = rt_lib_dirs,
|
393
|
-
extra_compile_args = cflags,
|
394
|
-
extra_link_args = ldflags,
|
395
|
-
extra_objects=extra_objects,
|
396
|
-
sources = srcs)
|
397
|
-
extensions.append(ex)
|
398
386
|
''';
|
387
|
+
|
388
|
+
#OSMesa built as optional extra module
|
399
389
|
if find_library('OSMesa') and check_libraries(['OSMesa'], ['GL/osmesa.h']):
|
400
390
|
#OSMesa for software rendered offscreen OpenGL, build as additional extension
|
401
391
|
ex = Extension('lavavu.osmesa._LavaVuPython',
|
@@ -411,7 +401,12 @@ if __name__ == "__main__":
|
|
411
401
|
extensions.append(ex)
|
412
402
|
|
413
403
|
#Main extension - use X11 or GLFW
|
414
|
-
if ("
|
404
|
+
if ("LV_EGL" in os.environ and find_library('OpenGL') and find_library('EGL')
|
405
|
+
and check_libraries(['OpenGL', 'EGL'], ['GL/gl.h', 'EGL/egl.h'])):
|
406
|
+
#EGL for offscreen OpenGL without X11/GLX - works with NVidia and latest Mesa
|
407
|
+
defines += [('HAVE_EGL', '1')]
|
408
|
+
libs += ['OpenGL', 'EGL']
|
409
|
+
elif ("LV_GLFW" in os.environ and find_library('glfw')
|
415
410
|
and check_libraries(['glfw'], ['GLFW/glfw3.h'])):
|
416
411
|
#Use GLFW
|
417
412
|
defines += [('HAVE_GLFW', '1')]
|