<div dir="ltr">I am still unable to plot correct contours on a vtkHyperOctree. Again, as a simple test case I would like to plot lines of constant x on a unit square. For this, I have defined a 2D vtkHyperOctree of 16 cells (4x4). The grid is plotted correctly, but the contours are incorrect. Here is the my xml grid file (vto file):<br>
<br>&lt;?xml version=&quot;1.0&quot;?&gt;<br>&lt;VTKFile type=&quot;HyperOctree&quot; version=&quot;0.1&quot; byte_order=&quot;LittleEndian&quot; compressor=&quot;vtkZLibDataCompressor&quot;&gt;<br>&nbsp; &lt;HyperOctree Dimension=&quot;2&quot; Size=&quot;1 1 0.5&quot; Origin=&quot;0.5 0 0&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;Topology&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DataArray type=&quot;Int32&quot; Name=&quot;Topology&quot; NumberOfTuples=&quot;21&quot; format=&quot;ascii&quot; RangeMin=&quot;0&quot; RangeMax=&quot;1&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0 1 1 1 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 1 1 1 1 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 1 1 1 0 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 1 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DataArray&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/Topology&gt;<br>&nbsp;&nbsp;&nbsp; &lt;PointData Scalars=&quot;LinearFunction&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DataArray type=&quot;Float64&quot; Name=&quot;LinearFunction&quot; format=&quot;ascii&quot; RangeMin=&quot;0.125&quot; RangeMax=&quot;0.875&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.125 0.375 0.125 0.375 0.625 0.875<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.625 0.875 0.125 0.375 0.125 0.375<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.625 0.875 0.625 0.875<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DataArray&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/PointData&gt;<br>&nbsp;&nbsp;&nbsp; &lt;CellData&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/CellData&gt;<br>
&nbsp; &lt;/HyperOctree&gt;<br>&lt;/VTKFile&gt;<br><br>I read in this file and render with the code below:<br><br>#include &quot;vtkActor.h&quot;<br>#include &quot;vtkDataSetMapper.h&quot;<br>#include &quot;vtkPolyDataMapper.h&quot;<br>
#include &quot;vtkOutputWindow.h&quot;<br>#include &quot;vtkPointData.h&quot;<br>#include &quot;vtkCellData.h&quot;<br>#include &quot;vtkRenderer.h&quot;<br>#include &quot;vtkRenderWindow.h&quot;<br>#include &quot;vtkRenderWindowInteractor.h&quot;<br>
#include &quot;vtkHyperOctree.h&quot;<br>#include &quot;vtkXMLHyperOctreeReader.h&quot;<br>#include &quot;vtkProperty.h&quot;<br>#include &quot;vtkHyperOctreeContourFilter.h&quot;<br>#include &quot;vtkLookupTable.h&quot;<br>
int main(int argc, char* argv[])<br>{<br>&nbsp; int NCONTOURS = 5;<br>&nbsp; vtkOutputWindow::GetInstance()-&gt;PromptUserOn();<br><br>&nbsp; // read in *.vto grid<br>&nbsp; vtkXMLHyperOctreeReader *xmlReader=vtkXMLHyperOctreeReader::New();<br>
&nbsp; xmlReader-&gt;SetFileName(argv[1]);<br>&nbsp; xmlReader-&gt;Update();<br><br>&nbsp; vtkHyperOctreeContourFilter *contour=vtkHyperOctreeContourFilter::New();<br>&nbsp; <br>&nbsp; double *range=xmlReader-&gt;GetOutput()-&gt;GetPointData()-&gt;GetScalars()-&gt;GetRange();<br>
&nbsp; contour-&gt;SetNumberOfContours(NCONTOURS);<br>&nbsp; contour-&gt;GenerateValues(NCONTOURS,range[0],range[1]);<br>&nbsp; contour-&gt;SetInputConnection(0,xmlReader-&gt;GetOutputPort(0));<br>&nbsp; contour-&gt;Update();<br>&nbsp; <br>&nbsp; vtkPolyDataMapper *smapper;<br>
&nbsp; smapper=vtkPolyDataMapper::New();<br><br>&nbsp; vtkLookupTable *lut3d = vtkLookupTable::New();<br>&nbsp; lut3d-&gt;SetHueRange(0.667,0.0);<br>&nbsp; smapper-&gt;SetInputConnection(0,contour-&gt;GetOutputPort(0)); <br>&nbsp; smapper-&gt;SetLookupTable(lut3d);<br>
&nbsp; smapper-&gt;SetScalarRange(xmlReader-&gt;GetOutput()-&gt;GetPointData()-&gt;GetScalars()-&gt;GetRange());<br><br>&nbsp; // setup actor<br>&nbsp; vtkActor *actor = vtkActor::New();<br>&nbsp; actor-&gt;SetMapper(smapper);<br><br>&nbsp; // render now<br>
&nbsp; vtkRenderer *ren = vtkRenderer::New();<br>&nbsp; ren-&gt;AddActor(actor);<br><br>&nbsp; vtkRenderWindow *renWin = vtkRenderWindow::New();<br>&nbsp; renWin-&gt;AddRenderer(ren);<br>&nbsp; vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();<br>
&nbsp; iren-&gt;SetRenderWindow(renWin);<br>&nbsp; renWin-&gt;SetFullScreen(1);&nbsp; <br>&nbsp; renWin-&gt;Render();<br>&nbsp; iren-&gt;Start();<br><br>&nbsp; // free memory here<br>&nbsp; xmlReader-&gt;Delete();<br>&nbsp; smapper-&gt;Delete();<br>&nbsp; actor-&gt;Delete();<br>
&nbsp; ren-&gt;Delete();<br>&nbsp; renWin-&gt;Delete();<br>&nbsp; iren-&gt;Delete();<br>&nbsp; return 0;<br>}<br><br>Using the above, the grid is rendered correctly but the contours are completely incorrect. I must have something fundamentally wrong here, and I am unable to find any documentation to point me in the right direction. I would be extremely grateful if anyone could help me figure this out.<br>
<br>Thanks,<br><br>-Rob<br>
</div>