<div>Hello everybody</div>
<div>I have started using VTK not to long ago to visualize my MR-images of the brain.</div>
<div>I seems to be a great toolkit, but i do have some difficulties getting a really nice visualization. So i am not sure whether it is just me that has misunderstood something, or if it in fact is not possible to get a better rendering.
</div>
<div>My visualization of labelimage of graymatter in a brain (voxels only have value 0 or 255) is seen here </div>
<div><a href="http://coachkontakt.dk/brain.PNG">http://coachkontakt.dk/brain.PNG</a></div>
<div>As can be seen the surface looks very homogeneus. The reason for the black spots is because i put the opacity to 0.1 making the voxels almost transparant, so that it is possible to see that the graymatter is not massive(of course), since the brain also consists of other things.
</div>
<div>&nbsp;</div>
<div>But my problem is the surface look. There is absolutely no variation in the surface and it looks very 2D like. Its not very pretty, and does not look like a brain.</div>
<div>I have tried to set different lighting settings, both ambient, specular and diffuse. I have tried to enable shading, but i cannot really seem to get any different results. So i was hoping that someone had some suggestions as of how i can get this binary labeled volume of the brain to look more nice.
</div>
<div>&nbsp;</div>
<div>The code that produces the image i have so far is listed below:</div>
<div>&nbsp;</div>
<div>#include &quot;vtkPiecewiseFunction.h&quot;<br>#include &quot;vtkColorTransferFunction.h&quot;<br>#include &quot;vtkVolumeProperty.h&quot;<br>#include &quot;vtkVolume.h&quot;</div>
<div>&nbsp;</div>
<div>// Raytracer<br>#include &quot;vtkVolumeRayCastCompositeFunction.h&quot;<br>#include &quot;vtkVolumeRayCastMapper.h&quot;</div>
<div>&nbsp;</div>
<div>#include &quot;vtkActor.h&quot;<br>#include &quot;vtkRenderWindow.h&quot;<br>#include &quot;vtkRenderer.h&quot;<br>#include &quot;vtkRenderWindowInteractor.h&quot;</div>
<div>&nbsp;</div>
<div>int main(int argc, char *argv[]){</div>
<div>//reading the image and preparing etc.</div>
<div>.</div>
<div>.</div>
<div>.</div>
<div>&nbsp;//Create transfer mapping scalar value to color<br>&nbsp;vtkPiecewiseFunction *opacityTransferfunction=vtkPiecewiseFunction::New();<br>&nbsp;vtkColorTransferFunction *colorTransferFunction=vtkColorTransferFunction::New();<br>
&nbsp;//////////////////////////////////////////////////////////////////////////////////<br>&nbsp;//Set transferfunctions for gm-mask-image<br>&nbsp;opacityTransferfunction-&gt;SetClamping(0);//Implicit setting of transparent background = 255
<br>&nbsp;opacityTransferfunction-&gt;AddPoint(0,.1);<br>&nbsp;colorTransferFunction-&gt;AddRGBPoint(0,1.,0.,0.);</div>
<div>&nbsp;</div>
<div>&nbsp;//////////////////////////////////////////////////////////////////////////////////<br>&nbsp;vtkVolumeProperty *volumeProperty=vtkVolumeProperty::New();<br>&nbsp;volumeProperty-&gt;SetColor(colorTransferFunction);<br>&nbsp;volumeProperty-&gt;SetScalarOpacity(opacityTransferfunction);
<br>&nbsp;volumeProperty-&gt;SetAmbient(.4);<br>&nbsp;volumeProperty-&gt;SetSpecular(.5);<br>&nbsp;volumeProperty-&gt;SetDiffuse(0.6);<br>&nbsp;volumeProperty-&gt;SetInterpolationTypeToLinear();</div>
<div>&nbsp;</div>
<div>&nbsp;//Raytracing<br>&nbsp;vtkVolumeRayCastCompositeFunction *compositeFunction = vtkVolumeRayCastCompositeFunction::New();<br>&nbsp;vtkVolumeRayCastMapper *volumeMapper=vtkVolumeRayCastMapper::New();<br>&nbsp;volumeMapper-&gt;SetVolumeRayCastFunction(compositeFunction);
<br>&nbsp;volumeMapper-&gt;SetInput(connector-&gt;GetOutput());</div>
<div>&nbsp;</div>
<div>
<p>&nbsp;vtkVolume *volume=vtkVolume::New();<br>&nbsp;volume-&gt;SetMapper(volumeMapper);<br>&nbsp;volume-&gt;SetProperty(volumeProperty);</p>
<p>&nbsp;// A renderer and render window<br>&nbsp;vtkRenderer *ren1 = vtkRenderer::New();<br>&nbsp;vtkRenderWindow *renWin = vtkRenderWindow::New();<br>&nbsp;ren1-&gt;AutomaticLightCreationOn();</p>
<p>&nbsp;vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();<br>&nbsp;iren-&gt;LightFollowCameraOn();<br>&nbsp;iren-&gt;SetRenderWindow(renWin);<br></p>
<p>&nbsp;ren1-&gt;AddViewProp(volume);<br>&nbsp;<br>&nbsp;renWin-&gt;AddRenderer(ren1);</p>
<p>&nbsp;//Render an image(lights and camera are created automatically)<br>&nbsp;renWin-&gt;Render();</p>
<p>&nbsp;//Begin mouse interaction<br>&nbsp;iren-&gt;Start();</p>
<p>}</p>
<p>&nbsp;</p>
<p>I hope to hear from you soon. Another issue is that the volume renders quite slow even though my computer and graphic card is of a fairly good quality.</p>
<p>Am i doing something wrong, or missing something that has an impact on performance?</p>
<p>&nbsp;</p>
<p>Thank you very much in advance. Hope to hear from you soon.</p></div>