[vtkusers] vtkVolumeReader
Yan Pingkun
engp1734 at nus.edu.sg
Mon Apr 5 22:36:54 EDT 2004
Hi,
I noticed in VTK we can get volume data by reading a series of 2D
slices. But my problem is I have my volume data in one file which can be
raw or Analyse format. Then how to load it into VTK? Shall I split the
volume into 2D slice files first?
Thanks!
Pingkun
-----Original Message-----
From: vtkusers-admin at vtk.org [mailto:vtkusers-admin at vtk.org] On
Behalf Of Amy Henderson
Sent: Tuesday, April 06, 2004 3:01 AM
To: byrdv at cis.uab.edu
Cc: vtkusers at vtk.org
Subject: RE: [vtkusers] vtkVolumeReader
At 02:55 PM 4/5/2004, Vetria Byrd wrote:
Sorry about the reply, I was hitting the reply to and
not reply to all.
No problem.
I am trying to create a 3D volume (a 5x5x5 cube).
The data files (5 files - one for each slice) consists
of zero's and one's where the one's indicate there is an object in that
particular cell of the cube, zero's indicate the cell is empty. I want
to render the cube/object using the marching cubes algorithm.
Try using vtkImageReader or vtkImageReader2. They allow you to
specify the data type of the data you are trying to load.
- Amy
Vetria
-----Original Message-----
From: Amy Henderson [mailto:amy.henderson at kitware.com]
Sent: Monday, April 05, 2004 1:42 PM
To: byrdv at cis.uab.edu; 'Amy Henderson'
Subject: RE: [vtkusers] vtkVolumeReader
Vetria,
I just noticed the you replied only to me and not the
the vtkusers list. Please keep the discussion on the list so other
people can help if necessary and so there is a record of the solution to
this problem if other people encounter the same thing.
What kind of data are you trying to load? Depending on
the type of your data, you might want to try loading it using one of the
subclasses of vtkImageReader2. These readers can handle 3D data by
reading in a series of 2D slices.
- Amy
At 02:32 PM 4/5/2004, Vetria Byrd wrote:
When I try creating an instance of vtkVolume16Reader the
code complies with no errors but when I try to run it I get:
ERROR: In C:\Program
Files\vtk42\IO\vtkVolume16Reader.cxx, line 375
vtkVolume16Reader (0x022B5400): Error reaading raw pgm
data!
So, I thought I would try vtkVolumeReader.
Vetria
-----Original Message-----
From: Amy Henderson [mailto:amy.henderson at kitware.com]
Sent: Monday, April 05, 2004 12:14 PM
To: byrdv at cis.uab.edu; 'Amy Henderson'
Subject: RE: [vtkusers] vtkVolumeReader
Did you intend to create an instance of
vtkVolume16Reader? vtkVolumeReader has a pure virtual method, so you
can't instantiate it; you have to create an instance of one of its
concrete subclasses (e.g., vtkVolume16Reader, which I see in your list
of include files).
- Amy
At 01:08 PM 4/5/2004, Vetria Byrd wrote:
Yes.
Here's the entire file:
//
// This example reads a volume dataset, extracts an
isosurface and displays it.
//
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkVolume16Reader.h"
#include "vtkVolumeReader.h"
#include "vtkObject.h"
#include "vtkMarchingCubes.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkProperty.h"
#include "vtkPolyDataNormals.h"
#include "vtkContourFilter.h"
int main (int argc, char **argv)
{
if (argc < 2)
{
cout << "Usage: " << argv[0] << "
DATADIR/cube/slice" << endl;
return 1;
}
vtkRenderer *ren = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren);
vtkRenderWindowInteractor *iren =
vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
*vtkVolumeReader *volReader = vtkVolumeReader::New();
volReader->SetImageRange (1,5);
volReader->SetFilePrefix (argv[1]);
volReader->SetDataSpacing (1,1,1);
volReader->Update();
// An isosurface, or contour value of 1 is known to
correspond to the object.
vtkMarchingCubes *iso =vtkMarchingCubes::New();
iso->SetInput(volReader->GetOutput() );
iso->SetValue(0,1);
vtkPolyDataMapper *isoMapper =
vtkPolyDataMapper::New();
isoMapper->SetInput(iso->GetOutput() );
isoMapper->ScalarVisibilityOff();
vtkActor *isoActor = vtkActor::New();
isoActor->SetMapper(isoMapper);
vtkOutlineFilter *outline = vtkOutlineFilter::New();
outline->SetInput( (vtkDataSet *)
volReader->GetOutput() );
vtkPolyDataMapper *outlineMapper =
vtkPolyDataMapper::New();
outlineMapper->SetInput(outline->GetOutput() );
vtkActor *outlineActor = vtkActor::New();
outlineActor->SetMapper(outlineMapper);
outlineActor->VisibilityOff();
//
// Add the actors to the renderer, set the background
and size
//
ren->AddActor(outlineActor);
ren->AddActor(isoActor);
ren->SetBackground(0.2,0.3,0.4);
renWin->SetSize(450,450);
ren->GetActiveCamera()->Elevation(90);
ren->GetActiveCamera()->SetViewUp(0,0,-1);
iren->Initialize();
// render the image
iren->Start();
return 0;
}
-----Original Message-----
From: Amy Henderson [mailto:amy.henderson at kitware.com]
Sent: Monday, April 05, 2004 11:59 AM
To: byrdv at cis.uab.edu; 'vtkusers'
Subject: Re: [vtkusers] vtkVolumeReader
Vetria,
Did you include the vtkVolumeReader header file
(#include "vtkVolumeReader.h")?
- Amy
At 12:47 PM 4/5/2004, Vetria Byrd wrote:
I have manually created data files that consists of
zero's and one's (no header info) to resemble a (5x5x5) 3D cube.
There are 5 data files. When I try to use
vtkVolumeReader I get the following error message:
error C2440: 'initializing' : cannot convert from 'class
vtkObject *' to 'class vtkVolumeReader *'
Types pointed to are unrelated; conversion
requires reinterpret_cast, C-style cast or function-style cast
This is where the error occurs:
:
:
vtkVolumeReader *volReader = vtkVolumeReader::New();
volReader->SetImageRange (1,5);
volReader->SetFilePrefix (argv[1]);
volReader->SetDataSpacing (1,1,1);
volReader->Update();
Any assistance will be greatly appreciated.
Thanks,
_______________
Vetria L. Byrd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20040406/5d057510/attachment.htm>
More information about the vtkusers
mailing list