<div dir="ltr">Hi,<div><br></div><div>I am new to vtk and I am trying to clamp a 2D line to 3D surface. By clamp I mean that I want the z coordinates of the line to follow as close as possible the z coordinates of the surface. I figured that would apply thin plate spline transform to the line but I might have configured things wrong because I can't get it to work. What's the best way to accomplish this in VTK? Is this even possible? </div>
<div><br></div><div>Below is my python code for reference, and attached a screenshot of the rendering window.</div><div><br></div><div>Any help is appreciated.</div><div><br></div><div>Thanks</div><div><br></div><div>Guillaume</div>
<div><pre style="font-family:Consolas;color:black"><span style="color:blue">import</span> sys
<span style="color:blue">import</span> vtk
 
filename = sys.argv[1]
 
renderer = vtk.vtkRenderer()
 
window = vtk.vtkRenderWindow()
window.AddRenderer(renderer) 
 
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(window)
 
style = vtk.vtkInteractorStyleTrackballCamera()
interactor.SetInteractorStyle(style)
 
reader = vtk.vtkSTLReader()
reader.SetFileName(filename)
reader.Update()
 
transform = vtk.vtkTransform()
transform.Scale(1,1,20)
 
filter = vtk.vtkTransformFilter()
filter.SetTransform(transform)
filter.SetInput(reader.GetOutput())
 
mapper = vtk.vtkPolyDataMapper()
mapper.SetInput(filter.GetOutput() )
 
actor = vtk.vtkActor()
actor.SetMapper(mapper)
 
renderer.AddActor(actor)
 
<span style="color:green">## create source</span>
source = vtk.vtkLineSource()
source.SetPoint1(800,800,2800)
source.SetPoint2(2000,2000,2800)
 
transform2 = vtk.vtkThinPlateSplineTransform()
transform2.SetSourceLandmarks( filter.GetOutput().GetPoints() )
transform2.SetTargetLandmarks( filter.GetOutput().GetPoints() )
 
filter2 = vtk.vtkTransformFilter()
filter2.SetTransform(transform2)
filter2.SetInput(source.GetOutput())
 
<span style="color:green"># mapper</span>
mapper = vtk.vtkPolyDataMapper()
mapper.SetInput(filter2.GetOutput())
 
<span style="color:green"># actor</span>
actor = vtk.vtkActor()
actor.SetMapper(mapper)
 
<span style="color:green"># color actor</span>
actor.GetProperty().SetColor(1,0,1)
 
<span style="color:green"># assign actor to the renderer</span>
renderer.AddActor(actor)
 
window.Render()
interactor.Start()

</pre><pre style="font-family:Consolas;color:black"><br></pre><pre style="font-family:Consolas;color:black"><br></pre></div><div><div><br></div>-- <br>Guillaume Dumont<br>=========================<br><a href="mailto:dumont.guillaume@gmail.com">dumont.guillaume@gmail.com</a>
</div></div>