{"id":22059748,"url":"https://github.com/precise-simulation/mesh-viewer","last_synced_at":"2026-03-16T17:36:58.130Z","repository":{"id":201688128,"uuid":"279004572","full_name":"precise-simulation/mesh-viewer","owner":"precise-simulation","description":"Python STL/OBJ CAD mesh viewers comparing Matplotlib/Plotly/Vispy backends and Tkinter GUI","archived":false,"fork":false,"pushed_at":"2020-10-06T16:55:58.000Z","size":248,"stargazers_count":39,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-12T19:59:43.965Z","etag":null,"topics":["cad","cef","gui","matplotlib","mesh","mvc","obj","plotly","python","simulation","stl","tkinter","tkinter-gui","viewer","vispy","webgl"],"latest_commit_sha":null,"homepage":"https://www.precisesimulation.com","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/precise-simulation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-07-12T06:17:36.000Z","updated_at":"2025-04-10T08:53:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"be6d5038-a671-4bb6-b421-230a9f4fc0e4","html_url":"https://github.com/precise-simulation/mesh-viewer","commit_stats":null,"previous_names":["precise-simulation/mesh-viewer"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/precise-simulation/mesh-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/precise-simulation%2Fmesh-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/precise-simulation%2Fmesh-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/precise-simulation%2Fmesh-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/precise-simulation%2Fmesh-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/precise-simulation","download_url":"https://codeload.github.com/precise-simulation/mesh-viewer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/precise-simulation%2Fmesh-viewer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259747233,"owners_count":22905312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cad","cef","gui","matplotlib","mesh","mvc","obj","plotly","python","simulation","stl","tkinter","tkinter-gui","viewer","vispy","webgl"],"created_at":"2024-11-30T17:32:09.700Z","updated_at":"2026-03-16T17:36:58.101Z","avatar_url":"https://github.com/precise-simulation.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Mesh Viewer\n-----------\n\n**Mesh Viewer** is a simple STL/OBJ CAD geometry and surface mesh\nviewer prototype with a _Model View Controller_ (MVC) type\ndesign. Three different visualization backends are compared and\nembedded within the same\n[Python](https://www.python.org)/[tkinter](https://wiki.python.org/moin/TkInter)\nGUI framework.\n\n- [matplotlib](https://matplotlib.org)\n- [plotly](https://www.featool.com/web-plots) _(WebGL with embedded webview)_\n- [vispy](http://vispy.org) _(OpenGL)_\n\n![Mesh Viewer screenshot](https://raw.githubusercontent.com/precise-simulation/mesh-viewer/master/meshviewer-screenshot.jpg)\n\nThe _vispy/opengl_ backend seems to be the best choice overall with\nrespect to performance and packaged size (~35 MB), while _plotly_\n(subjectively) looks the best but leads to large binaries due to\nembedding the Chromium framework (~70-90 MB), _matplotlib_ is the\nsimplest backend but suffers from slow performance for larger\nvisualizations.\n\n\n# Python Script Use\n\nSimply downloading and running the corresponding Python scripts should\nstart both the GUI and mesh viewer application. The examples below\nshow how to set up a new\n[conda](https://docs.conda.io/en/latest/miniconda.html) Python\nenvironment with the required dependencies.\n\n## mesh-viewer with matplotlib backend\n\n    conda create -n mpl python=3.7\n    conda activate mpl\n    conda install conda-forge::blas=*=openblas numpy\n    pip install matplotlib==3.2.2\n\n    python meshviewer_mpl_tk.py\n\n## mesh-viewer with plotly/cefpython backend\n\n    conda create -n plotly python=3.7\n    conda activate plotly\n    conda install conda-forge::blas=*=openblas numpy\n    pip install cefpython3\n\n    python meshviewer_plotly_cef_tk.py\n\n## mesh-viewer with vispy/pyopengltk backend\n\n    conda create -n vispy python=3.7\n    conda activate vispy\n    conda install conda-forge::blas=*=openblas numpy\n    pip install cython\n    pip install pyopengltk\n    git clone --recurse-submodules https://github.com/Wosser1sProductions/vispy.git\n    cd vispy\n    git submodule update --init --recursive\n    pip install . --no-use-pep517\n    cd ..\n\n    python meshviewer_vispy_tk.py\n\n\n# Pre-Built Binaries\n\nThe\n[releases](https://github.com/precise-simulation/mesh-viewer/releases/latest)\ninclude stand-alone and pre-compiled executable _one-click_ binaries\n_(exe)_ for Windows systems (note that it may take several seconds to\nload/start due to extracting all resources, and that the _plotly_\nbacked required an internet connection and accepting a\nMicrosoft/Windows certificate to download the [plotly\njavascript](https://github.com/plotly/plotly.js) library). Building\nstand-alone executables can be done with\n[pyinstaller](https://www.pyinstaller.org) as described below.\n\n## build mesh-viewer with matplotlib backend\n\n    conda create -n mpl python=3.7\n    conda activate mpl\n    conda install conda-forge::blas=*=openblas numpy\n    pip install matplotlib==3.2.2\n    pip install pyinstaller\n\n    pyinstaller --onefile --windowed --noupx meshviewer_mpl_tk.py\n\n    conda env remove -n mpl\n\n## build mesh-viewer with plotly/cefpython backend\n\n    conda create -n plotly python=3.7\n    conda activate plotly\n    conda install conda-forge::blas=*=openblas numpy\n    pip install cefpython3\n    pip install pyinstaller==3.6\n\n    cd build\n    python build.py --onefile\n\n    conda env remove -n plotly\n\n## build mesh-viewer with vispy/pyopengltk backend\n\n    conda create -n vispy python=3.7\n    conda activate vispy\n    conda install conda-forge::blas=*=openblas numpy\n    pip install cython\n    pip install pyopengltk\n    git clone --recurse-submodules https://github.com/Wosser1sProductions/vispy.git\n    cd vispy\n    git submodule update --init --recursive\n    pip install . --no-use-pep517\n    pip install pyinstaller\n\n    cd ../build\n    pyinstaller --onefile meshviewer_vispy_tk.spec\n\n    conda env remove -n vispy\n\n\n# Note\n\nThis is just a simple prototype/proof-of-concept and not intended to\nbe a full fledged application. If you are interested in custom CAE and\nsimulation tools such as this app and\n[FEATool Multiphysics](https://www.featool.com) please feel free to\nget in touch with [Precise Simulation](https://www.precisesimulation.com).\n\n\n# License\n\nAGPL v3, see LICENSE for more details.\n\nCopyright (C) 2020 Precise Simulation Ltd.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprecise-simulation%2Fmesh-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprecise-simulation%2Fmesh-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprecise-simulation%2Fmesh-viewer/lists"}