|
Tags: 2017 source edit, Replaced |
(30 intermediate revisions by 8 users not shown) |
Line 1: |
Line 1: |
− | <!-- ---------------------------- --> | + | <noinclude>{{documentation/versioncheck}} |
− | {{documentation/{{documentation/version}}/module-header}} | + | </noinclude> |
− | <!-- ---------------------------- --> | |
| | | |
− | <!-- ---------------------------- -->
| + | {{documentation/banner |
− | {{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}} | + | | text = [https://slicer.readthedocs.io/en/latest/user_guide/modules/transforms.html This page has been moved to read-the-docs.] |
− | {{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}
| + | | background-color = 8FBC8F }} |
− | {{documentation/{{documentation/version}}/module-introduction-row}}
| |
− | This work is part of the National Alliance for Medical Image Computing (NA-MIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. Information on NA-MIC can be obtained from the [http://www.na-mic.org/ NA-MIC website].<br>
| |
− | Author: Alex Yarmarkovich (Isomics, SPL) <br>
| |
− | Contributors: Jean-Christophe Fillion-Robin (Kitware), Julien Finet (Kitware)<br>
| |
− | Contact: Alex Yarmarkovich, <email>alexy@bwh.harvard.edu</email><br>
| |
− | {{documentation/{{documentation/version}}/module-introduction-row}}
| |
− | {{documentation/{{documentation/version}}/module-introduction-logo-gallery
| |
− | |{{collaborator|logo|isomics}}|{{collaborator|longname|isomics}}
| |
− | |{{collaborator|logo|kitware}}|{{collaborator|longname|kitware}}
| |
− | |{{collaborator|logo|namic}}|{{collaborator|longname|namic}}
| |
− | |{{collaborator|logo|nac}}|{{collaborator|longname|nac}}
| |
− | }}
| |
− | {{documentation/{{documentation/version}}/module-introduction-end}}
| |
− | | |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-section|Module Description}}
| |
− | {{documentation/{{documentation/version}}/module-description}}
| |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-section|Use Cases}}
| |
− | Most frequently Transform module is used for these scenarios:
| |
− | | |
− | * Manual Registration: You can insert a transformation node into your scene, and in the Data module drag a volume or a model under it,
| |
− | making them children of the transformation node. After that any changes to the transformation matrix of this node will be applied to the display of children volumes and models.
| |
− | | |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-section|Tutorials}}
| |
− | * Please use tutorial about [http://www.slicer.org/slicerWiki/index.php/Documentation/4.0/Training loading and viewing data].
| |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-section|Panels and their use}}
| |
− | | |
− | {|
| |
− | |-
| |
− | | [[Image:QSlicerTransformsModuleUI.png|thumb|280px|Transforms module panel]]
| |
− | | [[Image:QSlicerTransformsModule.png|thumb|660px|''LinearTransform'' applied to ''Meningioma2''<br>Rotations: IS 45º<br>Translations: LR -41mm, IS 36mm]]
| |
− | |}
| |
− | | |
− | {{documentation/{{documentation/version}}/module-parametersdescription}}
| |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-section|Similar Modules}}
| |
− | * Related modules: [[Documentation/{{documentation/version}}/Modules/Data|Data module]], [[:Category:Documentation/{{documentation/version}}/Modules/Registration|Registration modules]].
| |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-section|References}}
| |
− | N/A
| |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-section|Information for Developers}}
| |
− | ===Key [[Documentation/{{documentation/version}}/Developers/MRML|MRML]] nodes===
| |
− | * [http://slicer.org/doc/html/classvtkMRMLTransformableNode.html vtkMRMLTransformableNode]
| |
− | * [http://slicer.org/doc/html/classvtkMRMLTransformNode.html vtkMRMLTransformNode]
| |
− | ** [http://slicer.org/doc/html/classvtkMRMLLinearTransformNode.html vtkMRMLLinearTransformNode]
| |
− | ** [http://slicer.org/doc/html/classvtkMRMLBSplineTransformNode.html vtkMRMLBSplineTransformNode]
| |
− | ** [http://slicer.org/doc/html/classvtkMRMLGridTransformNode.html vtkMRMLGridTransformNode]
| |
− | How to programmatically apply a transform to a transformable node:
| |
− | vtkNew<[http://slicer.org/doc/html/classvtkMRMLLinearTransformNode.html vtkMRMLLinearTransformNode]> transformNode;
| |
− | scene->AddNode(transformNode.GetPointer());
| |
− | ...
| |
− | vtkNew<vtkMatrix4x4> matrix;
| |
− | ...
| |
− | transform->SetAndObserveMatrixTransformToParent( matrix.GetPointer() );
| |
− | ...
| |
− | vtkMRMLVolumeNode* transformableNode = ...; // or vtkMRMLModelNode*...
| |
− | transformableNode->SetAndObserveTransformNodeID( transformNode->GetID() );
| |
− | | |
− | Because a ''transform'' node is also a ''transformable'' node, it is possible to concatenate transforms with each others:
| |
− | [http://slicer.org/doc/html/classvtkMRMLLinearTransformNode.html vtkMRMLLinearTransformNode*] transformNode = ...;
| |
− | [http://slicer.org/doc/html/classvtkMRMLLinearTransformNode.html vtkMRMLLinearTransformNode*] transformNode2 = ...;
| |
− | transformNode2->SetAndObserveTransformNodeID( transformNode->GetID() );
| |
− | ...
| |
− | transformable->SetAndObserveTransformNodeID( transformNode2->GetID() );
| |
− | | |
− | ===Events===
| |
− | When a transform node is observed by a transformable node, [http://slicer.org/doc/html/classvtkMRMLTransformableNode.html#ace1c30fc9df552543f00d51a20c038a6a4993bf6e23a6dfc138cb2efc1b9ce43b vtkMRMLTransformableNode::TransformModifiedEvent] is fired on the transformable node at observation time.
| |
− | Anytime a transform is modified, vtkCommand::ModifiedEvent is fired on the transform node and [http://slicer.org/doc/html/classvtkMRMLTransformableNode.html#ace1c30fc9df552543f00d51a20c038a6a4993bf6e23a6dfc138cb2efc1b9ce43b vtkMRMLTransformableNode::TransformModifiedEvent] is fired on the transformable node.
| |
− | | |
− | <!-- ---------------------------- -->
| |
− | {{documentation/{{documentation/version}}/module-footer}}
| |
− | <!-- ---------------------------- -->
| |