VTK多线条显示
来源:互联网 发布:阿里云推送服务 web 编辑:程序博客网 时间:2024/04/27 23:22
1 开发环境
计算机系统:Win8.1(64位)
Qt版本:5.2.1
Qt Creator版本:3.0.1
VTK版本:6.2.0
2 问题描述
VTK中可以是实现画线条的类有vtkLIne和vtkPolyLine。画单条线比较容易实现,但是要画多根线,使其构成树形,就比较麻烦。根据现有的资料,达到这个目的的方法有a)多个Actor,为每根线条创建一个Actor;b)单个Actor。
由于单个Actor比较简洁,避免了为不同的线创建不同的的Actor,因此本文重点介绍此方法。
3 具体代码
void RSAMeasurement3D::skeletonShow(QList < QList< QPoint3D > > groups, vtkActor *actor, double color[3]){ vtkSmartPointer < vtkPoints > points = vtkSmartPointer < vtkPoints >::New(); QList < vtkIdList *> ids; int pointNum = 0; for( int g = 0; g < groups.length(); g++) { QList< QPoint3D > grp = groups.at(g); vtkIdList *id = vtkIdList::New(); for (int i = 0; i < grp.length(); i++) { points->InsertNextPoint(grp[i].x(), grp[i].y(), grp[i].z()); id->InsertNextId( pointNum ); pointNum++; } ids.append( id ); } //PolyLine vtkSmartPointer< vtkPolyLine >aPolyLine = vtkSmartPointer< vtkPolyLine >::New(); aPolyLine->GetPointIds()->SetNumberOfIds( points->GetNumberOfPoints() ); for (int i = 0; i < points->GetNumberOfPoints(); i++) { aPolyLine->GetPointIds()->SetId(i, i); } // vtkGrid vtkSmartPointer< vtkUnstructuredGrid > aPolyLineGrid = vtkSmartPointer< vtkUnstructuredGrid >::New(); aPolyLineGrid->Allocate(1, 1); // Cells, very important for( int i = 0; i < ids.length(); i++) { vtkIdList *id = ids.at(i); aPolyLineGrid->InsertNextCell(aPolyLine->GetCellType(), id); id->Delete(); } aPolyLineGrid->SetPoints( points ); // Mapper vtkSmartPointer< vtkDataSetMapper > aPolyLineMapper = vtkSmartPointer< vtkDataSetMapper >::New(); aPolyLineMapper->SetInputData(aPolyLineGrid); // Actor vtkSmartPointer< vtkActor > aPolyLineActor = vtkSmartPointer< vtkActor >::New(); aPolyLineActor->SetMapper(aPolyLineMapper); aPolyLineActor->GetProperty()->SetColor(1, 0, 0); m_pvtkRenderer3D->AddActor( aPolyLineActor ); ui->qvtkWidget3D->repaint();}
说明:
上面代码是我最近项目中的一个函数,主要用于将骨架点云显示成骨架线。
参数:
groups——点云的组,每组中包含了若干个点
actor——暂时没有使用
color——暂时没有使用
数据类型:
QPoint3D——我自己定义的一个类型,主要用于存储3D点数据(QPoint只至此2D的)
显示效果如下图:
参考资料
[1]VTK中画线的代码
[2]3D plot of multiple lines between 2 known points
[3]Draw a multiple lines set with VTK
[3]VTK/Examples/Cxx/GeometricObjects/ColoredLines
[4]how to draw multiple lines simultaneously with vtk?
0 0
- VTK多线条显示
- VTK:多线条表示和渲染
- Unity3D显示Kinect线条图
- [DevExpress]TreeList显示[+] [-] 线条样式
- vtk 显示分割线
- vtk显示jpg图像
- vtk三维立体显示
- vtk 显示属性设置
- VTK汉字显示问题
- QT+VTK显示图片
- VTK显示流程
- VTK中字符显示
- VTK显示中文
- VTk显示样式设置
- Python调用VTK模块显示.vtk文件
- VTK学习(十一)VTK图像显示
- VTK 多平面重建(MPR)及三维切片显示
- 线条
- numpy unique()
- 公司的问题
- smartupload实现多图上传
- 让多个Fragment 切换时不重新实例化
- 调用startActivityForResult后onActivityResult立刻响应,返回当前页onActivityResult不响应的问题
- VTK多线条显示
- 使用 boost::property_tree::ptree 读取配置文件
- 机器视觉-结构光测量之三角测量原理
- window vs2012 boost安装
- 当我debug的时候我在想些什么
- Android几种定时机制,handler.postDelayed+runnable&Timer+TimerTask & handler+thread.sleep
- 0 or 1
- HibernateException异常:identifier of an instance of bean was altered from 1 to 1(持久化对象ID变更)
- 黑苹果的安装记录