[vtkusers] Input Issue
rahul indoria
rahulindoria5 at gmail.com
Fri Jul 19 09:58:55 EDT 2013
Hi All,
I have one more questions, I have a set of point data and i want to
make a 2D image using this point data, could you please suggest me some
class or example regarding this?
Looking forward your reply soon.
On Fri, Jul 19, 2013 at 3:26 PM, rahul indoria <rahulindoria5 at gmail.com>wrote:
> Hi Bill,
> Thanks for your help, its done.
>
>
> On Fri, Jul 19, 2013 at 2:31 PM, Bill Lorensen <bill.lorensen at gmail.com>wrote:
>
>> When I add
>> polydata->Print(std::cout);
>>
>> I see that the point data has two arrays:
>> MetaImage and vtkValidPointMask
>>
>> For this example, you want MetaImage.
>> Also, the type of that array is UnsignedCharArray.
>>
>>
>>
>> On Thu, Jul 18, 2013 at 4:58 PM, rahul indoria <rahulindoria5 at gmail.com>wrote:
>>
>>> Hi all vtk users,
>>> *Hi,*
>>> * I am trying to get the point data in the given example(*
>>> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/CurvedReformation
>>> *) and i am modify my example something like that in main function to
>>> access the point data. can you check it???? *
>>>
>>> *Green color part is directly copied from the example:*
>>>
>>> *// Verify arguments*
>>> * if (argc < 4)*
>>> * {*
>>> * std::cout << "Usage: " << argv[0]*
>>> * << " InputVolume PolyDataInput"*
>>> * << " Resolution"*
>>> * << std::endl;*
>>> * return EXIT_FAILURE;*
>>> * }*
>>> *
>>> *
>>> * // Parse arguments*
>>> * std::string volumeFileName = argv[1];*
>>> * std::string polyDataFileName = argv[2];*
>>> * std::stringstream ssResolution;*
>>> * ssResolution << argv[3];*
>>> * unsigned int resolution;*
>>> * ssResolution >> resolution;*
>>> *
>>> *
>>> * // Output arguments*
>>> * std::cout << "InputVolume: " << volumeFileName << std::endl*
>>> * << "PolyDataInput: " << polyDataFileName << std::endl*
>>> * << "Resolution: " << resolution << std::endl;*
>>> *
>>> *
>>> * // Read the volume data*
>>> * vtkSmartPointer< vtkImageReader2Factory > imageFactory =*
>>> * vtkSmartPointer< vtkImageReader2Factory >::New();*
>>> * vtkImageReader2 *imageReader =*
>>> * imageFactory->CreateImageReader2(volumeFileName.c_str());*
>>> * imageReader->SetFileName(volumeFileName.c_str());*
>>> * imageReader->Update();*
>>> *
>>> *
>>> * // Read the Polyline*
>>> * vtkSmartPointer<vtkPolyDataReader> polyLineReader =*
>>> * vtkSmartPointer<vtkPolyDataReader>::New();*
>>> * polyLineReader->SetFileName(polyDataFileName.c_str());*
>>> * polyLineReader->Update();*
>>> *
>>> *
>>> * vtkSmartPointer<vtkSplineFilter> spline =*
>>> * vtkSmartPointer<vtkSplineFilter>::New();*
>>> * spline->SetInputConnection(polyLineReader->GetOutputPort());*
>>> * spline->SetSubdivideToSpecified();*
>>> * spline->SetNumberOfSubdivisions(resolution);*
>>> *
>>> *
>>> * // Sweep the line to form a surface*
>>> * double direction[3];*
>>> * direction[0] = 0.0;*
>>> * direction[1] = 0.0;*
>>> * direction[2] = 1.0;*
>>> * double distance = 164;*
>>> * spline->Update();*
>>> * vtkSmartPointer<vtkPolyData> surface =*
>>> * SweepLine(spline->GetOutput(),*
>>> * direction,*
>>> * distance,*
>>> * atoi(argv[3]));*
>>> *
>>> *
>>> * // Probe the volume with the extruded surface*
>>> * vtkSmartPointer<vtkProbeFilter> sampleVolume =*
>>> * vtkSmartPointer<vtkProbeFilter>::New();*
>>> * sampleVolume->SetInputConnection(1, imageReader->GetOutputPort());*
>>> *#if VTK_MAJOR_VERSION <= 5*
>>> * sampleVolume->SetInput(0, surface);*
>>> * #else*
>>> * sampleVolume->SetInputData(0, surface);*
>>> *#endif*
>>> * // Compute a simple window/level based on scalar range*
>>> * vtkSmartPointer<vtkWindowLevelLookupTable> wlLut =*
>>> * vtkSmartPointer<vtkWindowLevelLookupTable>::New();*
>>> * double range = imageReader->GetOutput()->GetScalarRange()[1] -*
>>> * imageReader->GetOutput()->GetScalarRange()[0];*
>>> * double level = (imageReader->GetOutput()->GetScalarRange()[1] +*
>>> * imageReader->GetOutput()->GetScalarRange()[0]) / 2.0;
>>> *
>>> * wlLut->SetWindow(range);*
>>> * wlLut->SetLevel(level);*
>>> * sampleVolume->Update();*
>>>
>>>
>>> *Red color part is modified part*
>>> *
>>> *
>>> * // Extract the polydata*
>>> * vtkSmartPointer<vtkPolyData> polydata = *
>>> * vtkSmartPointer<vtkPolyData> :: New();*
>>> * polydata = vtkPolyData::SafeDownCast(**sampleVolume->GetOutput()); //
>>> here the sampleVolume->GetOutput() are the points generated, as i
>>> understand.*
>>> *
>>> *
>>> * // Get the number of points in the polydata*
>>> * vtkIdType idNumPointsInFile = polydata->GetNumberOfPoints();*
>>> *
>>> *
>>> * vtkSmartPointer<vtkDoubleArray> array =
>>> vtkSmartPointer<vtkDoubleArray> :: New();*
>>> * array =
>>> vtkDoubleArray::SafeDownCast(polydata->GetPointData()->GetArray("Distances"));
>>> *
>>> * *
>>> * if(array)*
>>> * {*
>>> * for(int i = 0; i < idNumPointsInFile; i++) *
>>> * {*
>>> * std::cout << "Got array." << std::endl;*
>>> * double dist;*
>>> * dist = array->GetValue(i);*
>>> * /**
>>> * //if the array held arrays instead of scalars, you would use
>>> this: *
>>> * double location[3];*
>>> * array->GetTupleValue(i, location);*
>>> * std::cout << "Location: " << Location[0] << "," << Location[1]
>>> << "," << Location[2] << std::endl;*
>>> * */*
>>> * std::cout << "Distance: " << dist << std::endl;*
>>> * }*
>>> * }//end if(array)*
>>> * else*
>>> * {*
>>> * std::cout << "no array." << std::endl;*
>>> * }*
>>> *
>>> *
>>> * system("PAUSE");*
>>> *
>>> *
>>> * return EXIT_SUCCESS;*
>>> *
>>> *
>>> *
>>> *
>>> *could you please suggest me how to get the point data in of the given
>>> example?*
>>>
>>
>>
>>
>> --
>> Unpaid intern in BillsBasement at noware dot com
>>
>
>
>
> --
> *Best Regards
> Rahul Indoria
> Mobile No: +49-157-35652212*
>
--
*Best Regards
Rahul Indoria
Mobile No: +49-157-35652212*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130719/d5ddc9f3/attachment.htm>
More information about the vtkusers
mailing list