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