Hi,<br><br>If you want to track the bug, you should avoid a so complicated code (I got some<br>build error, I don't know if my fixes are coherent with your issue...). The error<br>message deals with Clip, so basically you write a test pipeline like this :<br>
reader -> clip -> update<br>If the error doesn't occur, add and test new functionnality step by step.<br><br>For your case, I just opened your data with paraview : it seems that your obj file<br>doesn't contain point data. Please, try to generate scalar data before clipping, <br>
as the error says.<br><br>Jerome<br><br><div class="gmail_quote">2011/5/19 agerlach <span dir="ltr"><<a href="mailto:agerlach@gmail.com">agerlach@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
OK. Here is an attempt at an example of my problem. Unfortunately for some<br>
reason I cannot get an observer to work to identify the end of the<br>
tracerWidet event. I'm sure it is something simple. So, may need some help<br>
getting that to work before I will be able to demonstrate my problem.<br>
(Please be patient, I'm a newbie) In my main application it uses a gui so I<br>
use the gui button press to turn tracerWidet off and then compute the area.<br>
<br>
To run place the following ply and obj model and texture in the same folder<br>
as the exe.<br>
<a href="http://www.intellimedsystems.com/files/AreaTruth_T1.jpg" target="_blank">http://www.intellimedsystems.com/files/AreaTruth_T1.jpg</a> Texture<br>
<a href="http://www.intellimedsystems.com/files/AreaTruth.ply" target="_blank">http://www.intellimedsystems.com/files/AreaTruth.ply</a> ply model<br>
<a href="http://www.intellimedsystems.com/files/AreaTruth.obj" target="_blank">http://www.intellimedsystems.com/files/AreaTruth.obj</a> obj model<br>
<br>
Run and type y to use the obj otherwise the ply will be loaded.<br>
<br>
#include <vtkPolyDataMapper.h><br>
#include <vtkActor.h><br>
#include <vtkRenderWindow.h><br>
#include <vtkRenderer.h><br>
#include <vtkRenderWindowInteractor.h><br>
#include <vtkPolyData.h><br>
#include <vtkSmartPointer.h><br>
#include <vtkSphereSource.h><br>
#include <vtkImageTracerWidget.h><br>
#include <vtkInteractorStyleTrackballCamera.h><br>
#include <vtkSelectPolyData.h><br>
#include <vtkClipPolyData.h><br>
#include <vtkMassProperties.h><br>
#include <vtkPLYReader.h><br>
#include <vtkOBJReader.h><br>
#include <vtkJPEGReader.h><br>
#include <vtkTexture.h><br>
#include <vtkCallbackCommand.h><br>
<br>
<br>
class vtkITWCallback : public vtkCommand<br>
<br>
{<br>
<br>
public:<br>
static vtkITWCallback *New()<br>
{ return new vtkITWCallback; }<br>
<br>
virtual void Execute(vtkObject *caller, unsigned long, void*)<br>
{<br>
vtkImageTracerWidget *tracer =<br>
reinterpret_cast&lt;vtkImageTracerWidget*&gt;(caller);<br>
<br>
if(tracer->IsClosed()) {<br>
<div class="im"> vtkSmartPointer<vtkPolyData> tracePolyData =<br>
vtkSmartPointer<vtkPolyData>::New();<br>
<br>
</div> tracer->GetPath(tracePolyData);<br>
std::cout << "There are " << tracePolyData->GetNumberOfPoints()<br>
<< " points in the path." << std::endl;<br>
<div class="im"><br>
vtkSmartPointer<vtkSelectPolyData> loop =<br>
vtkSmartPointer<vtkSelectPolyData>::New();<br>
</div> loop->SetInput(polyData);<br>
<div class="im"> loop->SetLoop(tracePolyData->GetPoints());<br>
loop->SetSelectionModeToSmallestRegion();<br>
loop->Update();<br>
<br>
vtkSmartPointer<vtkClipPolyData> clip =<br>
vtkSmartPointer<vtkClipPolyData>::New();<br>
clip->SetInput(loop->GetOutput());<br>
clip->Update();<br>
<br>
vtkSmartPointer<vtkMassProperties> mass =<br>
vtkSmartPointer<vtkMassProperties>::New();<br>
mass->SetInput(clip->GetOutput());<br>
</div> std::cout << "Area = " << mass->GetSurfaceArea() << "[mm]";<br>
}<br>
else<br>
std::cout << "Trace not closed";<br>
}<br>
<br>
vtkITWCallback():polyData(0){}<br>
<br>
vtkPolyData *polyData;<br>
<br>
<br>
};<br>
<br>
int main(int argc, char *argv[])<br>
{<br>
bool usePLY = true;<br>
bool hasTexture = false;<br>
<br>
std::string input = " ";<br>
std::cout << "Use obj (y/n):\n>";<br>
std::getline(cin,input);<br>
<br>
if(input == "y" || input == "Y")<br>
usePLY = false;<br>
<br>
vtkSmartPointer<vtkPolyData> polyData;<br>
polyData = vtkSmartPointer<vtkPolyData>::New();<br>
<br>
vtkSmartPointer<vtkTexture> texture =<br>
vtkSmartPointer<vtkTexture>::New();<br>
<br>
if(usePLY)<br>
{<br>
std::cout << "Using *.ply";<br>
vtkSmartPointer<vtkPLYReader> plyReader =<br>
vtkSmartPointer<vtkPLYReader>::New();<br>
<br>
plyReader->SetFileName("AreaTruth.ply");<br>
plyReader->Update();<br>
polyData = plyReader->GetOutput();<br>
<br>
}<br>
else<br>
{<br>
std::cout << "Using *.obj";<br>
vtkSmartPointer<vtkOBJReader> objReader =<br>
vtkSmartPointer<vtkOBJReader>::New();<br>
<br>
objReader->SetFileName("AreaTruth.obj");<br>
objReader->Update();<br>
polyData = objReader->GetOutput();<br>
<br>
hasTexture = true;<br>
<br>
vtkSmartPointer<vtkJPEGReader> jpgReader =<br>
vtkSmartPointer<vtkJPEGReader>::New();<br>
jpgReader->SetFileName("AreaTruth_T1.jpg");<br>
jpgReader->Update();<br>
<br>
<br>
texture->SetInputConnection(jpgReader->GetOutputPort());<br>
texture->InterpolateOn();<br>
<br>
<br>
}<br>
<br>
// Create a mapper and actor<br>
vtkSmartPointer<vtkPolyDataMapper> mapper =<br>
vtkSmartPointer<vtkPolyDataMapper>::New();<br>
mapper->SetInput(polyData);<br>
vtkSmartPointer<vtkActor> actor =<br>
vtkSmartPointer<vtkActor>::New();<br>
actor->SetMapper(mapper);<br>
<br>
if(hasTexture)<br>
actor->SetTexture(texture);<br>
<br>
// A renderer and render window<br>
vtkSmartPointer<vtkRenderer> renderer =<br>
vtkSmartPointer<vtkRenderer>::New();<br>
vtkSmartPointer<vtkRenderWindow> renderWindow =<br>
vtkSmartPointer<vtkRenderWindow>::New();<br>
renderWindow->AddRenderer(renderer);<br>
renderer->AddActor(actor);<br>
<br>
// An interactor<br>
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =<br>
vtkSmartPointer<vtkRenderWindowInteractor>::New();<br>
renderWindowInteractor->SetRenderWindow(renderWindow);<br>
<br>
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style =<br>
vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();<br>
<br>
renderWindowInteractor->SetInteractorStyle(style);<br>
<br>
vtkSmartPointer<vtkCallbackCommand> callback =<br>
vtkSmartPointer<vtkCallbackCommand>::New();<br>
callback->SetCallback(CallbackFunction);<br>
<br>
vtkSmartPointer<vtkITWCallback> itwCallback =<br>
vtkSmartPointer<vtkITWCallback>::New();<br>
itwCallback->polyData = polyData;<br>
<br>
<br>
<br>
vtkSmartPointer<vtkImageTracerWidget> tracerWidget;<br>
tracerWidget = vtkSmartPointer<vtkImageTracerWidget>::New();<br>
tracerWidget->SetInteractor(renderWindowInteractor);<br>
tracerWidget->SetViewProp(actor);<br>
tracerWidget->AutoCloseOn();<br>
tracerWidget->AddObserver(vtkCommand::EndInteractionEvent, itwCallback);<br>
tracerWidget->On();<br>
renderWindow->Render();<br>
<br>
renderWindowInteractor->Initialize();<br>
renderWindow->Render();<br>
<br>
<br>
<br>
<br>
// Begin mouse interaction<br>
<br>
renderWindowInteractor->Start();<br>
<br>
return EXIT_SUCCESS;<br>
}<br>
<font color="#888888"><br>
<br>
--<br>
View this message in context: <a href="http://vtk.1045678.n5.nabble.com/Weird-vtkClipPolyData-error-when-using-an-obj-tp4408314p4410434.html" target="_blank">http://vtk.1045678.n5.nabble.com/Weird-vtkClipPolyData-error-when-using-an-obj-tp4408314p4410434.html</a><br>
</font><div><div></div><div class="h5">Sent from the VTK - Users mailing list archive at Nabble.com.<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">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" target="_blank">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" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
</div></div></blockquote></div><br>