Skip to content

Instantly share code, notes, and snippets.

@ungi
Created January 24, 2017 02:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ungi/4b0bd3a109bd98de054c66cc1ec6cfab to your computer and use it in GitHub Desktop.
Save ungi/4b0bd3a109bd98de054c66cc1ec6cfab to your computer and use it in GitHub Desktop.
And example explaining the difference between PreMultiply and PostMultiply methods of vtkTransform objects
# Example to show difference between PreMultiply and PostMultiply
# Create coordinate models using the CreateModels module
createModelsLogic = slicer.modules.createmodels.logic()
preModelNode = createModelsLogic.CreateCoordinate(20,2)
preModelNode.SetName('PreModel')
postModelNode = createModelsLogic.CreateCoordinate(20,2)
postModelNode.SetName('PostModel')
originModelNode = createModelsLogic.CreateCoordinate(20,2)
originModelNode.SetName('OriginModel')
# Change the color of models
preModelNode.GetDisplayNode().SetColor(1,0,0)
postModelNode.GetDisplayNode().SetColor(0,1,0)
# Create transform nodes
# Google vtkMRMLLinearTransformNode for documentation
preModelToRas = slicer.vtkMRMLLinearTransformNode()
preModelToRas.SetName('PreModelToRas')
slicer.mrmlScene.AddNode(preModelToRas)
postModelToRas = slicer.vtkMRMLLinearTransformNode()
postModelToRas.SetName('PostModelToRas')
slicer.mrmlScene.AddNode(postModelToRas)
# Set transform of the transform node
# Google vtkTransform for documentation
preModelToRasTransform = vtk.vtkTransform()
preModelToRasTransform.PreMultiply() // This is default, but it makes explicit
preModelToRasTransform.Translate(0, 100, 0)
preModelToRasTransform.RotateX(30)
preModelToRasTransform.Update()
preModelToRas.SetAndObserveTransformToParent(preModelToRasTransform)
postModelToRasTransform = vtk.vtkTransform()
postModelToRasTransform.PostMultiply()
postModelToRasTransform.Translate(0, 100, 0)
postModelToRasTransform.RotateX(30)
postModelToRasTransform.Update()
postModelToRas.SetAndObserveTransformToParent(postModelToRasTransform)
# Transform the models with transform nodes
preModelNode.SetAndObserveTransformNodeID(preModelToRas.GetID())
postModelNode.SetAndObserveTransformNodeID(postModelToRas.GetID())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment