【翻译】VTK 8.0.0

来源:互联网 发布:淘宝返利网站 编辑:程序博客网 时间:2024/06/05 20:16

原文标题:VTK 8.0.0

原文地址:https://blog.kitware.com/vtk-8-0-0/

原文日期:2017.6.27


开始

VTK开发团队很高兴的通知各位VTK8要发布了!源码,数据和文档包,请访问VTK的网站获取。查看VTK Wiki来查看VTK8.0.0完整的API变化。

这一次的大新闻,以及大版本变化的原因是VTK-m的介绍,这个东西提供了可以在GPU上或多核CPU上跑的滤波器。VTK-m接口替换了之前的Piston和Dax接口,因为VTK-m已经包含了他们的功能。在VTK 8.0中,有一些新滤波器,用于计算cell和point均值,去掉重复points,进行裁剪、取轮及阈值操作,提取外部多边形网格,还有计算梯度和水平细节。另一个改变是对C++11的依赖。现在VTK允许依赖与C++11特性。VTK的最小编译器支持版本是GCC 4.8,Clang 3.3,XCode 5.0,MSVC 2013(低于这个版本VTK8是不能用的)。请查看VTK软件过程文档来查看完整了解此次语言层次的变化。

修复

按照惯例,这次也有大量的修复,不管大的小的,还是全局的。

用vtkLagrangianParticleTracker重选种子点

上图:用vtkLagrangianParticleTracker重选种子点

一大堆乱七八糟的修复

对于vtk-m之外的滤波器,这次有很多更新。上图是一个vtkLagrangianParticleTracker 的例子,它具有比现在更高配置性(configurable )的跟踪选项,原生粒子重选点以及表面交互。我们把vtkAppendArcLength 从ParaView弄到了VTK里。这是一个“对每个点从0点折线的长度arc_length点阵列。举个例子,它可以用来在流线(streamline)上放置等间距的glyphs 。新版本对点云(point cloud)处理过程有了一个显著的能力提升,我们添加了一些滤波器来致密化点云,计算密度梯度并标记其距离函数,从体积掩模内提取点集。我们还更新了VTK来保证 6分量对称张量 可以在整个工具包中使用。在相关学科发展中,SignedTensor是一个新的远程模块,它为有符号二阶张量的可视化提供了glyphs。vtkCookieCutter 是一个新算法,它使得用户可以在VTK的一个或多个闭环(即平面模板表面)切割平面。新的QVTKOpenGLWidget 利用了Qt新的OpenGL 上下文创建机制,并且作为一个QVTKWidget的替代来支持Qt5。值得注意的是,随着新版发布,在不同平台上,这个新的Qt5支持类会有很多未暴露和解决的bug出现。
vtkCookieCutter:使用印版裁剪一个基于glyph的点集

上图:vtkCookieCutter:使用印版裁剪一个基于glyph的点集

编译和平台

在编译和平台支持方面,MacOS最低版本是10.7。同时,windows下debug库的修饰符(翻译按:例如xxxD.dll的D)也进行了修正。Retina 显示支持已得到改进,还有一些工作正在进行中,以解决更高分辨率显示的剩余问题。在iOS上,actor 和object 的picking也被修复了。交叉编译现在可以利用交叉编译模拟器,当你要使用 dockross-manylinux-x64构建时。

图表和Web

VTK的图表和曲线(也叫做vtkContext2D),现在有了一个新功能来画vtkPolyData,其输出结果到PDF的能力也得到了增强。在web端,通过更新我们日了狗的第三方库版本(翻译按:日了狗=Twisted),vtkWeb 现在支持Python3了。在客户端方面,我们添加了一个导出器,from vtkWeb的输出场景for客户端通过vtk.js来渲染。

IO

在IO方面,VTK现在使用了一个修改过的stat来特别支持window用户打开超过4GB的文件。同样,VTK自带的XML读取器也更新了,以支持更大的文件。并且移除了对读取步数的硬编码限制。VTK的第三方扩展,hdf5和netcdf也更新了。用于MPI的hdf5现在支持性更好了,netcdfcpp也被从VTK的netcdf上分拆出来。OpenFOAM 读取器礼貌性的对ESI-OpenCFD 有大量更新(www.openfoam.com)。他们改进了对32位和64位二进制格式的支持,以及对拉格朗日格式的支持。使得其跳过初始条件目录和许多与输入字典相关的解析问题成为可能,并使得OpenFOAM的嵌入式代码块(用于动态编码)可以优雅地被读取器跳过。在其他VTK变化中,还添加一个了新的原生支持的GE读取器和 基于Truchas 仿真数据文件的LANL的hdf5的读取器。最后,CAM NetCDF读取器现在可以读取接口层属性了。

渲染

双深度剥离混合体积和多边形数据

上图:双深度剥离混合体积和多边形数据

渲染是7版本中主要的关注点,然而它在8版本中会继续更新。VTK现在有一个Vertex Buffer Object缓存,它允许VBO可以更频繁地更快地被使用,分享和更新。我们对OSPRay的接口更新到可以兼容版本1.3,并且修复了阴影噪声(shadow noise),点、边上色(point and edge coloring)和带边表面模式(surface with edges mode)。在体绘制方面,我们现在通过固定分区集(fixed partition sets)和一个全新的vtkMultiBlockVolumeMapper来支持GPU体纹理流,这个mapper可以在分区数据集中正确绘制非重叠vtkImageData节点。最后,VTK的双深度剥离空型有了新功能,它可以混杂半透明平面和体数据。

VTK的对外部渲染体系和拟真虚拟现实环境的支持,在7.1中第一次提出,我们也进行了显著的修改和提升。在HTC Vive内用vtkRenderingExternal 模块进行体绘制的功能已经修复,这是通过在vtkExternalOpenGLRenderer 中设置相机的初始位置到坐标系原点来实现的。对于使用OpenVR的VR系统,与错误的视口大小有关的bug得到了纠正,这是通过确保窗口大小和左右帧缓冲区大小调整来实现的。交互也同样进行了提升,通过第四(ApplicationMenu)和第五(Unassigned)自定义按钮,以及连接OpenVR的grip按钮到鼠标中键事件。

THANKS!

VTK 8.0 is brought to you by the efforts of at least 79 developers who made 1017 commits over the last eight months. This is not including our upstream libraries’ authors and the infrastructure work that went on behind the scenes. We’d like to thank all of the authors, bug reporters, and feature requesters. A special shout out goes to those who tested the release candidates and fixed the items found in them. The next release, 8.1 is expected to be released in the Fall. It will have more GPU capable filters from updates to vtk-m.

接下来的8.1,会有更多有GPU能力的滤波器更新进vtk-m。