<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Hi,<br><br>thanks for your help. After read the code of the links, I have tried to render my cloud of 3d point, but I get an exception when I call the render() method. The code that I have implemented is the next:<br><br><br>    vtkSmartPointer<vtkPolyData> pData = vtkSmartPointer<vtkPolyData>::New();    <br><br>    vtkSmartPointer<vtkPolyDataReader> reader = vtkSmartPointer<vtkPolyDataReader>::New();<br>    reader->SetFileName("prueba.vtk");<br>    pData =    reader->GetOutput();<br>    pData->Update();<br><br>    vtkSmartPointer<vtkDelaunay3D> delaunay = vtkSmartPointer<vtkDelaunay3D>::New();<br>    delaunay->SetInput(pData);<br>    delaunay->SetAlpha(2.8);<br>    delaunay->Update();<br><br>    vtkUnstructuredGrid* outputGrid = delaunay->GetOutput();<br> <br>    double bounds[6];<br>    outputGrid->GetBounds(bounds);<br> <br>    // Find min and max z<br>    double minz = bounds[4];<br>    double maxz = bounds[5];<br>    cout << "minz: " << minz << std::endl;<br>    cout << "maxz: " << maxz << std::endl;<br> <br>    vtkSmartPointer<vtkLookupTable> colorLookupTable = vtkSmartPointer<vtkLookupTable>::New(); //Pasa de valores escalares a RGB<br>    colorLookupTable->SetTableRange(minz, maxz);<br>    colorLookupTable->Build();<br> <br>    // Generate the colors for each point based on the color map<br>    vtkSmartPointer<vtkUnsignedCharArray> colors = vtkSmartPointer<vtkUnsignedCharArray>::New(); //Array dinamico de caracteres<br>    colors->SetNumberOfComponents(3);<br>    colors->SetName("Colors");<br> <br>    cout << "There are " << outputGrid->GetNumberOfPoints() << " points." << endl;<br> <br>    for(int i = 0; i < outputGrid->GetNumberOfPoints(); i++)<br>    {<br>        double p[3];<br>        outputGrid->GetPoint(i,p);<br> <br>        double dcolor[3];<br>        colorLookupTable->GetColor(p[2], dcolor); //Devuelve el color RGB para cada escalar<br>        cout << "dcolor: " << dcolor[0] << " " << dcolor[1] << " " << dcolor[2] << endl;<br>        unsigned char color[3];<br>        for(unsigned int j = 0; j < 3; j++)<br>        {<br>            color[j] = static_cast<unsigned char>(255.0 * dcolor[j]);<br>        }<br>        cout << "color: " << (int)color[0] << " " << (int)color[1] << " " << (int)color[2] << endl;<br> <br>        colors->InsertNextTupleValue(color);<br>    }<br> <br>    outputGrid->GetPointData()->SetScalars(colors);<br><br>    <br>    vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();<br>    mapper->SetInputConnection(outputGrid->GetProducerPort());<br><br>    vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();<br>    actor->SetMapper(mapper);<br> <br>    // Create a renderer, render window, and interactor<br>    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();<br>    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();<br>    renderWindow->AddRenderer(renderer);<br>    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();<br>    renderWindowInteractor->SetRenderWindow(renderWindow);<br> <br>    // Add the actor to the scene<br>    renderer->AddActor(actor);<br>    renderer->SetBackground(.1, .2, .3);<br> <br>    // Render and interact<br>    renderWindowInteractor->Initialize();<br>    renderWindow->Render();<br>    renderWindowInteractor->Start();<br><br><br>Have you got any idea of why I get this exception??<br><br>Again, a lot of thanks.<br><br>Adrian.<br><br><br><div><div id="SkyDrivePlaceholder"></div><hr id="stopSpelling">From: adrianca88@hotmail.com<br>To: vtkusers@vtk.org<br>Subject: Color mapping 3d points cloud<br>Date: Fri, 30 Mar 2012 10:25:26 +0200<br><br>
<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<meta name="Generator" content="Microsoft SafeHTML">
<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Tahoma;}
</style>
<div dir="ltr">
Hi,<br><br>I have a cloud of 3d points that I read from file (each line stores de x y z coordinates) and save in a vtkPolyData using a vtkPoints. Next, using vtkDelaunay3d I achive to get the 3D rendering.<br>My problem is that I want to create a colorMapping that represents different heigh with different colour, but I don't know how set this scalar value (which, in this case, depends on the z variable).<br><br>Sorry if the question is very easy to solve but I am very newbie with VTK.<br><br>A lot of thanks, <br><br>Adrian.<br>                                               </div></div>                                               </div></body>
</html>