Hi David,<div><br></div><div>Thanks... that is exactly what I want to do. I was wondering, how does it manage missing points. </div><div><br></div><div>Another thing, I tried to compile the test program on vtk documentation website</div>

<div><br></div><div><a href="http://vtk.org/gitweb?p=VTK.git;a=blob_plain;f=Filters/Hybrid/Testing/Cxx/TestBSplineWarp.cxx">http://vtk.org/gitweb?p=VTK.git;a=blob_plain;f=Filters/Hybrid/Testing/Cxx/TestBSplineWarp.cxx</a></div>

<div><br></div><div>and I get an error as, </div><div><br></div><div>error: ‘class vtkBSplineTransform’ has no member named ‘SetCoefficientData’.</div><div><br></div><div>Thanks,</div><div>Anant.<br>

<br><div class="gmail_quote">On Fri, Sep 14, 2012 at 2:37 PM, David Gobbi <span dir="ltr">&lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



Hi Anant,<br>
<br>
If you recompute the spline coefficients within the transform&#39;s<br>
Update() method, then it should provide the sort of pipeline behavior<br>
that you are looking for.  The following paper describes the VTK<br>
transform update mechanism:<br>
<a href="http://www.ncbi.nlm.nih.gov/pubmed/12631510" target="_blank">http://www.ncbi.nlm.nih.gov/pubmed/12631510</a><br>
<br>
I added a vtkBSplineTransform to VTK 5.10.  It might satisfy your<br>
needs, and if not, you might be able to re-use parts of it:<br>
<a href="http://hdl.handle.net/10380/3252" target="_blank">http://hdl.handle.net/10380/3252</a><br>
<span><font color="#888888"><br>
 - David<br>
</font></span><div><div><br>
On Fri, Sep 14, 2012 at 4:02 AM, Anant Vemuri &lt;<a href="mailto:ajar108@gmail.com" target="_blank">ajar108@gmail.com</a>&gt; wrote:<br>
&gt; I am currently creating a spline using vtkSplineFilter. The points in the<br>
&gt; spline are changing as new positions for points are generated. However, now<br>
&gt; I want to put the position information into a vtkTransform and connect the<br>
&gt; Spline being created within a pipeline so that, it gets updated when the the<br>
&gt; transform changes.<br>
&gt;<br>
&gt; currently I am doing this whenever I get new positions. Is it possible to<br>
&gt; put this in a pipeline so that the points are updated using a vtktransform<br>
&gt; when the transform changes. In vtkTransform there is a function called<br>
&gt; &quot;MultiplyPoint&quot; and &quot;TransformPoint&quot;, however both are not indicated to be<br>
&gt; pipelined.<br>
&gt;<br>
&gt; I am curious if anyone has tried to do this, or if anyone has suggestions on<br>
&gt; this issue.<br>
&gt;<br>
&gt; myspline is a class containing vtkPoints, vtkPolyLine, vtkPolyData etc.<br>
&gt;<br>
&gt;<br>
&gt;     //   In the constructor for my spline class<br>
&gt;     _points       = vtkSmartPointer&lt; vtkPoints &gt;::New();<br>
&gt;     _polyLine     = vtkSmartPointer&lt; vtkPolyLine &gt;::New();<br>
&gt;     _cells        = vtkSmartPointer&lt; vtkCellArray &gt;::New();<br>
&gt;     _polyData     = vtkSmartPointer&lt; vtkPolyData &gt;::New();<br>
&gt;     _splineFilter = vtkSmartPointer&lt; vtkSplineFilter &gt;::New();<br>
&gt;     _tubeFilter   = vtkSmartPointer&lt; vtkTubeFilter &gt;::New();<br>
&gt;<br>
&gt;     //   PIPELINE<br>
&gt;     _cells-&gt;InsertNextCell(_polyLine);<br>
&gt;     _polyData-&gt;SetPoints(_points);<br>
&gt;     _polyData-&gt;SetLines(_cells);<br>
&gt;     _splinefilter-&gt;SetInput( _polyData );<br>
&gt;     _splinefilter-&gt;SetMaximumNumberOfSubdivisions( 48 );<br>
&gt;     _tubeFilter-&gt;SetInputConnection( _splineFilter-&gt;GetOutputPort());<br>
&gt;     _tubeFilter-&gt;SetNumberOfSides( 12 );<br>
&gt;     _tubeFilter-&gt;SetRadius( 5.0 );<br>
&gt;     _tubeFilter-&gt;SetCapping(true);<br>
&gt;     _mapper-&gt;SetInputConnection( _tubeFilter-&gt;GetOutputPort() );<br>
&gt;     _actor-&gt;SetMapper(_mapper);<br>
&gt;     _actor-&gt;GetProperty()-&gt;SetLineWidth(4);<br>
&gt;<br>
&gt;     //----------------------------------------------------------------<br>
&gt;     // Updating for new vtkpoints<br>
&gt;<br>
&gt;     // I want to put this part into the pipeline if possible so that<br>
&gt;     // i can apply a vtkTransform to lets say the _points and the spline<br>
&gt;     // gets updated automatically. The updated _points that I get are<br>
&gt;<br>
&gt;     // absolute positions so I cannot appl<br>
&gt;     splineObj-&gt;getPoints()-&gt;Reset();<br>
&gt;     splineObj-&gt;getPolyLine()-&gt;GetPointIds()-&gt;Reset();<br>
&gt;     vtkIdType k = 0;<br>
&gt;<br>
&gt;     // __scanorder contains the order in which the points need to be put<br>
&gt; into a spline<br>
&gt;     // __positions contains the updated point locations<br>
&gt;     for (int j = 0; j &lt; __scanOrder.size(); j++)<br>
&gt;     {<br>
&gt;          unsigned int __idx = __scanOrder[i][j]-1;<br>
&gt;          double &amp;__coord = __positions[__idx]-&gt;getCoordinate();<br>
&gt;<br>
&gt;<br>
&gt; splineObj-&gt;getPoints()-&gt;InsertNextPoint(__coord[0],__coord[1],__coord[2]);<br>
&gt;          splineObj-&gt;getPolyLine()-&gt;GetPointIds()-&gt;InsertNextId( k );<br>
&gt;          k++;<br>
&gt;     }<br>
&gt;     splineObj-&gt;getCellArray()-&gt;Reset();<br>
&gt;     splineObj-&gt;getCellArray()-&gt;InsertNextCell(splineObj-&gt;getPolyLine());<br>
&gt;     splineObj-&gt;getPolyData()-&gt;Modified();<br>
&gt;<br>
&gt;<br>
&gt; Thank you,<br>
&gt;<br>
&gt; Anant.<br>
</div></div></blockquote></div><br></div>