level 2
2100.602072 2071.179770 1376.373641
2112.449349 2071.151151 1372.452347
2113.269076 2071.105509 1372.579715
2113.883557 2071.131858 1372.124640
2114.156680 2071.116562 1372.168118
2114.340357 2071.132828 1371.955826
2114.789038 2071.136650 1371.764043
上面数据是txt中部分的点云坐标,我知道vtk中有个vtkstlwriter这个类可以导出stl格式,但是搞不懂点云坐标怎样转换才符合vtkstlwriter的输入,求求大神解救
2016年01月06日 14点01分
1
level 12
1、天才第一步,天使纸尿裤~
先把txt中的三维坐标都进来
#include <vtkSimplePointsReader.h>
2016年01月07日 00点01分
2
level 12
2、转换成VTK能识别的mapper
#include <vtkPolyDataMapper.h>
2016年01月07日 00点01分
3
level 12
3、流水线生成,直接写出来就好了
#include <vtkSTLWriter.h>
2016年01月07日 00点01分
4
level 2
大神,我按照你的方法做了,生成的stl文件没有数据,这还是我的代码
#include "vtkSmartPointer.h"
#include "vtkSimplePointsReader.h"
#include "vtkPolyData.h"
#include "vtkSTLWriter.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
int _tmain(int argc, _TCHAR* argv[])
{
vtkSmartPointer<vtkSimplePointsReader> pointsreader = vtkSmartPointer<vtkSimplePointsReader>::New();
pointsreader->SetFileName("E:\\qt_ex\\teststl\\pointDatas.txt");
vtkSmartPointer<vtkSTLWriter> stlwriter = vtkSmartPointer<vtkSTLWriter>::New();
stlwriter->SetInputConnection(pointsreader->GetOutputPort());
stlwriter->SetFileName("E:\\qt_ex\\teststl\\pointDatas.stl");
stlwriter->Update();
stlwriter->Write();
vtkSmartPointer<vtkPolyDataMapper> datamapper = vtkSmartPointer<vtkPolyDataMapper>::New();
datamapper->SetInputConnection(pointsreader->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(datamapper);
vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
render->AddActor(actor);
vtkSmartPointer<vtkRenderWindow> ren = vtkSmartPointer<vtkRenderWindow>::New();
ren->AddRenderer(render);
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(ren);
iren->Initialize();
iren->Start();
return 0;
}
能帮忙看看哪出问题了吗,如果用vtkPolyDataMapper的数据作为vtkstlwriter的输入,就会报错,我就将读进来的点云直接作为vtkstlwriter的输入,但是生成的stl没有数据
2016年01月07日 13点01分
5
level 12
点云和stl的结构不一样。
点云是一堆的离散点,而stl是三角网格结构,中间需要加个转换
用这个:vtkTriangleFilter
它能把数据转换成三角网格的,试试。
2016年01月08日 00点01分
7
这个我早就试过了,不行,一样没有数据输出
2016年01月08日 01点01分
@xinluomo ![[啊]](/static/emoticons/u554a.png)
随便找的,便找的,找的,的。。。
2016年01月09日 00点01分