<html><head><base href="x-msg://15/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hey Mark,<div><br></div><div>I've never used it myself, but looking at the test for vtkIterativeClosestPointTransform and the example:</div><div><br></div><div><a href="http://www.vtk.org/Wiki/VTK/Examples/Filters/IterativeClosestPointsTransform">http://www.vtk.org/Wiki/VTK/Examples/Filters/IterativeClosestPointsTransform</a></div><div><br></div><div>it looks like you need to feed it your polydata, and not the actors. You can then get the transform out with GetMatrix() and then use vtkTransformPolyDataFilter to apply the transform to your data (or to the UserMatrix of your actor).</div><div><br></div><div>I always think of the actor position as relative to the natural starting point -- wherever the coordinates of your polydata are located, that's the (0,0,0) starting point for the actor, and then you can change the position or orientation relative to that original position.</div><div><br></div><div>Talk to you later,</div><div>-Eric</div><div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div>------------------------------------------------------</div><div>Eric E Monson</div><div>Duke Visualization Technology Group</div><div><br class="webkit-block-placeholder"></div></span></div><br><div><div>On Jun 23, 2010, at 6:26 PM, Mark K. Batesole, DDS, MS wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; ">Hi Everyone,</span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; "><br></span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; ">I'm having a heck of a time getting this little application to work correctly. Here's the problem I'm having: after splitting the polydata and assigning each part an actor. I'd like to get the world position of each actor so that I can then run an </span></font></span></font>vtkIterativeClosestPointTransform <font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; ">and know what the transformation matrix is from one of the actors to another. </span></font><span class="Apple-style-span" style="font-family: Helvetica; font-size: 12px; ">So I've used vtkActor->GetPosition() which according to all the documentation I've found should return the actor's world coordinates. But each actor returns (0.0, 0.0, 0.0). Since they are not all on top of each other at the origin, I don't see how this could be correct. </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; "><br></span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; ">I know I must be missing something... any help would be sincerely appreciated. </span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; "><br></span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; ">Thank you,</span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; ">Mark</span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; "><br></span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><span class="Apple-style-span" style=""><font class="Apple-style-span" face="Helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px; "><code snippet follows></span></font></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; font-size: medium; "><font class="Apple-style-span" color="#0000FF"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span style="color: rgb(0, 0, 255); "><span class="Apple-style-span" style="font-size: small; ">def</span></span><span class="Apple-style-span" style="font-size: small; "> splitParts(polydata):</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn = vtk.vtkPolyDataConnectivityFilter()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.SetInput(polydata)</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.SetExtractionModeToAllRegions()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.Update()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> nregions = conn.GetNumberOfExtractedRegions()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.SetExtractionModeToSpecifiedRegions()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.Update()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> polydata_collection = []</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> </span><span style="color: rgb(0, 0, 255); "><span class="Apple-style-span" style="font-size: small; ">for</span></span><span class="Apple-style-span" style="font-size: small; "> region </span><span style="color: rgb(0, 0, 255); "><span class="Apple-style-span" style="font-size: small; ">in</span></span><span class="Apple-style-span" style="font-size: small; "> xrange(nregions):</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.InitializeSpecifiedRegionList()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.AddSpecifiedRegion(region)</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> conn.Update()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> p = vtk.vtkPolyData()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> p.DeepCopy(conn.GetOutput())</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> p.Update()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> polydata_collection.append(p)</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> </span><span style="color: rgb(0, 0, 255); "><span class="Apple-style-span" style="font-size: small; ">return</span></span><span class="Apple-style-span" style="font-size: small; "> polydata_collection</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; ">reader = vtk.vtkXMLPolyDataReader()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 189, 0); font-family: Helvetica; "><span style="color: rgb(0, 0, 0); "><span class="Apple-style-span" style="font-size: small; ">reader.SetFileName(</span></span><span class="Apple-style-span" style="font-size: small; ">'Model.</span><span style="text-decoration: underline; "><span class="Apple-style-span" style="font-size: small; ">vtp</span></span><span class="Apple-style-span" style="font-size: small; ">'</span><span style="color: rgb(0, 0, 0); "><span class="Apple-style-span" style="font-size: small; ">) </span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; ">reader.Update();</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; ">polydataCollection = splitParts(reader.GetOutput())</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; ">actorCollection = [] </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; font-family: Helvetica; "><span style="color: rgb(0, 0, 255); "><span class="Apple-style-span" style="font-size: small; ">for</span></span><span class="Apple-style-span" style="font-size: small; "> item </span><span style="color: rgb(0, 0, 255); "><span class="Apple-style-span" style="font-size: small; ">in</span></span><span class="Apple-style-span" style="font-size: small; "> xrange(len(polydataCollection)):</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> mapper = vtk.vtkPolyDataMapper()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> mapper.SetInput(polydataCollection[item])</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(203, 203, 203); font-family: Helvetica; "><span class="Apple-style-span" style=""><span class="Apple-style-span" style="font-size: small; "> </span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> actor = vtk.vtkActor()</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> actor.SetMapper(mapper)</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> actorCollection.append(actor)</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> ren.AddActor(actor)</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; font-family: Helvetica; "><span class="Apple-style-span" style="font-size: small; "> </span><span class="Apple-style-span" style="color: rgb(0, 0, 255); "><span class="Apple-style-span" style="font-size: small; ">print</span></span><span class="Apple-style-span" style="font-size: small; "> actor.GetPosition()</span></div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: fixed; "></div></div><br>_______________________________________________<br>Powered by<span class="Apple-converted-space"> </span><a href="http://www.kitware.com">www.kitware.com</a><br><br>Visit other Kitware open-source projects at<a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br><br>Please keep messages on-topic and check the VTK FAQ at:<a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a><br></div></blockquote></div><br></div></body></html>