已知三维点云坐标,怎样通过vtk导出stl格式数据
vtk吧
全部回复
仅看楼主
level 2
xinluomo 楼主
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
xinluomo 楼主
大神,我按照你的方法做了,生成的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
[真棒]你这数据管道弄的好嗨森~
自己认真研究原理,别知其然不知其所以然~
2016年01月08日 00点01分 6
大神,请教一个问题。vtkXXX.dll相关的问价放在系统哪个文件夹啊。我是win7 64位的
2016年01月19日 04点01分
还有的是在F5后输出窗口显示Build successed ,0Failed,但是提示系统找不到制定文件 T:\VTK\bin\Examples\IO\Cxx\ALLBUILD‘ 查看后确实没有这个文件。大神这些问题怎么解决啊
2016年01月19日 05点01分
还有一句是对他说明 Creating "Win32\Debug\ALL_BUILD\ALL_BUILD.unsuccessfulbuild" because "AlwaysCreate" was specified.
2016年01月19日 05点01分
level 12
点云和stl的结构不一样。
点云是一堆的离散点,而stl是三角网格结构,中间需要加个转换
用这个:vtkTriangleFilter
它能把数据转换成三角网格的,试试。
2016年01月08日 00点01分 7
这个我早就试过了,不行,一样没有数据输出
2016年01月08日 01点01分
@xinluomo 你把数据放百度云共享下~
2016年01月08日 04点01分
@rabbitbride http://pan.baidu.com/s/1gdR0n1h 这是我随便找的数据,你看看能不能生成
2016年01月08日 13点01分
@xinluomo [啊]随便找的,便找的,找的,的。。。
2016年01月09日 00点01分
1