What is Evince?
Evince is an experimental visualization module for the Hylleraas Software Platform, focused on the development of high-quality, high-performing, customizable, extendable and portable interactive scientific visualizations.
The module is built from the Widget Cookiecutter, with a front-end visualization based on THREE.JS, WebGL and WebXR. The module provides a seamless workflow from the Python-side to the front-end, with the finished product being portable to any device equipped with standard browsing capabilities, with or without an active Python-kernel.
This approach opens the door to a wide range of possibilities for real-time visualization, novel approaches to traditional depictions, GPU-based implementations, VR and versatile approaches to interaction, and tools for publication, presentation, teaching and outreach. In a sense, it is also Web 3.0-ready, and embraces standards which may become important in future web architecture.
The options are too many for a single person to explore on their own, so we invite the Hylleraas community to contribute. On these pages you'll find instructions, tutorials, examples and ideas to help you get started. Please contact Audun (a.s.hansen@kjemi.uio.no) if you have questions.
High-quality 3D graphics
THREE.JS is a Javascript library for creating 3D graphics for webpages, offering a wide range of predefined geometries, materials, scene-building tools and postprocessing options for producing stunning graphics executed on your GPU and rendered in the browser. Look through the examples on the official pages for inspiration, and keep in mind that all these effects are trivially reproducible within the Evince setup.
Check out the evince.spotligh-module for an example on postprocessing capabilities.
High-performance graphics
Furthermore, the framework allows you to write custom shaders (programs executed by the GPU) used for high-performance operations. Note that this does not have to be directly graphics related, the same procedure may be used to do general calculations and transfer data to and from the GPU cache. THREE.JS will likely support the modern WebGPU-standard (for modern GPUs with shared memory and other features), meaning that future capabilities will be even higher.
Customizability and extendability
The Widget Cookiecutter is a tool for making widgets for the Jupyter Environment. A widget is a piece of software connecting several layers of the Jupyter environment, with an interactive graphical user representation running on the Javascript front-end, connected to the Python-kernel using the
Portability
Evince is deployed as three separate Javascript libraries: 1. A front-end widget connected to the Python kernel, running within the Jupyter Notebook. 2. A front-end widget connected to the Python kernel, running within Jupyter Lab. 3. A standalone Javascript model viewer, distributed online from the npmjs.com content delivery network (CDN).
Interactivity
When running Evince within the Jupyter-environment, communication between the Python kernel and the front-end runs seamlessly in the back. This is possible due to the Comms-design of Jupyter itself, where variables can be synchronized between Javascript and Python using ZeroMQ.
In practice, this means that you may execute operations on the Python side which instantly updates the visual representation of the widget.