<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1498" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>hello:</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; I am a newer for vtk. My 
programe is to render head.&nbsp; But it isnot appear.</FONT></DIV>
<DIV><FONT size=2>this is my code.</FONT></DIV>
<DIV><FONT size=2>#include "vtkRenderer.h"<BR>#include 
"vtkRenderWindow.h"<BR>#include "vtkRenderWindowInteractor.h"<BR>#include 
"vtkVolume16Reader.h"<BR>#include 
"vtkVolumeRayCastCompositeFunction.h"<BR>#include 
"vtkVolumeRayCastMapper.h"<BR>#include 
"vtkVolumeRayCastCompositeFunction.h"<BR>#include 
"vtkPiecewiseFunction.h"<BR>#include "vtkColorTransferFunction.h"<BR>#include 
"vtkVolumeProperty.h"<BR>#include "vtkVolume.h"<BR>#include 
"vtkOutlineFilter.h"<BR>#include "vtkPolyDataMapper.h"<BR>#include 
"vtkActor.h"<BR>#include "vtkCamera.h"<BR>#include "vtkProperty.h"<BR>#include 
"vtkInteractorStyleTrackballCamera.h"<BR>#include "vtkImageData.h"<BR>#include 
"vtkPointData.h"<BR>#include "vtkCellData.h"<BR>#include 
"vtkDataSetAttributes.h"<BR>#include 
"vtkVolumeRayCastMIPFunction.h"</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV><FONT size=2>
<DIV><BR>int main (int argc, char **argv)<BR>{<BR>&nbsp; /*if (argc &lt; 
2)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; 
"Usage: " &lt;&lt; argv[0] &lt;&lt; " DATADIR/headsq/quarter " &lt;&lt; 
endl;<BR>&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp; }*/<BR></DIV>
<DIV>vtkVolume16Reader *v16 = vtkVolume16Reader::New();<BR>&nbsp;&nbsp;&nbsp; 
v16-&gt;SetDataDimensions(64,64);<BR>&nbsp;&nbsp;&nbsp; 
v16-&gt;SetDataByteOrderToLittleEndian();</DIV>
<DIV>&nbsp;&nbsp; v16-&gt;SetFilePrefix 
("E:/DATADIR/headsq/quarter");<BR>&nbsp;&nbsp;&nbsp; v16-&gt;SetImageRange(1, 
93);<BR>&nbsp;&nbsp; // v16-&gt;SetDataSpacing (3.2, 3.2, 
1.5);<BR>&nbsp;&nbsp;&nbsp; v16-&gt;SetDataSpacing (3.2, 3.2, 
1.5);<BR>&nbsp;//v16-&gt;ReleaseDataFlagOn();<BR>&nbsp;//v16-&gt;SetDataMask(0x7fff);<BR>&nbsp;v16-&gt;Update();</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>vtkImageData *imageData = 
vtkImageData::New();<BR>&nbsp;imageData-&gt;SetDimensions(64,64,93);<BR>&nbsp;imageData-&gt;SetSpacing(3.2, 
3.2, 
1.5);<BR>&nbsp;imageData-&gt;SetOrigin(0.0,0.0,0.0);<BR>&nbsp;imageData-&gt;SetScalarTypeToUnsignedChar();<BR>&nbsp;imageData-&gt;SetNumberOfScalarComponents(1);<BR>&nbsp;imageData-&gt;AllocateScalars();//Allocate 
the vtkScalars object associated with this object</DIV>
<DIV>&nbsp;imageData-&gt;GetPointData()-&gt;CopyAllOn();//return pointer to this 
dataset's point data THIS METHOD IS 
THREAD&nbsp;<BR>&nbsp;imageData-&gt;GetPointData()-&gt;CopyScalarsOn();//Turn on 
copying of all data</DIV>
<DIV>&nbsp;</DIV>
<DIV>/*for (int i=0; i&lt;64*64*93; 
i++)<BR>{<BR>&nbsp;imageData-&gt;GetPointData()-&gt;CopyData( 
v16-&gt;GetOutput()-&gt;GetPointData(), i,<BR>i );<BR>} //Copy the attribute 
data from one id to another<BR>*/<BR>unsigned char *ptr2 =(unsigned char *) 
v16-&gt;GetOutput()-&gt;GetScalarPointer();<BR>unsigned char *ptr =(unsigned 
char *) imageData-&gt;GetScalarPointer();</DIV>
<DIV>&nbsp;</DIV>
<DIV>for (int i=0; i&lt;64*64*93 ; i++)<BR>{<BR>&nbsp;*ptr = 
*ptr2;<BR>&nbsp;ptr++;<BR>&nbsp;ptr2++;<BR>}// Copy the attribute data from one 
id to another</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkVolumeRayCastCompositeFunction&nbsp; *compositeFunction 
=vtkVolumeRayCastCompositeFunction::New();//a ray function that can be used 
within a vtkVolumeRayCastMapper.<BR>//vtkVolumeRayCastMIPFunction 
*compositeFunction = 
vtkVolumeRayCastMIPFunction::New();<BR>vtkVolumeRayCastMapper *volumeMapper = 
vtkVolumeRayCastMapper::New();<BR>&nbsp;&nbsp; 
volumeMapper-&gt;SetInput(imageData);<BR>&nbsp;&nbsp;&nbsp; 
//volumeMapper-&gt;SetInput(v16); //testing 
<BR>&nbsp;volumeMapper-&gt;SetVolumeRayCastFunction(compositeFunction);<BR>&nbsp;//volumeMapper-&gt;CroppingOn();//Turn 
On/Off orthogonal 
cropping<BR>&nbsp;//volumeMapper-&gt;SetCroppingRegionPlanes(60,100,60,100,60,100);// 
Set/Get the Cropping Region 
Planes<BR>&nbsp;//volumeMapper-&gt;SetCroppingRegionFlags(0x7ffffdf);<BR>// Set 
the flags for the cropping regions</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkPiecewiseFunction *tfun = vtkPiecewiseFunction::New();//Defines a 
piecewise linear function 
mapping<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
tfun-&gt;AddPoint(20.0,0.0);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
tfun-&gt;AddPoint(80.0,0.1);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
tfun-&gt;AddPoint(101.0,0.4);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
tfun-&gt;AddPoint(105.0,0.5);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
tfun-&gt;AddPoint(155.0,0.8);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
//tfun-&gt;AddPoint(255,1.0);</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkColorTransferFunction *ctfun = 
vtkColorTransferFunction::New();<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
ctfun-&gt;AddRGBPoint(40.0, 0.0, 0.0, 0.0);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
ctfun-&gt;AddRGBPoint(60.0, 0.9, 0.2, 0.3);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
ctfun-&gt;AddRGBPoint(80.0, 0.81, 2.7, 0.1);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
ctfun-&gt;AddRGBPoint(90.0, 0.2, 0.2, 0.2);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
ctfun-&gt;AddRGBPoint(105.0, 1.0, 0.0, 0.0);<BR>&nbsp; 
ctfun-&gt;AddRGBPoint(106.0, 1.0, 1.0, 1.0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</DIV>
<DIV>vtkVolumeProperty *volumeProperty = 
vtkVolumeProperty::New();<BR>&nbsp;&nbsp;&nbsp; 
volumeProperty-&gt;SetColor(ctfun);<BR>&nbsp;&nbsp;&nbsp; 
volumeProperty-&gt;SetScalarOpacity(tfun);<BR>&nbsp;&nbsp;&nbsp; 
volumeProperty-&gt;SetInterpolationTypeToLinear();<BR>&nbsp;//volumeProperty-&gt;SetInterpolationTypeToNearest();<BR>&nbsp;&nbsp; 
// volumeProperty-&gt;SetCompositeMethodToClassifyFirst();<BR>&nbsp;&nbsp;&nbsp; 
volumeProperty-&gt;ShadeOn();//Set/Get the shading of a volume</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>vtkVolume *newvol = vtkVolume::New();<BR>&nbsp;&nbsp;&nbsp; 
newvol-&gt;SetMapper(volumeMapper);<BR>&nbsp;&nbsp;&nbsp; 
newvol-&gt;SetProperty(volumeProperty);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkOutlineFilter *outline = vtkOutlineFilter::New();<BR>&nbsp;&nbsp;&nbsp; 
outline-&gt;SetInput((vtkDataSet *) v16-&gt;GetOutput());<BR>&nbsp;&nbsp;&nbsp; 
//outline-&gt;SetInput((vtkDataSet *) imageData-&gt;GetOutput());//testing</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkPolyDataMapper *outlineMapper = 
vtkPolyDataMapper::New();<BR>&nbsp;&nbsp;&nbsp; 
outlineMapper-&gt;SetInput(outline-&gt;GetOutput());</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkActor *outlineActor = vtkActor::New();<BR>&nbsp;&nbsp;&nbsp; 
outlineActor-&gt;SetMapper(outlineMapper);<BR>&nbsp;&nbsp;&nbsp; 
outlineActor-&gt;GetProperty()-&gt;SetColor(1,1,1);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkCamera *Camera = vtkCamera::New();<BR>&nbsp;&nbsp;&nbsp; 
Camera-&gt;SetViewUp (0, 0, -1);<BR>&nbsp;&nbsp;&nbsp; Camera-&gt;SetPosition 
(140, 600, -100);<BR>&nbsp;&nbsp;&nbsp; Camera-&gt;SetFocalPoint (100, 100, 
75);<BR>&nbsp;&nbsp;&nbsp; 
Camera-&gt;ComputeViewPlaneNormal();<BR>&nbsp;&nbsp;&nbsp; </DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkRenderer *ren = vtkRenderer::New();<BR>&nbsp;&nbsp;&nbsp; 
ren-&gt;AddActor(outlineActor);<BR>&nbsp;&nbsp;&nbsp; 
ren-&gt;AddVolume(newvol);<BR>&nbsp;&nbsp;&nbsp; 
ren-&gt;SetBackground(0,0,0);<BR>&nbsp;&nbsp;&nbsp; 
ren-&gt;SetActiveCamera(Camera);</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>vtkRenderWindow *renWin = vtkRenderWindow::New();<BR>&nbsp;&nbsp;&nbsp; 
renWin-&gt;AddRenderer(ren);<BR>&nbsp;&nbsp;&nbsp; 
renWin-&gt;SetSize(640,480);<BR>&nbsp; </DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkInteractorStyleTrackballCamera *style 
=<BR>vtkInteractorStyleTrackballCamera::New();</DIV>
<DIV>&nbsp;</DIV>
<DIV>vtkRenderWindowInteractor *iren = 
vtkRenderWindowInteractor::New();<BR>&nbsp;&nbsp;&nbsp; 
iren-&gt;SetRenderWindow(renWin);<BR>&nbsp;&nbsp;&nbsp; 
iren-&gt;SetInteractorStyle(style);<BR>&nbsp;&nbsp;&nbsp; 
iren-&gt;Initialize();<BR>&nbsp;&nbsp;&nbsp; iren-&gt;Start();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>&nbsp;&nbsp;&nbsp; v16-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
compositeFunction-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
volumeMapper-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
tfun-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
ctfun-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
volumeProperty-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
newvol-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
outline-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
outlineMapper-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
outlineActor-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
Camera-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
ren-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
renWin-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; 
iren-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp; style-&gt;Delete();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; return 0;<BR>}<BR></FONT></DIV></BODY></HTML>