Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • VTK VTK
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 738
    • Issues 738
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 200
    • Merge requests 200
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • VTK
  • VTKVTK
  • Issues
  • #17891

Closed
Open
Created May 12, 2020 by Jason Boutte@jasonb5

[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')
Assignee
Assign to
Time tracking