Skip to content

[VTK 9.0.0rc3][Python] SetMultiSamples has not effect on output

Calling SetMultiSamples has no affect on the output using VTK 9.0.0rc3.

Running the following script in both environment produces different results. In 8.2.0 the output shows a difference when Setting MultiSamples to greater than 0 but 9.0.0rc3 shows no difference.

The expected behavior would show a difference in both environments.

VTK 8.2.0 environment: conda create -n vcs-mesa-18.3.1-8.2.0 -c conda-forge/label/vtk_dev -c conda-forge "vtk=8.2.0" "mesalib=18.3.1" pillow

vcs-mesa-18.3.1-8.2.0.yaml

VTK 9.0.0rc3 conda create -n vcs-mesa-18.3.1-9.0.0 -c conda-forge/label/vtk_dev -c conda-forge "vtk=9.0.0rc3" "mesalib=18.3.1" pillow

vcs-mesa-18.3.1-9.0.0.yaml

Script:

import vtk
from PIL import ImageChops
from PIL import Image

colors = vtk.vtkNamedColors()

def draw_line(aa=None):
    renderer = vtk.vtkRenderer()

    window = vtk.vtkRenderWindow()
    window.SetSize(640, 480)
    window.AddRenderer(renderer)

    source = vtk.vtkLineSource()
    source.SetPoint1([0.0, 0.0, 0.0])
    source.SetPoint2([640.0, 480.0, 0.0])

    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputConnection(source.GetOutputPort())

    actor = vtk.vtkActor()
    actor.GetProperty().SetLineWidth(1.0)
    actor.GetProperty().SetColor(colors.GetColor3d('Black'))
    actor.SetMapper(mapper)

    renderer.AddActor(actor)
    renderer.SetBackground(colors.GetColor3d('White'))

    if aa is not None:
        window.SetMultiSamples(aa)

    value = window.GetMultiSamples()

    window.Render()

    image = vtk.vtkWindowToImageFilter()
    image.SetInput(window)
    image.SetInputBufferTypeToRGB()
    image.ReadFrontBufferOff()
    image.Update()

    filename = f'vtk-{vtk.VTK_VERSION}_{value}.png'

    writer = vtk.vtkPNGWriter()
    writer.SetFileName(filename)
    writer.SetInputConnection(image.GetOutputPort())
    writer.Write()

    return filename

base = draw_line(0)
aa32 = draw_line(32)

img1 = Image.open(base)
img2 = Image.open(aa32)

diff = ImageChops.difference(img1, img2)

diff.save(f'vtk-{vtk.VTK_VERSION}-diff.png')