<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>