<div dir="ltr">Hi all,<div><br></div><div style>I am creating a vtkUnstructuredGrid and extract its faces using vtkUnstructuredGridGeometryFilter.</div><div style>I want to add colors to each face of the resulting unstructured grid. </div>
<div style>Is there a way that we can assign scalar data to faces?</div><div style>I tried with getCellData method but it did not give any output.</div><div style>Below is my code:</div><div style><br></div><div style><div>
#include &lt;vtkVersion.h&gt;</div><div>#include &lt;vtkCellArray.h&gt;</div><div>#include &lt;vtkPoints.h&gt;</div><div>#include &lt;vtkHexahedron.h&gt;</div><div>#include &lt;vtkUnstructuredGrid.h&gt;</div><div> </div><div>
#include &lt;vtkSmartPointer.h&gt;</div><div>#include &lt;vtkDataSetMapper.h&gt;</div><div>#include &lt;vtkActor.h&gt;</div><div>#include &lt;vtkRenderWindow.h&gt;</div><div>#include &lt;vtkRenderer.h&gt;</div><div>#include &lt;vtkRenderWindowInteractor.h&gt;</div>
<div>#include &lt;vtkCellData.h&gt;</div><div>#include &lt;vtkCell.h&gt;</div><div>#include &lt;vtkLookupTable.h&gt;</div><div>#include &lt;vtkFloatArray.h&gt;</div><div>#include &lt;vtkUnstructuredGridGeometryFilter.h&gt;</div>
<div>#include &lt;vtkPointData.h&gt;</div><div> </div><div>int main(int, char *[])</div><div>{</div><div>  // Setup the coordinates of eight points </div><div>  // (the two faces must be in counter clockwise order as viewd from the outside)</div>
<div>  double P0[3] = {0.0, 0.0, 0.0};</div><div>  double P1[3] = {1.0, 0.0, 0.0};</div><div>  double P2[3] = {1.0, 1.0, 0.0};</div><div>  double P3[3] = {0.0, 1.0, 0.0};</div><div>  double P4[3] = {0.0, 0.0, 1.0};</div><div>
  double P5[3] = {1.0, 0.0, 1.0};</div><div>  double P6[3] = {1.0, 1.0, 1.0};</div><div>  double P7[3] = {0.0, 1.0, 1.0};</div><div> </div><div> </div><div>  // Create the points</div><div>  vtkSmartPointer&lt;vtkPoints&gt; points = vtkSmartPointer&lt;vtkPoints&gt;::New();</div>
<div>  points-&gt;InsertNextPoint(P0);</div><div>  points-&gt;InsertNextPoint(P1);</div><div>  points-&gt;InsertNextPoint(P2);</div><div>  points-&gt;InsertNextPoint(P3);</div><div>  points-&gt;InsertNextPoint(P4);</div><div>
  points-&gt;InsertNextPoint(P5);</div><div>  points-&gt;InsertNextPoint(P6);</div><div>  points-&gt;InsertNextPoint(P7);</div><div> </div><div>  // Create a hexahedron from the points</div><div>  vtkSmartPointer&lt;vtkHexahedron&gt; hex = </div>
<div>    vtkSmartPointer&lt;vtkHexahedron&gt;::New();</div><div>  hex-&gt;GetPointIds()-&gt;SetId(0,0);</div><div>  hex-&gt;GetPointIds()-&gt;SetId(1,1);</div><div>  hex-&gt;GetPointIds()-&gt;SetId(2,2);</div><div>  hex-&gt;GetPointIds()-&gt;SetId(3,3);</div>
<div>  hex-&gt;GetPointIds()-&gt;SetId(4,4);</div><div>  hex-&gt;GetPointIds()-&gt;SetId(5,5);</div><div>  hex-&gt;GetPointIds()-&gt;SetId(6,6);</div><div>  hex-&gt;GetPointIds()-&gt;SetId(7,7);</div><div> </div><div>  // Add the hexahedron to a cell array</div>
<div>  vtkSmartPointer&lt;vtkCellArray&gt; hexs = </div><div>    vtkSmartPointer&lt;vtkCellArray&gt;::New();</div><div>  hexs-&gt;InsertNextCell(hex);</div><div> </div><div>  vtkSmartPointer&lt;vtkFloatArray&gt; cellData =</div>
<div>    vtkSmartPointer&lt;vtkFloatArray&gt;::New();</div><div><span class="" style="white-space:pre">        </span>for (int i = 0; i &lt; 6; i++)</div><div>    {</div><div><span class="" style="white-space:pre">                </span> cellData-&gt;InsertNextValue(i + 1);</div>
<div>    }</div><div><span class="" style="white-space:pre">        </span></div><div>  // Add the points and hexahedron to an unstructured grid</div><div>  vtkSmartPointer&lt;vtkUnstructuredGrid&gt; uGrid =</div><div>    vtkSmartPointer&lt;vtkUnstructuredGrid&gt;::New();</div>
<div>  uGrid-&gt;SetPoints(points);</div><div>  uGrid-&gt;InsertNextCell(hex-&gt;GetCellType(), hex-&gt;GetPointIds());</div><div><br></div><div>  vtkSmartPointer&lt;vtkUnstructuredGridGeometryFilter&gt; geometryFilter = </div>
<div>    vtkSmartPointer&lt;vtkUnstructuredGridGeometryFilter&gt;::New();</div><div><br></div><div>  geometryFilter-&gt;SetInput(uGrid);</div><div>  geometryFilter-&gt;Update(); </div><div> </div><div>  vtkUnstructuredGrid* grid2 = geometryFilter-&gt;GetOutput();</div>
<div> /grid2-&gt;GetCellData()-&gt;SetScalars(cellData);</div><div>  // Create a lookup table to map cell data to colors</div><div>  grid2-&gt;se</div><div>  vtkSmartPointer&lt;vtkLookupTable&gt; lut =</div><div>    vtkSmartPointer&lt;vtkLookupTable&gt;::New();</div>
<div>  int tableSize = 1;</div><div>  lut-&gt;SetNumberOfTableValues(tableSize);</div><div>  lut-&gt;Build();</div><div>  </div><div> </div><div>  // Visualize</div><div>  vtkSmartPointer&lt;vtkDataSetMapper&gt; mapper = </div>
<div>    vtkSmartPointer&lt;vtkDataSetMapper&gt;::New();</div><div>#if VTK_MAJOR_VERSION &lt;= 5</div><div>  mapper-&gt;SetInputConnection(grid2-&gt;GetProducerPort());</div><div>#else</div><div>  mapper-&gt;SetInputData(uGrid);</div>
<div>#endif</div><div>   mapper-&gt;SetScalarRange(0, tableSize - 1);</div><div>  mapper-&gt;SetLookupTable(lut);</div><div> </div><div>  vtkSmartPointer&lt;vtkActor&gt; actor = </div><div>    vtkSmartPointer&lt;vtkActor&gt;::New();</div>
<div>  actor-&gt;SetMapper(mapper);</div><div> </div><div>  vtkSmartPointer&lt;vtkRenderer&gt; renderer = </div><div>    vtkSmartPointer&lt;vtkRenderer&gt;::New();</div><div>  vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow = </div>
<div>    vtkSmartPointer&lt;vtkRenderWindow&gt;::New();</div><div>  renderWindow-&gt;AddRenderer(renderer);</div><div>  vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; renderWindowInteractor = </div><div>    vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();</div>
<div>  renderWindowInteractor-&gt;SetRenderWindow(renderWindow);</div><div> </div><div>  renderer-&gt;AddActor(actor);</div><div>  //renderer-&gt;SetBackground(.2, .3, .4);</div><div> </div><div>  renderWindow-&gt;Render();</div>
<div>  renderWindowInteractor-&gt;Start();</div><div> </div><div>  return EXIT_SUCCESS;</div><div>}</div><div><br></div><div style>Thanks in advance.</div></div></div>