1#!/usr/bin/env python
2
3# Test interactions of scalar coloring with various ScalarMaterialMode
4# settings.
5import vtk
6
7renWin = vtk.vtkRenderWindow()
8iRen = vtk.vtkRenderWindowInteractor()
9iRen.SetRenderWindow(renWin)
10renWin.SetSize(500, 600)
11
12sphere = vtk.vtkSphereSource()
13
14elev = vtk.vtkElevationFilter()
15elev.SetLowPoint(-0.25, -0.25, -0.25)
16elev.SetHighPoint(.25, .25, .25)
17elev.SetInputConnection(sphere.GetOutputPort())
18
19lut = vtk.vtkLookupTable()
20lut.SetSaturationRange(0, 0)
21lut.SetValueRange(0, 1)
22lut.SetRange(0, 1)
23lut.Build()
24
25
26def add(**kwargs):
27    ren = vtk.vtkRenderer()
28    ren.SetBackground(0.5, 0.5, 0.5)
29    #ren.SetViewport(0, 0, 0.5, 1)
30    renWin.AddRenderer(ren)
31
32    mapper = vtk.vtkPolyDataMapper()
33    mapper.SetInputConnection(elev.GetOutputPort())
34    mapper.SetLookupTable(lut)
35    mapper.SetInterpolateScalarsBeforeMapping(kwargs['interpolate_scalars_before_mapping'])
36    mapper.SetScalarMaterialMode(kwargs["material_mode"])
37
38    actor = vtk.vtkActor()
39    actor.SetMapper(mapper)
40    ren.AddActor(actor)
41
42    prop = actor.GetProperty()
43    prop.SetAmbient(kwargs['ambient'])
44    prop.SetDiffuse(kwargs['diffuse'])
45    prop.SetAmbientColor(1, 0, 0)
46    prop.SetDiffuseColor(0, 1, 0)
47
48    textActorL = vtk.vtkTextActor()
49    txt = " InterpolateScalarsBeforeMapping: %d\n"\
50          " ScalarMaterialMode: %s\n"\
51          " Ambient: %.2f\t Ambient Color: 1, 0, 0\n"\
52          " Diffuse: %.2f\t Diffuse Color: 0, 1, 0"
53    txt = txt % (kwargs['interpolate_scalars_before_mapping'],
54            mapper.GetScalarMaterialModeAsString(), prop.GetAmbient(), prop.GetDiffuse())
55    textActorL.SetInput(txt)
56    ren.AddActor(textActorL)
57    return (ren, actor, mapper)
58
59ren, actor, mapper = add(interpolate_scalars_before_mapping=1, ambient=0.49,
60        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_DEFAULT)
61ren.SetViewport(0, 0, 0.5, 0.25)
62
63ren, actor, mapper = add(interpolate_scalars_before_mapping=0, ambient=0.49,
64        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_DEFAULT)
65ren.SetViewport(0.5, 0, 1, 0.25)
66
67ren, actor, mapper = add(interpolate_scalars_before_mapping=1, ambient=0.49,
68        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_AMBIENT)
69ren.SetViewport(0, 0.25, 0.5, 0.5)
70
71ren, actor, mapper = add(interpolate_scalars_before_mapping=0, ambient=0.49,
72        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_AMBIENT)
73ren.SetViewport(0.5, 0.25, 1, 0.5)
74
75ren, actor, mapper = add(interpolate_scalars_before_mapping=1, ambient=0.49,
76        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_DIFFUSE)
77ren.SetViewport(0, 0.5, 0.5, 0.75)
78
79ren, actor, mapper = add(interpolate_scalars_before_mapping=0, ambient=0.49,
80        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_DIFFUSE)
81ren.SetViewport(0.5, 0.5, 1, 0.75)
82
83ren, actor, mapper = add(interpolate_scalars_before_mapping=1, ambient=0.49,
84        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_AMBIENT_AND_DIFFUSE)
85ren.SetViewport(0, 0.75, 0.5, 1)
86
87ren, actor, mapper = add(interpolate_scalars_before_mapping=0, ambient=0.49,
88        diffuse=0.51, material_mode=vtk.VTK_MATERIALMODE_AMBIENT_AND_DIFFUSE)
89ren.SetViewport(0.5, 0.75, 1, 1)
90
91#---------------------------------------------------------
92