[vtkusers] Volume Rendering
lappadj at libero.it
lappadj at libero.it
Thu Oct 18 09:49:44 EDT 2001
Hi john,
thank for your help,but i think that the problem is different,i try to
visualize only one slice with this simple code:
#include"vtkImageReader.h"
#include"vtkImageViewer.h"
#include"SaveViewerImage.h"
#include"vtkBMPReader.h"
void main(int argc, char*argv[])
{
vtkImageReader *reader = vtkImageReader::New();
reader->SetDataByteOrderToLittleEndian();
reader->SetDataExtent(0,255,0,255,1,64);
reader->SetFilePrefix("c:/vtkdata/patnum/pat");
reader->SetDataOrigin(-127.5, -127.5, -32);
reader->SetDataMask(0x7fff);
reader->Update();
vtkImageViewer *viewer = vtkImageViewer::New();
viewer->SetInput(reader->GetOutput());
viewer->SetZSlice(3);
viewer->SetColorWindow(65536);
viewer->SetColorLevel(32768);
viewer->Render();
SAVEVIEWERIMAGE (viewer);
char dummy = '\0';
cin >> dummy;
reader->Delete();
viewer->Delete();
}
and the result is the same:two image in the render window!At this time
i enclose one image.
Thanks for any suggestion!
Massimiliano La Paglia
> Massimiliano,
>
> Perhaps if you posted an image of the render window on a website
somewhere (I
> don't think you can attach and image to the users group mailing list)
someone
> could spot the problem. Its hard to tell what your problem could be
from the
> code. You may also want to run your volume read from bmp (imagein)
through
> vtkImageLuminance. That helped when I got an ugly render trying to
work with bmp
> images...I think I was trying to render the indexed color values
instead of the
> intensity. Hope this helps, john
>
>
>
> Internet Mail Message
> Received from host: public.kitware.com
> [208.136.18.25]
>
>
>
> From: "lappadj at libero.it" <lappadj at libero.it>@public.kitware.com on
10/12/2001
> 10:38 PM ZE2
>
> "lappadj at libero.it" To:
"vtkusers"
> <lappadj at libero.it>@public.kitware.com
<vtkusers at public.kitware.com>
> Cc: (bcc: John
Anast-JM/PGI)
> Subject: [vtkusers]
Volume Rendering
> Sent
by:
> vtkusers-
admin at public.kitware.com
> 10/12/2001 04:38
PM
>
>
>
>
>
>
> Hi,
> i utilize this code for rendering one volume of Bmp slices from MRI
> scan,but the effect of the rendering is not good,the resultant image
> appear split in two half,is possible to be one error on the slices
> format,because i convert dicom images into bmp images?Can you help me?
> Thanks a lot
>
> Massimiliano La Paglia
>
> #include "vtkRenderer.h"
> #include "vtkRenderWindow.h"
> #include "vtkRenderWindowInteractor.h"
> #include "vtkStructuredPointsReader.h"
> #include "vtkPiecewiseFunction.h"
> #include "vtkVolumeProperty.h"
> #include "vtkVolumeRayCastCompositeFunction.h"
> #include "vtkVolumeRayCastMapper.h"
> #include "vtkVolume.h"
> #include "vtkBMPReader.h"
>
> #include "SaveImage.h"
>
> void main( int argc, char *argv[] )
> {
> // Create the renderer, render window, and interactor
> vtkRenderer *ren1 = vtkRenderer::New();
> vtkRenderWindow *renWin = vtkRenderWindow::New();
> renWin->AddRenderer(ren1);
> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
> iren->SetRenderWindow(renWin);
>
> //Legge bmp file
> vtkBMPReader *imagein=vtkBMPReader::New();
> imagein->SetFilePrefix ("C:/vtkdata/knee/pat");
> imagein->SetDataExtent(0, 255, 0, 255,1,64);
>
>
> // Create a transfer function mapping scalar value to opacity
> vtkPiecewiseFunction *oTFun = vtkPiecewiseFunction::New();
> oTFun->AddSegment(80, 0.0, 255, 1.0);
>
> // Create a transfer function mapping scalar value to color (grey)
> vtkPiecewiseFunction *cTFun = vtkPiecewiseFunction::New();
> cTFun->AddSegment(0, 1.0, 255, 1.0);
>
> // Create a property for the volume and set the transfer functions.
> // Turn shading on and use trilinear interpolation
> vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();
> volumeProperty->SetColor(cTFun);
> volumeProperty->SetScalarOpacity(oTFun);
> volumeProperty->SetInterpolationTypeToLinear();
> volumeProperty->ShadeOn();
>
> // Create a ray function - this is a compositing ray function
> vtkVolumeRayCastCompositeFunction *compositeFunction =
> vtkVolumeRayCastCompositeFunction::New();
>
> // Create the volume mapper and set the ray function and scalar
input
> vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper::New
();
> volumeMapper->SetInput(imagein->GetOutput());
> volumeMapper->SetVolumeRayCastFunction(compositeFunction);
>
> // Create the volume and set the mapper and property
> vtkVolume *volume = vtkVolume::New();
> volume->SetMapper(volumeMapper);
> volume->SetProperty(volumeProperty);
>
> // Add this volume to the renderer and get a closer look
> ren1->AddVolume(volume);
> ren1->GetActiveCamera()->Azimuth(20.0);
> ren1->GetActiveCamera()->Dolly(1.60);
> ren1->ResetCameraClippingRange();
>
> renWin->SetSize(300,300);
>
> renWin->Render();
>
> SAVEIMAGE( renWin );
>
> // Interact with the data at 3 frames per second
> iren->SetDesiredUpdateRate(1.0);
> iren->SetStillUpdateRate(0.001);
> iren->Start();
>
> // Clean up
> ren1->Delete();
> renWin->Delete();
> iren->Delete();
> imagein->Delete();
> oTFun->Delete();
> cTFun->Delete();
> volumeProperty->Delete();
> compositeFunction->Delete();
> volumeMapper->Delete();
> volume->Delete();
> }
>
>
>
>
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: <
> http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
>
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at:
<http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list