Hello, is possible use the ospray backend from vtk python? If yes can you explain or point to some example?
Thanks
Reynaldo
Hello,
You can use vtkOSPRayPass.
Here is a C++ example but it should work with python:
vtkNew<vtkOSPRayPass> osprayP;
vtkNew<vtkCameraPass> cameraP;
cameraP->SetDelegatePass(osprayP);
renderer->SetPass(cameraP);
vtkOSPRayRendererNode::SetRendererType("pathtracer", renderer); // change this to use OSPRay scvis backend or VisRTX
vtkOSPRayRendererNode::SetSamplesPerPixel(this->Options->Samples, renderer); // number of samples per pixel
vtkOSPRayRendererNode::SetEnableDenoiser(this->Options->Denoise, renderer); // if you want the denoiser
1 Like
Hi Michael, thanks. I have achieved to run with python with the next script but when run only use one thread. Do you know how to set for use more/all available?
filename = sys.argv[1]
useOspray=len(sys.argv)>2
importer = vtk.vtkOBJImporter()
importer.SetFileName(filename + '.obj')
importer.SetFileNameMTL(filename + '.mtl')
renderer = vtk.vtkRenderer()
if(useOspray):
print("Using ospray")
osprayPass= vtkOSPRayPass()
renderer.SetPass(osprayPass)
osprayNode=vtkOSPRayRendererNode()
osprayNode.SetSamplesPerPixel(4,renderer)
osprayNode.SetAmbientSamples(4,renderer)
osprayNode.SetMaxFrames(4, renderer)
else:
print("Using opengl")
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(renderer)
importer.SetRenderWindow(renWin)
importer.Update()
# Create a renderwindowinteractor
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
actors = renderer.GetActors()
actors.InitTraversal()
print('Number of items:',actors.GetNumberOfItems())
for i in range(actors.GetNumberOfItems()):
actor = actors.GetNextActor()
if actor.GetTexture():
actor.GetTexture().InterpolateOn()
pd = actor.GetMapper().GetInput()
mapper = actor.GetMapper()
mapper.SetInputData(pd)
# Enable user interface interactor
iren.Initialize()
renWin.Render()
iren.Start()
You may want to set OSPRAY_THREADS
environment variable.
Already tried this but only use one core anyway.
Thanks