[vtkusers] Surface Rendering

Divya Rathore divyarathore at gmail.com
Tue Apr 21 05:06:58 EDT 2009


Good that you were able to build it :)
The error message (essentially a suggestion) says that you need to supply
the data directory as the 2nd argument.

your_dir>Medical1.exe <full_path_to_data_dir>

where, full_path_to_data_dir is say, C:\vtkdata\headsq
also, add the constant part in the filenames.. xxx.1, xxx.2, xxx.3 then add
'xxx'

from your screenshot, I suggest this:

*D:\Test\cxx\OUT\Debug\Medica1.exe C:\vtkdata\headsq\quarter*

In the 2nd argument, C:\vtkdata\headsq\ is the directory and quarter.1,
quarter.2, quarter.3 etc are files in it.

Hope that helps!

- Divya Rathore

On Tue, Apr 21, 2009 at 2:26 PM, JOHN ATKINSON <johnimager at gmail.com> wrote:

> Hi,
>
> As per your instruction I built Medical1.cxx again with the sample
> data set headquarter.I have attached the screen shot of the output
> whcih is mere a command prompt .I am not able to view the rendered
> output.Please Help.
>
> Code.
> #include "vtkRenderer.h"
> #include "vtkRenderWindow.h"
> #include "vtkRenderWindowInteractor.h"
> #include "vtkVolume16Reader.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/headsq/quarter" << endl;
>    return 1;
>    }
>
>  // Create the renderer, the render window, and the interactor. The
> renderer
>  // draws into the render window, the interactor enables mouse- and
>  // keyboard-based interaction with the data within the render window.
>  //
>  vtkRenderer *aRenderer = vtkRenderer::New();
>  vtkRenderWindow *renWin = vtkRenderWindow::New();
>    renWin->AddRenderer(aRenderer);
>  vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
>    iren->SetRenderWindow(renWin);
>
>  // The following reader is used to read a series of 2D slices (images)
>  // that compose the volume. The slice dimensions are set, and the
>  // pixel spacing. The data Endianness must also be specified. The reader
>  // usese the FilePrefix in combination with the slice number to construct
>  // filenames using the format FilePrefix.%d. (In this case the FilePrefix
>  // is the root name of the file: quarter.)
>  vtkVolume16Reader *v16 = vtkVolume16Reader::New();
>    v16->SetDataDimensions (64,64);
>    v16->SetImageRange (1,93);
>    v16->SetDataByteOrderToLittleEndian();
>    v16->SetFilePrefix (argv[1]);
>    v16->SetDataSpacing (3.2, 3.2, 1.5);
>
>  // An isosurface, or contour value of 500 is known to correspond to the
>  // skin of the patient. Once generated, a vtkPolyDataNormals filter is
>  // is used to create normals for smooth surface shading during rendering.
>  vtkContourFilter *skinExtractor = vtkContourFilter::New();
>    skinExtractor->SetInputConnection(v16->GetOutputPort());
>    skinExtractor->SetValue(0, 500);
>  vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();
>    skinNormals->SetInputConnection(skinExtractor->GetOutputPort());
>    skinNormals->SetFeatureAngle(60.0);
>  vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();
>    skinMapper->SetInputConnection(skinNormals->GetOutputPort());
>    skinMapper->ScalarVisibilityOff();
>  vtkActor *skin = vtkActor::New();
>    skin->SetMapper(skinMapper);
>
>  // An outline provides context around the data.
>  //
>  vtkOutlineFilter *outlineData = vtkOutlineFilter::New();
>    outlineData->SetInputConnection(v16->GetOutputPort());
>  vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();
>    mapOutline->SetInputConnection(outlineData->GetOutputPort());
>  vtkActor *outline = vtkActor::New();
>    outline->SetMapper(mapOutline);
>    outline->GetProperty()->SetColor(0,0,0);
>
>  // It is convenient to create an initial view of the data. The FocalPoint
>  // and Position form a vector direction. Later on (ResetCamera() method)
>  // this vector is used to position the camera to look at the data in
>  // this direction.
>  vtkCamera *aCamera = vtkCamera::New();
>    aCamera->SetViewUp (0, 0, -1);
>    aCamera->SetPosition (0, 1, 0);
>    aCamera->SetFocalPoint (0, 0, 0);
>    aCamera->ComputeViewPlaneNormal();
>
>  // Actors are added to the renderer. An initial camera view is created.
>  // The Dolly() method moves the camera towards the FocalPoint,
>  // thereby enlarging the image.
>  aRenderer->AddActor(outline);
>  aRenderer->AddActor(skin);
>  aRenderer->SetActiveCamera(aCamera);
>  aRenderer->ResetCamera ();
>  aCamera->Dolly(1.5);
>
>  // Set a background color for the renderer and set the size of the
>  // render window (expressed in pixels).
>  aRenderer->SetBackground(1,1,1);
>  renWin->SetSize(640, 480);
>
>  // Note that when camera movement occurs (as it does in the Dolly()
>  // method), the clipping planes often need adjusting. Clipping planes
>  // consist of two planes: near and far along the view direction. The
>  // near plane clips out objects in front of the plane; the far plane
>  // clips out objects behind the plane. This way only what is drawn
>  // between the planes is actually rendered.
>  aRenderer->ResetCameraClippingRange ();
>
>  // Initialize the event loop and then start it.
>  iren->Initialize();
>  iren->Start();
>
>  // It is important to delete all objects created previously to prevent
>  // memory leaks. In this case, since the program is on its way to
>  // exiting, it is not so important. But in applications it is
>  // essential.
>  v16->Delete();
>  skinExtractor->Delete();
>  skinNormals->Delete();
>  skinMapper->Delete();
>  skin->Delete();
>  outlineData->Delete();
>  mapOutline->Delete();
>  outline->Delete();
>  aCamera->Delete();
>  iren->Delete();
>  renWin->Delete();
>  aRenderer->Delete();
>
>  return 0;
> }
>
>
> Regards
> John
>



-- 
"The difference between school and life? In school, you're taught a lesson
and then given a test. In life, you're given a test that teaches you a
lesson."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090421/8c79e8d0/attachment.htm>


More information about the vtkusers mailing list