<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:\5B8B\4F53;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:\5B8B\4F53;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@\5B8B\4F53";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi all,<o:p></o:p></p><p class=MsoNormal>I try to construct a height field with VTK. My data is point data stored in csv files. I read the data and use vtkDelaunay2D to triangulate the dataset and vtkGeometryFilter to extract geometry . But my result just show a plane. Does anyone know how to add the height?<o:p></o:p></p><p class=MsoNormal>I attach my code:<o:p></o:p></p><p class=MsoNormal>First part --read data: the data read from csv file &nbsp;and is stored in vtkpoints object ([x,y,0]) and the height &nbsp;is stored in vtkFloatarray. Both objects are imported to vtkploydata object<o:p></o:p></p><p class=MsoNormal>Second part ----heightfield: use vtkDelaunay2D and vtkGeometryFilter<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>def readdata(filename):<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; dataset1=vtkPolyData()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; newpoints=vtkPoints()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; newscalars=vtkFloatArray()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; l=len(filename)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; for j in range(1,l) :<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_csv=csv.reader(open(filename[j]))<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_csv.next()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_array_temp=[0,0,0]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index=1<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for row in data_csv:<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_array_temp[0]=j*5<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_array_temp[1]=index<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #data_array_temp[2]=float(row[4])<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newpoints.InsertNextPoint(data_array_temp)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newscalars.InsertNextValue (float(row[4]))<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index=index+1<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; dataset1.SetPoints(newpoints)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; dataset1.GetPointData().SetScalars(newscalars)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; return dataset1<o:p></o:p></p><p class=MsoNormal>ef heightfield(dataset):<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; del2=vtkDelaunay2D()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; #del2.SetTolerance(0.01)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; del2.SetAlpha(0)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; del2.SetInput(dataset)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; print('1')<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; #hf=vtkGreedyTerrainDecimation()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; #hf.SetInput(del2.GetOutput())<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; geometry=vtkGeometryFilter()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; geometry.SetInput(del2.GetOutput())<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; warp=vtkWarpScalar()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; warp.SetInput(geometry.GetOutput())<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; warp.SetScaleFactor(1)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; warp.XYPlaneOn()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; warp.UseNormalOn()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; warp.SetNormal(0,0,2)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; lut =vtkLookupTable()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; lut.SetNumberOfColors(100)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; lut.SetHueRange(0.2, 0.97)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; lut.SetSaturationRange(-1, 1)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; lut.Build()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; merge=vtkMergeFilter()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; merge.SetGeometry(warp.GetOutput())<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; merge.SetScalars(dataset)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; mapper=vtkPolyDataMapper()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; mapper.SetLookupTable(lut)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; mapper.SetInput(merge.GetOutput())<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; actor=vtkActor()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; actor.SetMapper(mapper)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; renderer=vtkRenderer()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; renderer.AddActor(actor)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; renderwindow=vtkRenderWindow()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; renderwindow.AddRenderer(renderer)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; renderwindow.SetSize(200,200)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; interactor=vtkRenderWindowInteractor()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; interactor.SetRenderWindow(renderwindow)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; interactor.Initialize()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; renderwindow.Render()<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; interactor.Start()<o:p></o:p></p><p class=MsoNormal style='text-indent:9.0pt'>return<o:p></o:p></p><p class=MsoNormal style='text-indent:9.0pt'><o:p>&nbsp;</o:p></p><p class=MsoNormal style='text-indent:9.0pt'>thanks in advance!<o:p></o:p></p><p class=MsoNormal style='text-indent:9.0pt'><o:p>&nbsp;</o:p></p><p class=MsoNormal><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";color:#595959'>JIE </span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";color:#595959'><o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>