# ospray backend from vtk python

**URL:** https://discourse.vtk.org/t/ospray-backend-from-vtk-python/2128
**Category:** Support
**Created:** [November 22, 2019, 11:44am UTC](https://discourse.vtk.org/t/ospray-backend-from-vtk-python/2128 "2019-11-22T11:44:41Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![gilcu2](https://discourse.vtk.org/user_avatar/discourse.vtk.org/gilcu2/32/1108_2.png) [@gilcu2](https://discourse.vtk.org/u/gilcu2)
#### Post date: [November 22, 2019, 11:44am UTC](https://discourse.vtk.org/t/ospray-backend-from-vtk-python/2128/1 "2019-11-22T11:44:42Z")

</div>

Hello, is possible use the ospray backend from vtk python? If yes can you explain or point to some example?  
Thanks  
Reynaldo

---

<div class="post-metadata">

### Author: ![Michael](https://discourse.vtk.org/user_avatar/discourse.vtk.org/michael/32/16_2.png) [@Michael](https://discourse.vtk.org/u/Michael)
#### Post date: [November 25, 2019, 8:53am UTC](https://discourse.vtk.org/t/ospray-backend-from-vtk-python/2128/2 "2019-11-25T08:53:32Z")

</div>

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
```

---

<div class="post-metadata">

### Author: ![gilcu2](https://discourse.vtk.org/user_avatar/discourse.vtk.org/gilcu2/32/1108_2.png) [@gilcu2](https://discourse.vtk.org/u/gilcu2)
#### Post date: [November 25, 2019, 2:33pm UTC](https://discourse.vtk.org/t/ospray-backend-from-vtk-python/2128/3 "2019-11-25T14:33:16Z")

</div>

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()
```

---

<div class="post-metadata">

### Author: ![Michael](https://discourse.vtk.org/user_avatar/discourse.vtk.org/michael/32/16_2.png) [@Michael](https://discourse.vtk.org/u/Michael)
#### Post date: [November 25, 2019, 3:27pm UTC](https://discourse.vtk.org/t/ospray-backend-from-vtk-python/2128/4 "2019-11-25T15:27:01Z")

</div>

You may want to set `OSPRAY_THREADS` environment variable.

---

<div class="post-metadata">

### Author: ![gilcu2](https://discourse.vtk.org/user_avatar/discourse.vtk.org/gilcu2/32/1108_2.png) [@gilcu2](https://discourse.vtk.org/u/gilcu2)
#### Post date: [November 25, 2019, 3:34pm UTC](https://discourse.vtk.org/t/ospray-backend-from-vtk-python/2128/5 "2019-11-25T15:34:50Z")

</div>

Already tried this but only use one core anyway.  
Thanks
