[vtkusers] how to display volume data using rectilinear grid

Bruno da Silva de Oliveira bruno at esss.com.br
Tue Sep 20 14:04:53 EDT 2005


vtkRectilinearGridGeometryFilter only extracts points. Change the 
following lines:

vtkRectilinearGridGeometryFilter *plane = 
vtkRectilinearGridGeometryFilter::New();
plane->SetInput(rgrid);
plane->SetExtent(0,2, 0,2, 0,2);

To:

vtkExtractRectilinearGrid *plane = vtkExtractRectilinearGrid::New();
plane->SetInput(rgrid);
plane->SetVOI(0,2, 0,2, 0,2);

and change the mapper to a vtkDataSetMapper.

Note that vtkRectilinearGridGeometryFilter is a 
vtkRectilinearGridToPolyData filter, while vtkExtractRectilinearGrid is 
vtkRectinlinearGridTovtkRectinlinearGrid filter.

HTH,

kshivann at engineering.uiowa.edu wrote:

> hi,
>
>   i am using the same code as in the example for the rectilinear grid 
> but just
> changing the limits. if you run this code it plots the data in point 
> cloud
> representation and not in wire frame mode.
>
> thanks
>
> kiran
>
>
> #include "vtkRenderer.h"
> #include "vtkRenderWindow.h"
> #include "vtkRenderWindowInteractor.h"
> #include "vtkFloatArray.h"
> #include "vtkRectilinearGrid.h"
> #include "vtkRectilinearGridGeometryFilter.h"
> #include "vtkPolyDataMapper.h"
> #include "vtkActor.h"
> #include "vtkProperty.h"
> #include "vtkCamera.h"
>
> int main( int argc, char *argv[] )
> {
>     int i;
>     static float x[47]={
>         -1.22396, -1.17188, -1.11979, -1.06771, -1.01562, -0.963542,
>             -0.911458, -0.859375, -0.807292, -0.755208, -0.703125, 
> -0.651042,
>             -0.598958, -0.546875, -0.494792, -0.442708, -0.390625, 
> -0.338542,
>             -0.286458, -0.234375, -0.182292, -0.130209, -0.078125, 
> -0.026042,
>             0.0260415, 0.078125, 0.130208, 0.182291, 0.234375, 0.286458,
>             0.338542, 0.390625, 0.442708, 0.494792, 0.546875, 0.598958,
>             0.651042, 0.703125, 0.755208, 0.807292, 0.859375, 0.911458,
>             0.963542, 1.01562, 1.06771, 1.11979, 1.17188};
>         static float y[33]={-1.25, -1.17188, -1.09375, -1.01562, 
> -0.9375, -0.859375,
>             -0.78125, -0.703125, -0.625, -0.546875, -0.46875, -0.390625,
>             -0.3125, -0.234375, -0.15625, -0.078125, 0, 0.078125,
>             0.15625, 0.234375, 0.3125, 0.390625, 0.46875, 0.546875,
>             0.625, 0.703125, 0.78125, 0.859375, 0.9375, 1.01562,
>             1.09375, 1.17188, 1.25};
>         static float z[44]={0, 0.1, 0.2, 0.3, 0.4, 0.5,
>             0.6, 0.7, 0.75, 0.8, 0.9, 1,
>             1.1, 1.2, 1.3, 1.4, 1.5, 1.6,
>             1.7, 1.75, 1.8, 1.9, 2, 2.1,
>             2.2, 2.3, 2.4, 2.5, 2.6, 2.7,
>             2.75, 2.8, 2.9, 3, 3.1, 3.2,
>             3.3, 3.4, 3.5, 3.6, 3.7, 3.75,
>             3.8, 3.9};
>
>         // Create a rectilinear grid by defining three arrays 
> specifying the
>         // coordinates in the x-y-z directions.
>         vtkFloatArray *xCoords = vtkFloatArray::New();
>         for (i=0; i<47; i++) xCoords->InsertNextValue(x[i]);
>
>         vtkFloatArray *yCoords = vtkFloatArray::New();
>         for (i=0; i<33; i++) yCoords->InsertNextValue(y[i]);
>
>         vtkFloatArray *zCoords = vtkFloatArray::New();
>         for (i=0; i<44; i++) zCoords->InsertNextValue(z[i]);
>
>         // The coordinates are assigned to the rectilinear grid. Make 
> sure that
>         // the number of values in each of the XCoordinates, 
> YCoordinates,
>         // and ZCoordinates is equal to what is defined in 
> SetDimensions().
>         //
>         vtkRectilinearGrid *rgrid = vtkRectilinearGrid::New();
>         rgrid->SetDimensions(47,33,44);
>         rgrid->SetXCoordinates(xCoords);
>         rgrid->SetYCoordinates(yCoords);
>         rgrid->SetZCoordinates(zCoords);
>         // Extract a plane from the grid to see what we've got.
>         vtkRectilinearGridGeometryFilter *plane =
> vtkRectilinearGridGeometryFilter::New();
>         plane->SetInput(rgrid);
>         plane->SetExtent(0,2, 0,2, 0,2);
>
>         vtkPolyDataMapper *rgridMapper = vtkPolyDataMapper::New();
>         rgridMapper->SetInput(plane->GetOutput());
>
>         vtkActor *wireActor = vtkActor::New();
>         wireActor->SetMapper(rgridMapper);
>         wireActor->GetProperty()->SetRepresentationToWireframe();
>         wireActor->GetProperty()->SetColor(0,0,0);
>
>         // Create the usual rendering stuff.
>         vtkRenderer *renderer = vtkRenderer::New();
>         vtkRenderWindow *renWin = vtkRenderWindow::New();
>         renWin->AddRenderer(renderer);
>         vtkRenderWindowInteractor *iren = 
> vtkRenderWindowInteractor::New();
>         iren->SetRenderWindow(renWin);
>
>         renderer->AddActor(wireActor);
>         renderer->SetBackground(1,1,1);
>         renderer->GetActiveCamera()->Elevation(60.0);
>         renderer->GetActiveCamera()->Azimuth(30.0);
>         renderer->GetActiveCamera()->Zoom(1.0);
>
>         renWin->SetSize(300,300);
>
>         // interact with data
>         renWin->Render();
>         iren->Start();
>
>         // Clean up
>         renderer->Delete();
>         renWin->Delete();
>         iren->Delete();
>         xCoords->Delete();
>         yCoords->Delete();
>         zCoords->Delete();
>         rgrid->Delete();
>         rgridMapper->Delete();
>         wireActor->Delete();
>
>         return 0;
> }
>
> Quoting Bruno da Silva de Oliveira <bruno at esss.com.br>:
>
>> Hi,
>>
>> kshivann at engineering.uiowa.edu wrote:
>>
>>> Hi all,
>>>   i am using vtkrectilineargrid for data representation. for some 
>>> reason when i
>>> try plotting the results in 3D, i can see only point cloud 
>>> representation. i am
>>> using vtkpolydatamapper. should i use any other mapper. when i 
>>> reduce the data
>>> size to 2D i can plot the data in wireframe mode.
>>>
>>
>> How are you reading the data? How are you setting up the mapper?
>>
>> Please post some sample code so others can try to understand the 
>> problem better.
>>
>> -- 
>> Bruno da Silva de Oliveira
>> bruno at esss.com.br
>> ESSS - Engineering Simulation and Scientific Software
>> http://www.esss.com.br
>>
>>
>
>
>
>
>

-- 
Bruno da Silva de Oliveira
bruno at esss.com.br
ESSS - Engineering Simulation and Scientific Software
http://www.esss.com.br




More information about the vtkusers mailing list