<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 and is stored in vtkpoints object ([x,y,0]) and the height 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> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>def readdata(filename):<o:p></o:p></p><p class=MsoNormal> dataset1=vtkPolyData()<o:p></o:p></p><p class=MsoNormal> newpoints=vtkPoints()<o:p></o:p></p><p class=MsoNormal> newscalars=vtkFloatArray()<o:p></o:p></p><p class=MsoNormal> l=len(filename)<o:p></o:p></p><p class=MsoNormal> for j in range(1,l) :<o:p></o:p></p><p class=MsoNormal> data_csv=csv.reader(open(filename[j]))<o:p></o:p></p><p class=MsoNormal> data_csv.next()<o:p></o:p></p><p class=MsoNormal> data_array_temp=[0,0,0]<o:p></o:p></p><p class=MsoNormal> index=1<o:p></o:p></p><p class=MsoNormal> for row in data_csv:<o:p></o:p></p><p class=MsoNormal> data_array_temp[0]=j*5<o:p></o:p></p><p class=MsoNormal> data_array_temp[1]=index<o:p></o:p></p><p class=MsoNormal> #data_array_temp[2]=float(row[4])<o:p></o:p></p><p class=MsoNormal> newpoints.InsertNextPoint(data_array_temp)<o:p></o:p></p><p class=MsoNormal> newscalars.InsertNextValue (float(row[4]))<o:p></o:p></p><p class=MsoNormal> index=index+1<o:p></o:p></p><p class=MsoNormal> dataset1.SetPoints(newpoints)<o:p></o:p></p><p class=MsoNormal> dataset1.GetPointData().SetScalars(newscalars)<o:p></o:p></p><p class=MsoNormal> return dataset1<o:p></o:p></p><p class=MsoNormal>ef heightfield(dataset):<o:p></o:p></p><p class=MsoNormal> del2=vtkDelaunay2D()<o:p></o:p></p><p class=MsoNormal> #del2.SetTolerance(0.01)<o:p></o:p></p><p class=MsoNormal> del2.SetAlpha(0)<o:p></o:p></p><p class=MsoNormal> del2.SetInput(dataset)<o:p></o:p></p><p class=MsoNormal> print('1')<o:p></o:p></p><p class=MsoNormal> #hf=vtkGreedyTerrainDecimation()<o:p></o:p></p><p class=MsoNormal> #hf.SetInput(del2.GetOutput())<o:p></o:p></p><p class=MsoNormal> geometry=vtkGeometryFilter()<o:p></o:p></p><p class=MsoNormal> geometry.SetInput(del2.GetOutput())<o:p></o:p></p><p class=MsoNormal> warp=vtkWarpScalar()<o:p></o:p></p><p class=MsoNormal> warp.SetInput(geometry.GetOutput())<o:p></o:p></p><p class=MsoNormal> warp.SetScaleFactor(1)<o:p></o:p></p><p class=MsoNormal> warp.XYPlaneOn()<o:p></o:p></p><p class=MsoNormal> warp.UseNormalOn()<o:p></o:p></p><p class=MsoNormal> warp.SetNormal(0,0,2)<o:p></o:p></p><p class=MsoNormal> lut =vtkLookupTable()<o:p></o:p></p><p class=MsoNormal> lut.SetNumberOfColors(100)<o:p></o:p></p><p class=MsoNormal> lut.SetHueRange(0.2, 0.97)<o:p></o:p></p><p class=MsoNormal> lut.SetSaturationRange(-1, 1)<o:p></o:p></p><p class=MsoNormal> lut.Build()<o:p></o:p></p><p class=MsoNormal> merge=vtkMergeFilter()<o:p></o:p></p><p class=MsoNormal> merge.SetGeometry(warp.GetOutput())<o:p></o:p></p><p class=MsoNormal> merge.SetScalars(dataset)<o:p></o:p></p><p class=MsoNormal> mapper=vtkPolyDataMapper()<o:p></o:p></p><p class=MsoNormal> mapper.SetLookupTable(lut)<o:p></o:p></p><p class=MsoNormal> mapper.SetInput(merge.GetOutput())<o:p></o:p></p><p class=MsoNormal> actor=vtkActor()<o:p></o:p></p><p class=MsoNormal> actor.SetMapper(mapper)<o:p></o:p></p><p class=MsoNormal> renderer=vtkRenderer()<o:p></o:p></p><p class=MsoNormal> renderer.AddActor(actor)<o:p></o:p></p><p class=MsoNormal> renderwindow=vtkRenderWindow()<o:p></o:p></p><p class=MsoNormal> renderwindow.AddRenderer(renderer)<o:p></o:p></p><p class=MsoNormal> renderwindow.SetSize(200,200)<o:p></o:p></p><p class=MsoNormal> interactor=vtkRenderWindowInteractor()<o:p></o:p></p><p class=MsoNormal> interactor.SetRenderWindow(renderwindow)<o:p></o:p></p><p class=MsoNormal> interactor.Initialize()<o:p></o:p></p><p class=MsoNormal> renderwindow.Render()<o:p></o:p></p><p class=MsoNormal> 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> </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> </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> </o:p></p></div></body></html>