I'm attempting to render an unstructured dataset that contains 1 vector
field and 7 scalar fields. I want to map Color & Opacity to one of
the 1 scalar fields (both to the same one) and volume render it. I can
do this in Paraview easily (screenie attached), but my VTK code returns
a blank black window everytime. Am I missing something here?
<br><br>I'm doing it all offscreen on an SGI Irix box (Onyx340) with
the VTK 5.0 Branch installed & MangledMesa. The code I'm using is
below:<br><br>==============================<br>#include <vtkColorTransferFunction.h
><br>#include <vtkDataSetReader.h><br>#include <vtkPiecewiseFunction.h><br>#include <vtkUnstructuredGridVolumeRayCastMapper.h><br><div id="mb_0"><div>#include <vtkUnstructuredGrid.h><br>#include <
vtkDataSet.h>
<br>#include <vtkRenderWindow.h><br>#include <vtkRenderer.h><br>#include <vtkRenderLargeImage.h><br>#include <vtkPNGWriter.h><br>#include <vtkVolumeProperty.h><br>#include <vtkDataSetTriangleFilter.h
><br>#include <vtkImagingFactory.h><br>#include <vtkGraphicsFactory.h><br>void main(void) {<br> vtkGraphicsFactory *factGraphics = vtkGraphicsFactory::New();<br> factGraphics->SetUseMesaClasses(1);
<br> factGraphics->SetOffScreenOnlyMode(1);<br> factGraphics->Delete();<br> vtkImagingFactory *factImage = vtkImagingFactory::New();<br> factImage->SetUseMesaClasses(1);<br> factImage->Delete();
<br> vtkDataSetReader *reader = vtkDataSetReader::New();<br> reader->SetFileName("../VTK/step_127.vtk");<br> reader->ReadAllScalarsOn();<br><br> vtkDataSetTriangleFilter *tri = vtkDataSetTriangleFilter::New();
<br> tri->SetInput(reader->GetOutput());<br><br><br> vtkColorTransferFunction *color = vtkColorTransferFunction::New();<br><br> color->AddRGBPoint(250, 0, 0, 1);<br> color->AddRGBPoint(450, 1, 0, 0);
<br> color->AddRGBPoint(2600, 1, 1, 0);<br> color->AddRGBPoint(5000, 1, 1, 1);<br><br> vtkPiecewiseFunction *opacity = vtkPiecewiseFunction::New();<br> opacity->AddPoint(250, 0.1);<br> opacity->AddPoint(450,
0.1);<br> opacity->AddPoint(2600, 0.25);<br> opacity->AddPoint(5000, 1.0);<br><br> vtkVolumeProperty *volProp = vtkVolumeProperty::New();<br> volProp->SetColor(color);<br> volProp->SetScalarOpacity(opacity);
<br> volProp->SetInterpolationTypeToLinear();<br><br> vtkUnstructuredGridVolumeRayCastMapper *mapper =<br> vtkUnstructuredGridVolumeRayCastMapper::New();<br> mapper->SetScalarModeToUsePointFieldData();
<br> mapper->SelectScalarArray("Temperature");<br> mapper->SetInput(tri->GetOutput());<br><br> vtkVolume *volume = vtkVolume::New();<br> volume->SetMapper(mapper);<br> volume->SetProperty(volProp);
<br> volume->Update();<br> vtkRenderWindow *renWin = vtkRenderWindow::New();<br> vtkRenderer *ren1 = vtkRenderer::New();<br> renWin->OffScreenRenderingOn();<br> renWin->AddRenderer(ren1);<br><br> ren1->AddVolume(volume);
<br> ren1->ResetCamera();<br> renWin->SetSize(1024, 1024);<br> renWin->Modified();<br><br> vtkRenderLargeImage *w2if = vtkRenderLargeImage::New();<br> w2if->SetInput(ren1);<br> w2if->SetMagnification(1);
<br><br> vtkPNGWriter *png = vtkPNGWriter::New();<br> png->SetInput(w2if->GetOutput());<br> png->SetFileName("output.png");<br> png->Write();<br>}<br>===============</div></div><br clear="all">
<br>-- <br>Randall Hand<br>Visualization Scientist, <br>ERDC-MSRC Vicksburg, MS<br>Homepage: <a href="http://www.yeraze.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.yeraze.com</a>