I’m getting error in the import statement only. For color do any other setting need to be done apart from View creation. Also, in case of RemoteView the image quality is not so good while any operation like rotate/zoom is performed over it. I tried tuning desiredUpdateRate but it slows down the operations with increase in quality. Below is the code for reference.
from trame.layouts import SinglePage
from trame.html import vtk, vuetify
# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingVolumeOpenGL2
import vtkmodules.vtkRenderingOpenGL2 # noqa
from vtkmodules.vtkImagingGeneral import vtkImageGaussianSmooths # Import giving error
from vtkmodules.vtkIOXML import vtkXMLImageDataReader
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkRenderingVolume import vtkFixedPointVolumeRayCastMapper
from vtkmodules.vtkCommonDataModel import vtkPiecewiseFunction
from vtkmodules.vtkRenderingCore import (
vtkColorTransferFunction,
vtkRenderer,
vtkRenderWindow,
vtkRenderWindowInteractor,
vtkVolume,
vtkVolumeProperty
)
renderer = vtkRenderer()
renderWindow = vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindow.SetWindowName('VTI Reader')
renderWindowInteractor = vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
renderWindowInteractor.GetInteractorStyle().SetCurrentStyleToTrackballCamera()
renderWindowInteractor.SetDesiredUpdateRate(15)
renderWindowInteractor.Initialize()
colors = vtkNamedColors()
vtiReader = vtkXMLImageDataReader()
vtiReader.SetFileName("Sample.vti")
vtiReader.Update()
vtiMapper = vtkFixedPointVolumeRayCastMapper()
vtiMapper.SetInputConnection(vtiReader.GetOutputPort())
vtiColor = vtkColorTransferFunction()
vtiColor.AddHSVPoint(0.0, 1.0, 0.0, 1.0)
vtiColor.AddHSVPoint(1300.0, 1, 0, 1)
vtiColor.AddHSVPoint(1301.0, 0.0889, 0.95, 0.966)
vtiColor.AddHSVPoint(1700.0, 0.0889, 0.95, 0.955)
vtiColor.AddHSVPoint(1900.0, 0.0889, 0.95, 0.913)
vtiColor.AddHSVPoint(2080.0, 0.0889, 0.95, 0.903)
vtiOpacity = vtkPiecewiseFunction()
vtiOpacity.AddPoint(0, 0.0)
vtiOpacity.AddPoint(1300.0, 0.0)
vtiOpacity.AddPoint(1301.0, 0.012)
vtiOpacity.AddPoint(1700, 0.017)
vtiOpacity.AddPoint(1800.0, 0.020)
vtiOpacity.AddPoint(2000.0, 0.035)
vtiOpacity.AddPoint(1900.0, 0.038)
vtiOpacity.AddPoint(2080.0, 0.045)
vtiGradientOpacity = vtkPiecewiseFunction()
vtiGradientOpacity.AddPoint(0, 0.0)
vtiGradientOpacity.AddPoint(90, 0.5)
vtiGradientOpacity.AddPoint(100, 1.0)
volumeProperty = vtkVolumeProperty()
volumeProperty.SetColor(vtiColor)
volumeProperty.SetScalarOpacity(vtiOpacity)
volumeProperty.SetGradientOpacity(vtiGradientOpacity)
volumeProperty.SetInterpolationTypeToLinear()
volumeProperty.ShadeOn()
vtiVolume = vtkVolume()
vtiVolume.SetMapper(vtiMapper)
vtiVolume.SetProperty(volumeProperty)
renderer.AddViewProp(vtiVolume)
renderer.ResetCamera()
renderer.SetBackground(colors.GetColor3d('White'))
renderer.GetActiveCamera().Zoom(2)
renderer.ResetCameraClippingRange()
renderWindow.Render()
VTK_VIEW_SETTINGS = {
"interactive_ratio": 1,
"interactive_quality": 100,
}
# Colors seems to be faded in RemoteView-----------------
# html_view = vtk.VtkLocalView(renderWindow, ref="view", interactive_ratio=(1,))
html_view = vtk.VtkRemoteView(renderWindow, ref="view", interactive_ratio=(1,))
html_view.update()
layout = SinglePage("Volume Viewer", on_ready=html_view.update)
layout.content.children += [
vuetify.VContainer(
fluid=True,
classes="pa-0 fill-height",
children=[html_view],
)
]
if __name__ == "__main__":
layout.start()