Bringing vtk.js into Dash and Python

Overview

Dash VTK

Dash VTK lets you integrate the vtk.js visualization pipeline directly into your Dash app. It is powered by react-vtk-js.

A demo of dash-vtk in action

Getting started

Quickstart (Python)

First, install the library through pip:

pip install dash-vtk

Then, create a file called app.py and add the following example:

import dash
import dash_vtk
import dash_html_components as html

app = dash.Dash(__name__)

app.layout = html.Div(
    style={"width": "100%", "height": "calc(100vh - 16px)"},
    children=dash_vtk.View([
        dash_vtk.GeometryRepresentation([
            dash_vtk.Algorithm(
                vtkClass="vtkConeSource",
                state={"resolution": 64, "capping": False},
            )
        ]),
    ]),
)

if __name__ == "__main__":
    app.run_server(debug=True)

Now, simply run the app:

python app.py

For a more detailed example, see usage.py.

Quickstart (R)

First, install the package from GitHub (the package is not yet available via CRAN):

remotes::install_github("plotly/dash-vtk")

then, create your component and add it to your layout:

library(dash)
library(dashVtk)
library(dashHtmlComponents)

app <- Dash$new()

app$layout(htmlDiv(
    style = list("width" = "100%", "height" = "calc(100vh - 16px)"),
    children = vtkView(list(
        vtkGeometryRepresentation(
            vtkAlgorithm(
                vtkClass = "vtkConeSource",
                state = list("resolution" = 64, "capping" = FALSE),
            )
        )
    )
)

app$run_server()

Contributing

See docs/CONTRIBUTING.md to learn about:

  • Setting up the environment
  • Coding Style
  • Code quality & design
  • Tests
  • Publishing

Running the demos

First clone the project (replace with the desired demo):

git clone https://github.com/plotly/dash-vtk.git
cd dash-vtk/demos/<name>/

Create a venv and install the requirements:

python -m venv venv
source venv/bin/activate  # for Windows, use venv\Scripts\activate.bat
pip install -e ../../  # IMPORTANT! If you skip you will get the pip version of dash-vtk
pip install -r requirements.txt

Run the demo:

python app.py

Python environments

Depending on your Python environment, you may run into deployment issue related to the vtk version that get pulled in.

Ideally we want a version of vtk equal or newer than 9. When using such version of VTK, dash-vtk won't even try to load the rendering module of VTK and if OpenGL is not available on your system everything will still be fine.

On the other hand, if you are running python-3.6 and/or pip-18 or less and you don't upgrade your pip version, you will only be able to use vtk<=8.1.2. With vtk 8, there is no way to prevent the loading of the GL library which means that you will have to install libGL on your system, or you will run into errors like this:

  File ".../python/lib/python3.6/site-packages/vtkmodules/all.py", line 29, in 
    from .vtkRenderingOpenGL2 import *
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
[2021-02-08 18:36:15 +0000] [10] [INFO] Worker exiting (pid: 10)

or this:

  File ".../python3.7/site-packages/vtk/__init__.py", line 12, in 
    from .vtkOpenGLKit import *
  File ".../python3.7/site-packages/vtk/vtkOpenGLKit.py", line 9, in 
    from vtkOpenGLKitPython import *
ModuleNotFoundError: No module named 'vtkOpenGLKitPython'

Heroku and Dash Enterprise handle it is slightly different because you will have to install libgl1-mesa-glx via some apt files. In the case of Heroku, you will have to use a buildpack and add libgl1-mesa-glx to a Aptfile located in the root of your project. In the case of Dash Enterprise, you do not need to change the buildpack (it is handled automatically) but you will need to add libgl1-mesa-glx to a apt-packages file instead of Aptfile; see this app as an example.

References

You can find the complete API reference in docs/REFERENCES.md for each of the following components:

Demos

Usage for dash_vtk.Algorithm

A demo of the usage-algorithm app

Point Cloud with PyVista

A demo of the pyvista-point-cloud app

Terrain deformation using PyVista and dash-vtk

A demo of the pyvista-terrain-following-mesh app

Volume Rendering

A demo of the volume-rendering app

VTK for data processing and dash-vtk for rendering

A demo of the usage-vtk-cfd app

Synthetic Volume Rendering

A demo of the synthetic-volume-rendering app

Comments
  • Further improvements to the demos

    Further improvements to the demos

    Here are some improvements i'd like to make to the demos; @jourdain feel free to share your thoughts on them:

    • [ ] CFD: better seed line labels; it's not clear what the first and second sliders mean. I'll think of better labels
    • [ ] Slice Rendering: Remove the 3D volume viewer on the right-side to improve speed and make the app simpler/easier to understand.

    @jourdain You mentioned about updating the sliders on change (instead of on release) for certain cases: image

    Could you remind me which ones you mentioned?

    opened by xhluca 21
  • Refactor dash_vtk.util to import vtkmodules instead of vtk

    Refactor dash_vtk.util to import vtkmodules instead of vtk

    See: https://github.com/plotly/dash-docs/pull/1091

    import vtkmodules avoid importing the libGL library in vtk v9.0.1, as opposed to import vtk which always loads (thus requires) libgl

    About

    Description of changes

    Pre-Merge checklist

    • [ ] The project was correctly built with npm run build.
    • [ ] If there was any conflict, it was solved correctly.
    • [ ] All changes were documented in CHANGELOG.md.
    • [ ] All tests on CircleCI have passed.
    • [ ] All Percy visual changes have been approved.
    • [ ] Two people have :dancer:'d the pull request. You can be one of these people if you are a Dash core contributor.

    Reference Issues

    Closes #[issue number]

    Other comments

    opened by xhluca 20
  • Re-rendering is broken when ImageData remains the same but child changes

    Re-rendering is broken when ImageData remains the same but child changes

    Bug

    I built a set of radio buttons to alternate between different representations (volumes and algorithms). This is done through a callback. When the data (i.e. ImageData) remains the same, but the child PointData changes, dash-vtk will not correctly re-render the new view.

    Here's a demo:

    vtk-bug

    Notice how going random -> progressive doesn't work, but random -> cone or cone -> progressive works. This is because cone uses a Algorithm instead of ImageData, so it would trigger a rerender.

    Code

    Show full code

    import dash_vtk
    import dash
    from dash.dependencies import Input, Output
    import dash_core_components as dcc
    import dash_html_components as html
    import numpy as np
    
    
    def build_vtk_representation(field):
        return dash_vtk.VolumeRepresentation(
            [
                dash_vtk.VolumeController(),
                dash_vtk.ImageData(
                    id="image-data",
                    dimensions=[10, 10, 10],
                    spacing=[1, 1, 1],
                    origin=[0, 0, 0],
                    children=dash_vtk.PointData(
                        dash_vtk.DataArray(registration="setScalars", values=field)
                    ),
                ),
            ]
        )
    
    
    views = [
        build_vtk_representation([np.random.random() for i in range(10 * 10 * 10)]),
        build_vtk_representation(np.linspace(0, 1, num=10 * 10 * 10)),
        dash_vtk.GeometryRepresentation(
            [
                dash_vtk.Algorithm(
                    vtkClass="vtkConeSource", state={"resolution": 64, "capping": False,},
                )
            ]
        ),
    ]
    
    
    app = dash.Dash(__name__)
    server = app.server
    
    
    app.layout = html.Div(
        style={"width": "100%", "height": "calc(90vh - 16px)"},
        children=[
            dcc.RadioItems(
                id="radio-items",
                options=[
                    {"value": i, "label": x}
                    for i, x in enumerate(["random", "progressive", "cone"])
                ],
                value=0,
            ),
            html.Br(),
            dash_vtk.View(id="vtk-view"),
            html.Div(id="output"),
        ],
    )
    
    
    @app.callback(
        Output("vtk-view", "children"),
        Output("vtk-view", "triggerRender"),
        Input("radio-items", "value"),
    )
    def update_vtk_view(value):
        if value is None:
            return dash.no_update
        return views[value], np.random.random()
    
    
    if __name__ == "__main__":
        app.run_server(debug=True)
    

    Here's a snippet:

    def build_vtk_representation(field):
        return dash_vtk.VolumeRepresentation(
            children=[
                dash_vtk.VolumeController(),
                dash_vtk.ImageData(
                    ...,
                    children=dash_vtk.PointData(
                        dash_vtk.DataArray(registration="setScalars", values=field)
                    ),
                ),
            ]
        )
    
    
    views = [
        build_vtk_representation([np.random.random() for i in range(10 * 10 * 10)]),
        build_vtk_representation(np.linspace(0, 1, num=10 * 10 * 10)),
        dash_vtk.GeometryRepresentation(
            [
                dash_vtk.Algorithm(
                    vtkClass="vtkConeSource", state={"resolution": 64, "capping": False,},
                )
            ]
        ),
    ]
    
    app = dash.Dash(__name__)
    server = app.server
    app.layout = ...
    
    @app.callback(
        Output("vtk-view", "children"),
        Output("vtk-view", "triggerRender"),
        Input("radio-items", "value"),
    )
    def update_vtk_view(value):
        if value is None:
            return dash.no_update
        return views[value], np.random.random()
    
    
    opened by xhluca 18
  • Loading mesh in

    Loading mesh in

    I am trying to load a mesh/multiple meshes I created with vedo which is based off vtk. Upon loading into the dash I get a type error for Mesh is not JSON serializable. Any suggestions on how to fix?

    Thanks

    opened by dodointhesnow 17
  • Add rendering tests for the demos and add images to README

    Add rendering tests for the demos and add images to README

    About

    Description of changes

    Pre-Merge checklist

    • [ ] The project was correctly built with npm run build.
    • [ ] If there was any conflict, it was solved correctly.
    • [ ] All changes were documented in CHANGELOG.md.
    • [ ] All tests on CircleCI have passed.
    • [ ] All Percy visual changes have been approved.
    • [ ] Two people have :dancer:'d the pull request. You can be one of these people if you are a Dash core contributor.

    Reference Issues

    Closes #[issue number]

    Other comments

    opened by xhluca 17
  • Docs Review

    Docs Review

    Wow the user guide is really great! Just minor details:

    • Some parts include react code (see example). Should we modify them to be Dash code?
    • I'm not sure whether it's possible to import those modules since they start with numbers. Will think about it but might need to rename them if I can't use importlib; would that be ok?
    opened by xhluca 12
  • Would it be possible to set camera parameters?

    Would it be possible to set camera parameters?

    I'd like to set the camera location, depth of view, etc. via code, but I cannot find any way to do this. Is it possible to add this as a feature? Is there a workaround I could use in the meantime?

    Thanks, and thanks for all the great work!

    opened by pythoro 11
  • Color legend

    Color legend

    Hello everyone!

    I'm building a web app using dash_vtk in python to visualize CFD data, so for now 3D surfaces coloured based on some parameter value like pressure. So far everything's good, but can't activate the colour legend and I saw no example with it, so I'm starting to question if it is possible at this point. To be clear, I'd like to be able to associate a value to the colours I'm seeing. I saw the example with the F1 car where values are displayed when hovering, but I'd prefer a simple scale. Is it possible?

    Thank you, Franco

    opened by francolovato 8
  • Implicit triggerRender

    Implicit triggerRender

    I feel the triggerRender is a bit clunky and makes it impossible to have more than one callback that updates a given view. how much effort would it be to make that implicit?

    EDIT: Ok so it already works with the trigger render, so let's remove it from the demos:

    • [ ] usage-vtk-cfd
    • [ ] slice-rendering
    • [ ]
    opened by xhluca 8
  • Try to use suspense/lazy

    Try to use suspense/lazy

    What was tried

    Over the weekend I was able to incorporate React.lazy and React.Suspense for each of the components. To do that, I created some modules:

    • src/lib/ReactVTK.js: This module simply imports and export the react-vtk-js library, which is needed in order to use the webpackChunkName functionality added in webpack and create a async-ReactVTK.js file.
    • src/lib/AsyncReactVTK.js: This module contains a AsyncComponentBuilder function. It creates an async function that returns a module-like object, which we can then pass to React.lazy without causing errors. Later on (inside the components definition), it gets rendered correctly by React.Suspense (in theory only). This is the component builder function I used: https://github.com/plotly/dash-vtk/blob/4cd17de0abdd967b4980ba74bde0259ca949a59f/src/lib/AsyncReactVTK.js#L5-L15 (I'm happy to hop on a call to explain how I got to this).

    I also brought some modifications to the files:

    • webpack.config.js: Some changes in lazy-loading (see https://github.com/plotly/dash-vtk/pull/29), no change here. Mostly code for chunk splitting in order to allow async.
    • package.json: Some changes in lazy-loading (see https://github.com/plotly/dash-vtk/pull/29), no change here. Added a few packages that were necessary to use the new webpack optimization.
    • src/lib/components: Each component here was updated such that the import came from AsyncReactVTK.js instead of react-vtk-js, and also the component outputted is wrapped with a React.Suspense.
    • dash_vtk/__init__.py: The following elements were added to _js_dist in order to load the async fragment:
    {
        'relative_package_path': 'async-ReactVTK.js',
        'external_url': 'https://unpkg.com/{0}@{2}/{1}/async-ReactVTK.js'.format(package_name, __name__, __version__),
        'namespace': package_name,
        'async': True
    },
    {
        'relative_package_path': 'async-ReactVTK.js.map',
        'external_url': 'https://unpkg.com/{0}@{2}/{1}/async-ReactVTK.js.map'.format(package_name, __name__, __version__),
        'namespace': package_name,
        'dynamic': True
    }
    

    What worked

    Rendering the simplest possible app, i.e. an empty dash_vtk.View worked with this new approach; no error was found in the console. Moreover, I tried with usage.py, which yielded this result: image

    So it partially worked in the sense that the cone and the starwars obj were rendered correctly, but not the colored pane in the back. Moreover, very simple demos like the synthetic-volume-rendering and t05_reader seemed to work as well. Additionally, some apps seem to load after a few seconds, but the intiial view is completely broken (you have to zoom out and drag it around to have the correct view; this didn't happen before): vtk-bug

    What didn't work

    Most of the apps (except maybe two) have problems in some way or another. In many cases, the app is completely broken and can't be used at all. Here are two examples of issues with the apps:

    • [ ] slice-rendering: Getting this error in the console:
      Uncaught TypeError: Failed to execute 'bindTexture' on 'WebGL2RenderingContext': parameter 2 is not of type 'WebGLTexture'.
      
    • [ ] volume-rendering: Getting this error in the console:
      dash_renderer.v1_9_1m1618031064.dev.js:100499 TypeError: Failed to execute 'bindTexture' on 'WebGL2RenderingContext': parameter 2 is not of type 'WebGLTexture'.
       at Object.Ln.e.bind (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Object.Ln.e.activate (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Object.Io.e.renderPieceDraw (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Object.Io.e.renderPiece (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Io.e.volumePass (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Object.e.apply (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Object.e.traverse (async-ReactVTK.v0_0_7m1618261439.js:2)
       at e.traverseVolumePass (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Object.e.traverse (async-ReactVTK.v0_0_7m1618261439.js:2)
       at Object.e.traverse (async-ReactVTK.v0_0_7m1618261439.js:2)
      

    Not actual async loading

    ~~Moreover, I also noticed that when I import dash_vtk inside an app that doesn't use dash_vtk at all, it will still load async-ReactVTK.js, which is the new file with 500kb:~~ image

    ~~So although we have correctly implemented async, something inside the react-vtk-js initialization code forces this file to still be loaded; unfortunately i do not have insight on that.~~

    UPDATE: In f6b8c8a2fb26063d3b5e707c4ce787d507bb4fa4, I moved the the import('./ReactVTK') call inside the builder function and that seemed to have resolved that issue. Furthermore, it seems like the colored pane in usage.py works correctly now.

    Next step

    So far, @jdamiba and I successfully achieved the suggested approach from a React perspective by using React.lazy and React.Suspense; we also used the same approach as dash-core-components for loading the components (install extra packages in package.json, add custom webpack commands, use webpackChunkName in the import calls, etc), albeit with minor modifications through the AsyncComponentBuilder function, which I highlight doubt is the cause of the problems here.

    As a next step, it would be amazing if @jourdain takes a look at this branch (specifically, the new and modified files in src/lib) and decide whether more development will be needed (in react-vtk-js or in dash-vtk's JS code) in order to achieve the async functionality that we added in this branch.

    Furthermore, I think it'd be beneficial if @alexcjohnson @Marc-Andre-Rivet reviews our tentative approach to determine if there's a simple fix that @jdamiba and I missed, or if we are doing something wrong.

    opened by xhluca 8
  • Component only updated by dash callbacks when we click them

    Component only updated by dash callbacks when we click them

    In demo page's SourceViewer demo, we can see that the component is updated every time the slider is dragged:

    react-vtk

    However, the same demo in Dash doesn't automatically update the component when the callback is fired by the slider; instead, you have to click on the canvas:

    dash-vtk

    Any idea why this might happen?

    opened by xhluca 8
  • Mesh not correctly plotted

    Mesh not correctly plotted

    Description

    Attached mesh is not correctly plotted with Dash VTK. No issue with ParaView or PyVista. No problem with simpler meshes with Dash VTK.

    mesh.zip

    Steps/Code to Reproduce

    import dash
    import dash_vtk
    from dash_vtk.utils import to_mesh_state
    import pyvista
    
    mesh = pyvista.read("mesh.dat")
    mesh_state = to_mesh_state(mesh)
    
    app = dash.Dash(__name__)
    app.layout = dash.html.Div(
        dash_vtk.View(
            dash_vtk.GeometryRepresentation(
                dash_vtk.Mesh(state=mesh_state),
                property={"edgeVisibility": True},
            ),
            cameraPosition=[1005.0, -5000.0, -1500.0],
            cameraViewUp=[0.0, 0.0, 1.0],
        ),
        style={"width": "600px", "height": "600px"},
    )
    
    if __name__ == "__main__":
        app.run_server(debug=True)
    

    Expected Results

    expected

    Actual Results

    output

    Versions

    dash == 2.0.0 dash_vtk == 0.0.9

    opened by keurfonluu 4
  • JS `formula` prop available in Python

    JS `formula` prop available in Python

    Description

    formula prop available in Python, though JS formulae are unusable from Python.

    Steps/Code to Reproduce

    In the python REPL run:

    help (dash_vtk.Calculator)
    

    We see there is a prop formula available, but JS formulae are unusable from Python

    Expected Results

    Only have props that can be used in Python

    Actual Results

    formula is available.

    Versions

    Dash 2.0.0 :3: UserWarning: The dash_html_components package is deprecated. Please replace import dash_html_components as html with from dash import html import dash_html_components; print("Dash Core Components", dash_html_components.version) Dash Core Components 2.0.0 :4: UserWarning: The dash_core_components package is deprecated. Please replace import dash_core_components as dcc with from dash import dcc import dash_core_components; print("Dash HTML Components", dash_core_components.version) Dash HTML Components 2.0.0 Dash VTK 0.0.9

    @alexcjohnson

    opened by LiamConnors 1
  • Unable to reproduce R example

    Unable to reproduce R example

    Description

    I am unable to reproduce the README example of R.

    Code to Reproduce

    The original R code provided in README have some ending ")" missing. I added them and the id property in vtkView as well but the rest remains the same.

    library(dash)
    library(dashVtk)
    library(dashHtmlComponents)
    
    app <- Dash$new()
    
    app$layout(
        htmlDiv(id = "outerDiv",
            style = list("width" = "100%", "height" = "calc(100vh - 16px)"),
            children = vtkView(
                id = "vtkview",
                list(
                    vtkGeometryRepresentation(
                        vtkAlgorithm(
                            vtkClass = "vtkConeSource",
                            state = list("resolution" = 64, "capping" = FALSE),
                        )
                    )
                )
            )
        )
    )
    
    app$run_server()
    

    Results

    The browser (either chrome or safari) opens the app exposed on localhost but the page is entirely blank, not showing anything. In fact, the R console shows the following warning: warning: The dependency 'async-reactvtk.js' could not be loaded; the file was not found. from NULL

    I'm wondering if the above dependency was not added to the package.

    Versions

    > sapply(c("dashVtk", "dash", "dashHtmlComponents"), packageVersion, USE.NAMES = T)
    $dashVtk
    [1] '0.0.9'
    $dash
    [1] '0.5.0'
    $dashHtmlComponents
    [1] '1.0.3'
    
    > R.Version()$platform
    [1] "x86_64-apple-darwin15.6.0"
    > R.Version()$version.string
    [1] "R version 3.6.0 (2019-04-26)"
    

    Thanks for your attention and for providing this integration between Dash and VTK.

    opened by viniciuszendron 0
  • Pyvista issue with volume data representation

    Pyvista issue with volume data representation

    See readme https://github.com/lizzjs/dash-vtk

    @jourdain this seems out of my domain, do you think this is an easy fix or something that can be added to docs?

    opened by xhluca 10
  • colorMapPreset and colorDataRange do not worked in SliceRepresentation

    colorMapPreset and colorDataRange do not worked in SliceRepresentation

    For VolumeRepresentation, I use some codes like: dash_vtk.VolumeRepresentation( id='vol', colorMapPreset='jet', colorDataRange=[0,255], children=..... ),

    it works fine~

    but in SliceRepresentation, I use: dash_vtk.SliceRepresentation( id="slice-x", xSlice=128, colorMapPreset='jet', colorDataRange=[120,255], children=dash_vtk.ShareDataSet(), ),

    nothing happened....it is still in grayscale on the slicer why?

    opened by lascqy 2
  • Allow user-defined colormaps?

    Allow user-defined colormaps?

    Hi,

    First of all thank you for the awesome work on interfacing dash and VTK! Coming from the Python world, I was really impressed how smoothly I could move from my usual Python vtk tools to dash_vtk (thanks for that utils module ;) )

    I was wondering if there could be an easy way for users to introduce their own custom colormap presets in a Representation, something I can imagine a lot of people would want to do at some point... (No matter how many options are available, I guess there will always be THAT crucial one missing...)

    Would it be possible to go beyond the provided list, or is it a limitation that comes already from vtk.js? I'm thinking of a simple syntax reflecting the presets definition like this one:

    view = dash_vtk.View(
        dash_vtk.GeometryRepresentation(
            children=[...],
            colorMapPreset= {
                'ColorSpace' : 'RGB',
                'Name' : 'gray',
                'RGBPoints' : [0, 0, 0, 0,
                               1, 1, 1, 1]
            }
        )
    )
    

    But there might be other options... I was expecting to have such an option through the mapper argument of the Representation, being used to do a mapper.setLookupTable, but I failed to find out how exactly the colormap information is passed to the mapper...

    Thank you!

    opened by gcerutti 2
Releases(v0.0.9)
  • v0.0.9(Apr 16, 2021)

  • v0.0.8(Apr 15, 2021)

    Changed

    • react-vtk-js was updated from 1.2.1 to 1.5.0. See diffs
    • dash-vtk is now loaded asynchronously (see https://github.com/plotly/dash-vtk/pull/29). It will only be loaded when one or more components is called/displayed; this helps optimize for multi-page apps and use cases where dash-vtk is dynamically loaded.
    Source code(tar.gz)
    Source code(zip)
  • v0.0.7(Apr 7, 2021)

  • v0.0.6(Feb 22, 2021)

    Fixed

    • fix(react-vtk-js): fix dynamic handling of DataArray update

    Changed

    • update to react-vtk-js 1.1.4
    • doc(View): Update props to include style/className
    Source code(tar.gz)
    Source code(zip)
  • v0.0.5(Feb 15, 2021)

    Added

    • 3 new demos using dicom (#24)
    • GlyphRepresentation

    Changed

    • Added vtk to setup.py's install requires.

    Fixed

    • VolumeDataRepresentation typo
    • GIF URL in README.md
    Source code(tar.gz)
    Source code(zip)
  • v0.0.4(Feb 9, 2021)

    Changed

    • Added section about deployment in README.md
    • dash_vtk.utils: Will try to import vtkmodules (>=9.0.1) before falling back to vtk (<=8.1.2) to avoid requiring libGL.
    Source code(tar.gz)
    Source code(zip)
  • v0.0.3(Feb 4, 2021)

    Changed

    • Demos: removed headers, updated layout sizes, remove unused files
    • demos/usage-vtk-cfd: update viz on drag
    • demos/pyvista-point-cloud: faster loading by lowering sampling
    • demos/slice-rendering: faster loading by removing volume rendering
    • README.md: Change relative links to URLs
    • docs/CONTRIBUTING.md (commit): Various clarification and improvements

    Fixed

    • Simplified imports in dash_vtk.utils.vtk to only load necessary modules from vtk. This avoids libGL.so.1 since server side rendering is not needed.
    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Jan 29, 2021)

    Added

    • PyPi description auto-generated from README.md

    Changed

    • Use package.json's files instead of npmignore
    • Change order of instructions in docs/CONTRIBUTING.md

    Fixed

    • Update setup.py to include utils directory when upload to PyPi.
    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Jan 29, 2021)

    This is the initial release of the dash-vtk library. This version might not be stable yet and there might be breaking changes in subsequent releases. See docs/REFERENCES.md for the API documentation, and README.md for more details about this library.

    Source code(tar.gz)
    Source code(zip)
Owner
Plotly
Plotly
python app to turn a photograph into a cartoon

Draw This. Draw This is a polaroid camera that draws cartoons. You point, and shoot - and out pops a cartoon; the camera's best interpretation of what

Dan Macnish 2k Dec 19, 2022
Simple Python / ImageMagick script to package images into WAD3s for use as GoldSrc textures.

WADs Out For [The] Ladies Simple Python / ImageMagick script to package images into WAD3s for use as GoldSrc textures. Development mostly focused on L

null 5 Apr 9, 2022
A little Python tool to convert a TrueType (ttf/otf) font into a PNG for use in demos.

font2png A little Python tool to convert a TrueType (ttf/otf) font into a PNG for use in demos. To use from command line it expects python3 to be at /

Rich Elmes 3 Dec 22, 2021
Python-fu-cartoonify - GIMP plug-in to turn a photo into a cartoon.

python-fu-cartoonify GIMP plug-in to turn a photo into a cartoon. Preview Installation Copy python-fu-cartoonify.py into the plug-in folder listed und

Pascal Reitermann 6 Aug 5, 2022
👾 Python project to help you convert any image into a pixel art.

?? Pixel Art Generator Python project to help you convert any image into a pixel art. ⚙️ Developer's Guide Things you need to get started with this co

Atul Anand 6 Dec 14, 2022
Simple Python package to convert an image into a quantized image using a customizable palette

Simple Python package to convert an image into a quantized image using a customizable palette. Resulting image can be displayed by ePaper displays such as Waveshare displays.

Luis Obis 3 Apr 13, 2022
AutoGiphyMovie lets you search giphy for gifs, converts them to videos, attach a soundtrack and stitches it all together into a movie!

AutoGiphyMovie lets you search giphy for gifs, converts them to videos, attach a soundtrack and stitches it all together into a movie!

Satya Mohapatra 18 Nov 13, 2022
Conversion of Image, video, text into ASCII format

asciju Python package that converts image to ascii Free software: MIT license

Aju Tamang 11 Aug 22, 2022
A Icon Maker GUI Made - Convert your image into icon ( .ico format ).

Icon-Maker-GUI A Icon Maker GUI Made Using Python 3.9.0 . It will take any image and convert it to ICO file, for web site favicon or Windows applicati

Insanecodes 12 Dec 15, 2021
Convert any image into greyscale ASCII art.

Image-to-ASCII Convert any image into greyscale ASCII art.

Ben Smith 12 Jan 15, 2022
pix2tex: Using a ViT to convert images of equations into LaTeX code.

The goal of this project is to create a learning based system that takes an image of a math formula and returns corresponding LaTeX code.

Lukas Blecher 2.6k Dec 30, 2022
A simple programme for converting url into a qr code (.png file)

QrTk A simple lightweight programme for converting url into a qr code (.png file) Pre-Requisites Before installing the programme , you need to run the

Juss Patel 4 Nov 8, 2021
This tool allows the user to convert a 16 by 16 image into a list with numbers representing an object/character.

Room Formatter This tool allows the user to convert a 16 by 16 image into a list with numbers representing an object/character. There is cur

Thomas Landstra 1 Nov 13, 2021
Script that organizes the Google Takeout archive into one big chronological folder

Script that organizes the Google Takeout archive into one big chronological folder

Mateusz Soszyński 1.6k Jan 9, 2023
Script For Importing Image sequences into scrap mechanic via blueprints

To use dowload and extract "video makes.zip" Python has to be installed https://www.python.org/ (may not work on version lower than 3.9) Has to be run

null 2 Oct 30, 2021
🛹 Turn an SVG into an STL for stencil creation purposes

svg2stl This repository provides a script which takes as input an SVG such as this one: It outputs an STL file like this one: You can also see an inte

Max Halford 3 Dec 29, 2021
Xmas-Tree-GIF-Tool - Convert any given animated gif file into an animation in GIFT CSV format

This repo is made to participate in Matt Parker's XmasTree 2021 event. Convert a

Aven Zitzelberger 2 Dec 30, 2021
Converting Images Into Minecraft Houses

Converting Images Into Minecraft Houses In this particular project, we turned a 2D Image into Minecraft pixel art and then scaled it in 3D such that i

Mathias Oliver Valdbjørn Jørgensen 1 Feb 2, 2022