VTK草稿5

作者: yzld2002 | 来源:发表于2015-09-29 12:45 被阅读0次

4.7 Using Texture

材质贴图的本质是一个2D的图像可以渲染过程中被贴在物体的表面,来创造出更丰富的渲染效果。材质贴图需要两个信息:

  • texture map,即2D的图像,在VTK中以vtkImageData的dataset来表示。
  • texture coordinate,控制贴图在物体表面的位置。

下面是示例代码和实现效果:

# Load in the texture map. A texture is any unsigned char image. If it
# is not of this type, you will have to map it through a lookup table
# or by using vtkImageShiftScale.
bmpReader = vtk.vtkBMPReader()
bmpReader.SetFileName("/Volumes/Data/VTK/VTK-6.2.0/.ExternalData/MD5/8aa8fa634bb80a41256b2fd0e01819af")
atext = vtk.vtkTexture()
atext.SetInputConnection(bmpReader.GetOutputPort())
atext.InterpolateOn()

# Create a plane source and actor. The vtkPlanesSource generates
# texture coordinates.
plane = vtk.vtkPlaneSource()
planeMapper = vtk.vtkPolyDataMapper()
planeMapper.SetInputConnection(plane.GetOutputPort())
planeActor = vtk.vtkActor()
planeActor.SetMapper(planeMapper)
planeActor.SetTexture(atext)
Texture map on plane

注:这里贴图的坐标就是plane的坐标,vtkPlaneSource会自动生成这个坐标。

4.8 Picking

pick是一个可视化中很常见的任务,选定一个点作为pick的起始位置,执行vtkAbstractPickerPick()方法,根据pick的类型,返回选取点的信息,最简单的信息是三维的坐标(x-y-z global coordinate),或者包括cell id, point id等。pick的语法如下:

Pick(selectionX, selectionY, selectionZ, Renderer)
pick点的三维坐标.png

4.9 vtkCoordinate and Coordinate Systems

VTK支持多种坐标系,vtkCoordinate这个类负责坐标系之间的转换。支持的坐标系如下:

  • DISPLAY: 窗口(vtkWindow)中的x-y坐标,以像素为单。以窗口的左下方为原点。
  • NORMALIZED DISPLAY: 归一化的DISPLAY,[0,1]范围。
  • VIEWPOINT: viewpoint(即一个renderer)内的x-y坐标,以像素为单位。
  • NORMALIZED VIEWPOINT: 归一化的VIEWPOINT。
  • VIEW: x-y-z(-1, 1) 以camera为视角的坐标系,z是深度。
  • WORLD: x-y-z全局坐标
  • USERDEFINED: 用户自定义的空间,用户必须相应的坐标系转换方法。

4.10 Controlling vtkActor2D

vtkActor2D类似于vtkActor,不同之处在于它是绘制在一个平面上的,没有一个4*4的转换矩阵。它也有mapper:vtkMapper2D和property:vtkProperty2D,最难处理的部分在于它的位置处理。要做到这一点,必须要使用上文提到的vtkCoordinate

4.11 Annotation

VTK提供了两种方式来标注图像:

  • 2D annotation: 文字可以被覆盖在3D图像的上方(overlay plane),即在顶层的图层上标注。
  • 3D annotation: 文字也被渲染成3D的多边形数据,就像其他3D图形一样。

2D annotation

2D annotation.png

3D annotation and vtkFollower

3D的标注一般使用vtkVectorText来创建字符串的多边形表示,然后把它放在合适的位置上。一个用于放置3D标注的类是vtkFollower,这是个actor,能确保被渲染的actor始终正对着camera,所以不管图像怎么旋转位移,字符始终能够看清。

3D annotation.png

这张图是一个坐标系的图示,不管坐标系怎么旋转移动,指示原点的"Origin"标识始终正对着镜头

4.12 Special Plotting Classes

VTK提供了几种复杂的绘图操作:

  • Scalar Bar
  • vtkScalarBar用来创建颜色和数值之间的对应关系,scalar bar有三个组成部分:一个长方形的色彩带;指示数值的label;ScalarBar的名字。
  • Scalar Bar的使用有以下几点:
    • 指向一个vtkLookupTable,它定义了颜色和数值之间的对应关系。
    • 设定Scalar Bar的位置和朝向(水平/垂直)
    • 可选择Scalar Bar的颜色、标签的数字、题目的文字等。
Scalar Bat

相关文章

  • VTK草稿5

    4.7 Using Texture 材质贴图的本质是一个2D的图像可以渲染过程中被贴在物体的表面,来创造出更丰富的...

  • VTK草稿1

    VTK是什么 实际上是基于OpenGL的图形开发函数库。 OpenGL + OOP C++作为核心, 有Tcl、P...

  • VTK草稿4

    4.2 Using VTK Interactors VTK提供了两种和可视化结果互动的方法:用系统自带的vtkRe...

  • VTK草稿2

    看完了网上几篇入门的介绍,我开始阅读官方提供的标准教程。VTK这个组织很有意思,软件是开源的,社区也有,但是教程居...

  • VTK草稿3

    Chapter4 The Basics 这一章通过介绍一些例子来帮助读者熟悉VTK的功能,重点集中在常用的obje...

  • Ubuntu16上安装PCL

    在linux系统上安装环境VTK+PCL+QT5,踩过无数坑。。。 一、版本对应 编译PCL之前要安装VTK,博主...

  • Kitware/react-vtk-js 使用记录 01

    Kitware/react-vtk-js 是vtk组织官方出的react vtk组件,运用于医学成像。git地址:...

  • Realsense 显示手的关节信息并控制

    vtk.cpp vtk.hpp hand3d.hpp

  • QT VTK9.1.0配置

    下载:https://vtk.org/download/[https://vtk.org/download/] c...

  • vtk学习记录(二)——新建vtk工程及Qt配置vtk

    前言 前面vtk学习记录(一)——vtk工程配置与生成我们已经生成了vtk的类库,下面就是新建自己的工程来实现业务...

网友评论

    本文标题:VTK草稿5

    本文链接:https://www.haomeiwen.com/subject/nguwcttx.html