Source code for panel.models.vtk

Defines custom VTKPlot bokeh model to render VTK objects.
from bokeh.core.enums import enumeration
from bokeh.core.has_props import abstract
from import (
    Any, Bool, Bytes, Dict, Enum, Float, Instance, Int, List, Nullable,
    Override, Positive, String,
from bokeh.models import ColorMapper, Model

from ..config import config
from import bundled_files
from ..util import classproperty
from .layout import HTMLBox

vtk_cdn = f"{config.npm_cdn}/vtk.js@20.0.1/vtk.js"

[docs]class VTKAxes(Model): """ A Bokeh model for axes """ axes_opacity = Float(default=1) digits = Int(default=1) fontsize = Positive(Int, default=12) grid_opacity = Float(default=0.1) origin = Any() show_grid = Bool(default=True) xticker = Dict(String, Any) yticker = Dict(String, Any) zticker = Dict(String, Any)
[docs]@abstract class AbstractVTKPlot(HTMLBox): """ Abstract Bokeh model for vtk plots that wraps around a vtk-js library and renders it inside a Bokeh plot. """ __javascript_raw__ = [vtk_cdn] @classproperty def __javascript__(cls): return bundled_files(AbstractVTKPlot) @classproperty def __js_skip__(cls): return {'vtk': cls.__javascript__} __js_require__ = { "paths": {"vtk": vtk_cdn[:-3]}, "shim": { "vtk": {"exports": "vtk"}, } } axes = Instance(VTKAxes) camera = Dict(String, Any) color_mappers = List(Instance(ColorMapper)) height = Override(default=300) orientation_widget = Bool(default=False) interactive_orientation_widget = Bool(default=False) width = Override(default=300) annotations = List(Dict(String, Any))
[docs]class VTKSynchronizedPlot(AbstractVTKPlot): """ Bokeh model for plotting a VTK render window """ arrays = Dict(String, Bytes) arrays_processed = List(String) enable_keybindings = Bool(default=False) one_time_reset = Bool(default=False) rebuild = Bool(default=False, help="""If true when scene change all the render is rebuilt from scratch""") scene = Dict(String, Any, help="""The serialized vtk.js scene on json format""")
[docs]class VTKJSPlot(AbstractVTKPlot): """ Bokeh model for plotting a 3D scene saved in the `.vtk-js` format """ data = Nullable(String, help="""The serialized vtk.js data""") enable_keybindings = Bool(default=False)
[docs]class VTKVolumePlot(AbstractVTKPlot): """ Bokeh model dedicated to plot a volumetric object with the help of vtk-js """ ambient = Float(default=0.2) colormap = String(help="Colormap Name") controller_expanded = Bool(default=True, help=""" If True the volume controller panel options is expanded in the view""") data = Nullable(Dict(String, Any)) diffuse = Float(default=0.7) display_slices = Bool(default=False) display_volume = Bool(default=True) edge_gradient = Float(default=0.2) interpolation = Enum(enumeration('fast_linear','linear','nearest')) mapper = Dict(String, Any) nan_opacity = Float(default=1) render_background = String(default='#52576e') rescale = Bool(default=False) sampling = Float(default=0.4) shadow = Bool(default=True) slice_i = Int(default=0) slice_j = Int(default=0) slice_k = Int(default=0) specular = Float(default=0.3) specular_power = Float(default=8.)