#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkProperty.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkPoints.h"
#include "vtkPolyVertex.h"
#include "vtkUnstructuredGrid.h"
#include "vtkDataSetMapper.h"
int main(int argc, char* argv[])
{
FILE *fp = NULL;
if (argc==1)
{
if ((fp=fopen("venus.asc","r"))== NULL)
{
printf("Error in open file mbr.asc\n");
return 1;
}
}
else
{
if ((fp=fopen(argv[1],"r"))== NULL)
{
printf("Error in open file %s\n", argv[1]);
return 1;
}
}
vtkRenderer *ren=vtkRenderer::New();
double arr[3];
vtkPoints * points = vtkPoints::New();
int n=0;
while(!feof(fp))//首先读取点云数据到点表points同时指定点对应的id:
{
int ret=fscanf(fp,"%lf %lf %lf",&arr[0],&arr[1],&arr[2]);
if(ret!=3)
break;
points->InsertPoint(n,arr[0],arr[1],arr[2]);
n++;
}
printf("%d\n", n);
fclose(fp);
vtkPolyVertex * polyvertex = vtkPolyVertex::New();
polyvertex->GetPointIds()->SetNumberOfIds(n);
int i=0;
for(i=0;i<n;i++)//建立拓扑关系
{
polyvertex->GetPointIds()->SetId(i,i);
}
vtkUnstructuredGrid * grid=vtkUnstructuredGrid::New();
grid->SetPoints(points);
grid->InsertNextCell(polyvertex->GetCellType(),
polyvertex->GetPointIds());
vtkDataSetMapper *map1 = vtkDataSetMapper::New();
map1->SetInput(grid);
vtkActor *actor1 = vtkActor::New();
actor1->SetMapper(map1);
actor1->GetProperty()->SetColor(0.194,0.562, 0.75);
ren->AddActor(actor1);
ren->SetBackground(1, 1, 1);
vtkRenderWindow* win=vtkRenderWindow::New();
win->AddRenderer(ren);
win->SetSize(400,400);
win->BordersOn();
//win->FullScreenOn();
//win->HideCursor();
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(win);
vtkInteractorStyleTrackballCamera *style =
vtkInteractorStyleTrackballCamera::New();
iren->SetInteractorStyle(style);
iren->Start();
ren->Delete();
win->Delete();
iren->Delete();
return 0;
}
编译命令为
gcc -o 可执行文件名 源文件名 -I 头文件目录 需要的库文件 -Wno-dprecated:
gcc -o cloud cloud.cxx -I /usr/include/vtk-5.0 /usr/lib/libvtkRendering.so -Wno-deprecated
运行:
./cloud venus.asc//数据文件