Activiz学习点滴(一)——常用类

程序集 Kitware.VTK.dll, v5.8.0.607

namespace Kitware.VTK

public class WrappedObject : Kitware.mummy.Runtime.WrappedObject

WrappedObject是Kitware.VTK中所有包装类的基类。

public class vtkObjectBase : WrappedObject

vtkObjectBase是大多数VTK对象的抽象基类,它是VTK中所有引用计数类的基类。这些类型包括vtkCommand类、vtkInformationKey类和vtkObject类。vtkObjectBase执行引用计数:只要其他对象使用引用计数的对象,它们就存在。一旦删除对引用计数对象的最后一个引用,该对象将自动销毁。vtkObjectBase子类的构造函数和析构函数应该使用protected修饰符修饰,这样实际上只有New()和UnRegister()方法可以调用它们。调试leaks可用于查看是否有对象遗留的非零引用计数。注意事项:vtkObjectBase子类的对象应始终使用New()方法创建,并使用Delete()方法删除,它们的构造函数是一个protected方法。

public class vtkObject : vtkObjectBase

vtkObject是大多数VTK(visualization toolkit)对象的抽象基类,vtkObject提供跟踪修改时间、调试、打印和事件回调的方法。在VTK框架内创建的大多数对象应该是vtkObject的子类或其子类的子类。少数例外情况往往是非常小的帮助器类,它们通常永远不会被实例化,或者是在多重继承遇到阻碍的情况下。vtkObject也执行引用计数:只要其他对象使用引用计数的对象,它们就存在。一旦删除对引用计数对象的最后一个引用,该对象将自动销毁。

public class vtkProp : vtkObject

vtkProp是所有actor、volume和annotation的抽象超类,vtkProp是渲染场景(2D或3D)中任何对象的抽象超类。vtkProp的实例可以响应各种渲染方法(例如RenderopaQuegeMetry())。vtkProp还定义了用于拾取、LOD操作的API,以及控制可见性、拾取和拖动的常用实例变量。

public abstract class vtkProp3D : vtkProp

vtkProp3D表示要放置在渲染场景中的三维对象,vtkProp3D是一个抽象类,用于表示渲染场景中的实体(即vtkProp3D是具有关联变换矩阵的vtkProp)。它处理与位置、方向和缩放相关的功能。它将这些实例变量组合成一个4x4变换矩阵,如下所示:[x y z 1]=[x y z 1]平移(-origin)缩放(Scale)旋转(y)旋转(x)旋转(z)平移(origin)平移(position)。vtkActor和vtkVolume都是特殊用途的vtkProp类。其构造函数默认为:原点(0,0,0)位置=(0,0,0)方向=(0,0,0),没有用户定义的矩阵或变换,也没有纹理贴图。

public class vtkActor : vtkProp3D

vtkActor表示渲染场景中的对象(几何体和属性),vtkActor用于表示渲染场景中的实体。它从vtkProp类继承了与角色位置和方向相关的功能。actor还具有缩放功能,并维持对定义的几何体的引用、渲染属性,以及可能的纹理贴图。vtkActor将这些实例变量组合成一个4x4变换矩阵,如下所示:[x y z 1]=[x y z 1]平移(-origin)缩放(Scale)旋转(y)旋转(x)旋转(z)平移(origin)平移(position)。

public virtual void SetMapper(vtkMapper arg0);

这是用于将actor连接到显示管道末端(即映射器)的方法。映射器应该是vtkMapper的一个子类。通常使用vtkPolyDataMapper和vtkDataSetMapper。

public vtkProperty GetProperty();

获取控制此actor实例的点云属性的属性对象。返回一个vtkProperty对象的实例。每个actor都必须有与其关联的属性。如果未指定一个,则将自动生成一个。多个actor可以共享一个属性对象。

public static vtkActor New();

使用以下默认值创建actor:原点(0,0,0)位置=(0,0,0)比例=(1,1,1)可见性=1,可拾取=1,可拖动=1,方向=(0,0,0)。没有用户定义的矩阵和纹理贴图。

public void SetProperty(vtkProperty lut);

设置控制此actor实例的点云属性的属性对象。传入一个vtkProperty对象的实例。每个actor都必须有与其关联的属性。如果未指定一个,则将自动生成一个。多个actor可以共享一个属性对象。

public abstract class vtkAbstractTransform : vtkObject

vtkAbstractTransform所有几何变换的超类,VTK变换层次结构分为两个主要分支:扭曲变换和齐次(包括线性)变换。后者可以用4x4变换矩阵表示,前者不能。转换可以通过两种机制进行管道化:1) GetInverse()返回逆向变换的管道化,即如果修改原始变换,则GetInverse()方法先前返回的任何变换都将根据更改自动更新自身。2) 您可以通过vtkGeneralTransform类、VTKPperspectiveTransform类或vtkTransform类进行转换的管道化连接。

public abstract class vtkHomogeneousTransform : vtkAbstractTransform

vtkHomogeneousTransform齐次变换的超类,vtkHomogeneousTransform为齐次变换提供了通用接口,即可通过将4x4矩阵与齐次坐标相乘来表示的变换。

public abstract class vtkLinearTransform : vtkHomogeneousTransform

vtkLinearTransform线性变换的抽象超类,vtkLinearTransform为线性(仿射或12自由度)几何变换提供了通用接口。

public class vtkTransform : vtkLinearTransform

vtkTransform通过4x4矩阵描述线性变换,vtkTransform可用于描述全范围的三维线性(也称为仿射)坐标变换,其内部表示为4x4齐次变换矩阵。创建新的vtkTransform时,它总是初始化为本体转换。SetInput()方法允许您将另一个转换(而不是本体转换)设置为基转换。有一种管道机制可以确保在修改输入时,当前转换将相应地更新。通过Concatenate()方法支持此管道机制。大多数操作此转换的方法(例如平移、旋转和连接)都可以在PreMultiply(默认)或PostMultiply模式下操作。在PreMultiply模式下,平移、连接等将发生在由当前矩阵表示的任何变换之前。在PostMultiply模式下,附加变换将在当前矩阵表示的任何变换之后发生。此类在具有右手旋转的右手坐标系中执行其所有操作。其他一些图形库使用左手坐标系和旋转。

public void PreMultiply();

将变换的内部状态设置为PreMultiply模式。所有后续操作都将在当前转换中已表示的操作之前发生。在齐次矩阵表示法中,M=M*A,其中M是当前变换矩阵,A是应用矩阵。默认值为PreMultiply模式。

public void PostMultiply();

将变换的内部状态设置为PostMultiply模式。所有后续操作都将在当前转换中已表示的操作之后发生。在齐次矩阵表示法中,M=A*M,其中M是当前变换矩阵,A是应用矩阵。默认值为PreMultiply模式。

public void RotateX(double angle);

public void RotateY(double angle);

public void RotateZ(double angle);

创建围绕X、Y或Z轴的旋转矩阵,并根据PreMultiply模式或PostMultiply模式将其与当前变换连接起来。角度以度表示。

public class vtkOutputWindow : vtkObject

vtkOutputWindow用于将调试输出写入控制台的基类,此类用于封装所有文本输出,以便它可以与具有stdout和stderr的操作系统以及不具有stdout和stderr的操作系统一起工作。(比如windows就不支持stdout和stderr)。vtkOutputWindow可以为子类提供输出重定向窗口。

public static void SetGlobalWarningDisplay(int val);

这是一个全局标志,用于控制是否显示任何调试、警告或错误消息。

public class vtkPoints : vtkObject

vtkPoints-表示和操纵三维点, vtkPoints的数据模型是一组vx-vy-vz三元组,可通过(点或单元)id访问。

public void InsertPoint(long id, double x, double y, double z);

将点插入到对象中。执行范围检查并根据需要分配内存。

public double[] GetPoint(long id);

返回指向特定id的double类型数组[3]。警告:不要使用这个容易出错的方法,返回的数组及其值只有在没有执行另一个方法调用时才有效。首选参数中带有返回值的GetPoint()。

public void SetPoint(long id, double x, double y, double z);

将点插入到对象中。未执行范围检查(快速)。在使用SetPoint()之前,请确保使用SetNumberOfPoints()分配内存。

public class vtkAlgorithm : vtkObject

VTK中所有源、过滤器和接收器的超类。它定义了执行数据处理算法的通用接口。管道连接与输入和输出端口相关联,这些输入和输出端口独立于通过管道连接的数据类型,vtkAlgorithm实例可以独立使用,也可以在具有各种体系结构和更新机制的管道中使用。管道由vtkExecutive的实例控制。在管道中使用时,每个vtkAlgorithm实例都有一个关联的vtkExecutive。vtkExecutive负责数据流。

public class vtkAbstractMapper : vtkAlgorithm

定义了映射数据的接口的抽象类,vtkAbstractMapper是一个抽象类,用于指定数据和图形或软件渲染技术。vtkAbstractMapper的子类可用于渲染二维数据、几何体或三维数据。

public abstract class vtkAbstractMapper3D : vtkAbstractMapper

定义了映射三维数据的接口的抽象类。vtkAbstractMapper3D是一个抽象类,用于指定3D数据和图形或软件渲染技术之间的接口。vtkAbstractMapper3D的子类可用于渲染几何体或渲染三维数据。这个类还定义了一个API来支持硬件裁剪平面(最多可以定义六个平面)。它还提供几何数据,这些几何数据与其映射的输入数据相关,例如边界框和中心。

public abstract class vtkMapper : vtkAbstractMapper3D

定义了将数据映射到图形的接口的抽象类,vtkMapper的子类通过一个查询表映射数据,并控制图形库接口的渲染的创建。可以通过提供查询表和指定要映射数据的标量范围来控制映射。有几种重要的控制机制影响此对象的行为。ScalarVisibility标志控制标量数据(如果有)是否控制关联的actor的颜色。ScalarMode变量用于确定是使用标量点数据还是单元数据为对象着色。默认情况下,将使用标量点数据,除非没有标量,在这种情况下,使用单元数据。或者,您可以显式控制是使用点还是单元数据。最后,通过查询表映射的标量会因ColorMode标志的设置而异。有关说明,请参阅文档中的相应方法。此类的另一个重要功能是使用即时模式渲染(ImmediateModeRenderingOn)还是显示列表渲染(ImmediateModeRenderingOff)。如果使用显示列表,将构造一个数据结构(通常在渲染库中),然后渲染库可以快速遍历和渲染该数据结构。显示列表的缺点是它们需要额外的内存,这可能会影响系统的性能。映射器的另一个重要功能是转换z缓冲区以解析重合拓扑的能力。例如,如果要绘制具有不同颜色边的网格,并且边位于网格上,则此功能对于获得好看的线非常有用。(请参见与拓扑相关的方法。)

public abstract class vtkPolyDataMapper : vtkMapper

将vtkPolyData映射到图形。vtkPolyDataMapper是一个将多边形数据(即vtkPolyData)映射到图形的类。vtkPolyDataMapper充当特定设备的多边形数据映射器的超类,该映射器实际执行到渲染或图形、硬件或软件的映射。

public virtual void SetInputConnection(vtkAlgorithmOutput input);

设置给定输入端口索引的连接。过滤器的每个输入端口都有特定的用途。一个端口可以有零个或多个连接,所需的数量由每个筛选器指定。使用此方法设置连接将从端口删除所有其他连接。要添加多个连接,请使用AddInputConnection()。连接的输入是另一个过滤器的输出端口,该过滤器是通过GetOutputPort()获得的。典型用法是filter2的SetInputConnection(filter1的GetOutputPort())。

public virtual void ScalarVisibilityOn();

public virtual void ScalarVisibilityOff();

启用/禁用标志以控制是否使用标量数据为对象着色。

public void SetScalarModeToUsePointFieldData();

控制过滤器如何处理标量点数据和单元属性数据。默认情况下(ScalarModeFault),过滤器将使用点数据,如果没有可用的点数据,则使用单元数据。或者,可以显式设置过滤器以使用点数据(ScalarModeusePointData)或单元数据(ScalarModeuseCellData)。您还可以选择从点字段数据(ScalarModeusePointFieldData)或单元字段数据(ScalarModeuseCellFieldData)中的数组中获取标量。如果标量来自字段数据数组,则必须在调用GetColor之前调用SelectColorArray。当ScalarMode设置为使用字段数据(ScalarModeToFieldData)时,必须调用SelectColorArray来选择要用于为单元格着色的字段数据数组。

public void SelectColorArray(string arrayName);

当ScalarMode设置为UsePointFieldData或UseCellFieldData时,可以使用这个方法指定要用于着色的数组。查询表将决定如何将矢量转换为颜色。

*Activiz中对Filter的理解

Source->Filter->Mapper

Source是指用于创建数据(如vtkCylinderSource、vtkConeSource)或者读取数据(如vtkBMPReader、vtkStructuredPointsReader等)的类的统称,即数据源

Source输出的数据作为Filter的输入,经Filter处理以后(可以经多个Filter处理),生成新的数据。Filter的输出可以直接写入文件,或者经Mapper变换后送入渲染引擎进行渲染、显示,结束可视化管线
  
Filter的译文为过滤,本质上是算法

Filter的输入方式是 xxxInputxxx ( 上一个Filter的 xxxoutputxxx ( ) )

public class vtkProperty : vtkObject

表示几何对象的曲面特性,vtkProperty是表示几何对象的照明和其他曲面特性的对象。可以设置的主要属性是颜色(整体、环境光、漫反射、镜面反射和边缘颜色);高光强度;物体的不透明度;对象的描述(点、线框或曲面);以及要使用的着色方法(flat、Gouraud和Phong)。此外,一些特殊的图形功能(如背面特性)可以使用此对象进行设置和操作。

public virtual void SetPointSize(float _arg);

设置点的直径。大小以屏幕单位表示。这仅为OpenGL实现。默认值为1.0。

public virtual float GetPointSize();

获取点的直径。大小以屏幕单位表示。这仅为OpenGL实现。默认值为1.0。

public void SetColor(double r, double g, double b);

设置对象的颜色。具有设置环境漫射和镜面反射颜色的副作用。这基本上是一种快速的整体颜色设置方法。

public virtual void SetLineWidth(float _arg);

public virtual float GetLineWidth();

设置/获取行的宽度。宽度以屏幕单位表示。默认值为1.0。

public abstract class vtkAbstractArray : vtkObject

所有数组的抽象超类,vtkAbstractArray是数组对象的抽象超类。此类定义了所有子类都必须支持的API。数据类型必须是可分配和copy-constructible,但没有关于其类型的其他假设。这个数组的大多数子类以标量或标量元组的形式处理数值数据。程序可以使用IsNumeric()方法检查vtkAbstractArray的实例是否包含数字。也可以通过尝试将数组安全地向下转换到vtkDataArray实例来测试这一点,尽管这假定所有数值数组都将始终从vtkDataArray派生。每个数组都有一个字符串名。数组的命名在实例化时自动发生,但您可以使用SetName()方法自由更改此名称。(数组名称用于数据操作。)

public abstract class vtkDataArray : vtkAbstractArray

数据数组的抽象超类。vtkDataArray是包含数字数据的数组对象的抽象超类。它扩展了vtkAbstractArray中定义的API。vtkDataArray是数据数组对象的抽象超类。此类定义了所有数组对象都必须支持的API。请注意,此类的具体子类以(char、int等)形式表示数据,并且通常具有专门的更有效的方法来操作此数据(例如,获取指向数据的指针或获取/插入(char、int等)形式的数据)。假设vtkDataArray的子类包含数据,这些数据的组件在转换为double和从double转换时是有意义的。

public class vtkUnsignedCharArray : vtkDataArray

无符号字符的动态、自调整数组。vtkUnsignedCharArray是类型为unsigned char的数值数组。它提供了插入和检索值的方法,并将自动调整自身大小以容纳新数据。

public virtual void SetName(string _arg);

public virtual string GetName();

设置/获取数组的名字

public virtual void SetNumberOfComponents(int _arg);

public int GetNumberOfComponents();

设置/获取组件的尺寸(n)。必须大于等于1。请确保在分配前已设置此选项。

public virtual void SetNumberOfTuples(long number);

设置数组中元组(一个元件组)的数量。请注意,这可能会根据组件的数量分配空间。还要注意,如果执行分配,则不会执行复制,因此现有数据将丢失(如果寻求数据保存,则可以使用调整大小的方法)。

public long GetNumberOfTuples();

获取数组中元组(一个元件组)的数量。

public void InsertTuple3(long i, double val0, double val1, double val2);

包括这些方法是为了方便包装。无法从包装语言中使用接受数组的InsertTuple()。可以使用这些方法。

public class vtkDataObject : vtkObject

可视化数据的一般表示,vtkDataObject是可视化数据的通用表示形式。它用于封装用于可视化网络执行的实例变量和方法,以及表示一个非结构化数据。与vtkDataSet进行比较,vtkDataSet是具有几何和拓扑结构的数据。vtkDataObjects用于通过vtkFieldData实例变量表示任意数据存储。这些数据最终必须映射到vtkDataSet的一个具体子类中,然后才能实际显示。

public abstract class vtkDataSet : vtkDataObject

用于定义数据集行为的抽象类。vtkDataSet是一个抽象类,用于定义数据集对象的接口。vtkDataSet还提供了有关提供数据信息的方法,例如中心、边界框和长度。在vtk中,数据集由结构(几何和拓扑)和属性数据组成。该结构隐式或显式地定义为单元格集合。结构的几何图形包含在点坐标和单元插补函数中。vtk中的属性数据是点数据或单元数据。通常,过滤器对点数据进行操作,但有些过滤器可能对单元数据进行操作

public abstract class vtkPointSet : vtkDataSet

用于定义数据集行为的抽象类,vtkPointSet是一个抽象类,为显式使用“点”数组表示几何图形的数据集定义接口。例如,vtkPolyData和vtkUnstructuredGrid要求点阵列指定点位置,而vtkStructuredPoints隐式生成点位置。

public class vtkPolyData : vtkPointSet

具体的数据集表示顶点、直线、多边形和三角形,vtkPolyData是一个数据对象,是vtkDataSet的具体实现。vtkPolyData表示由顶点、直线、多边形和三角形组成的几何结构。还表示点和单元属性值(例如标量、向量等)。vtkPolyData支持的实际单元类型有:vtkVertex、vtkPolyVertex、vtkLine、vtkPolyLine、vtkTriangle、vtkQuad、vtkPolygon和vtkTriangelStrip。vtkPolyData对象的一个重要特性是,可以使用特殊的遍历和数据操作方法来处理数据。这些方法通常比vtkDataSet方法更有效,应尽可能使用。例如,遍历数据集中的单元格时,我们将使用GetCell()。我们将检索表示多边形的单元数组对象(例如使用GetPolys()),然后使用vtkCellArray的InitTraversal()和GetNextCell()方法。注意:由于vtkPolyData是使用vtkCellArray的四个单独实例实现的,以表示0D顶点、1D直线、2D多边形和2D三角形,因此可以创建由混合单元类型组成的vtkPolyData实例。由于类的设计,混合单元类型如何插入到vtkPolyData中,以及它们的处理和呈现顺序都有一定的限制。为了保持单元ID的一致性,并确保正确渲染包含单元数据的单元,用户必须按顶点(vtkVertex和vtkPolyVertex)、直线(vtkLine和vtkPolyLine)、多边形(vtkTriangle、vtkQuad、vtkPolygon)和三角形(VTkTriangelStrip)的顺序插入混合单元。处理混合单元格类型的vtkPolyData时,某些筛选器可能会以不同的方式处理单元格。有些筛选器会将一种类型转换为另一种类型(例如,vtkTriangleStrip转换为vtkTriangles),有些筛选器会要求一种确定的类型(vtkDecimatePro要求三角形;vtkTubeFilter要求直线)。仔细阅读每个筛选器的文档,了解vtkPolyData的每个部分是如何处理的。

public virtual void SetPoints(vtkPoints arg0);

指定点阵列

public vtkPointData GetPointData();

返回指向此数据集的点数据的指针。此方法是线程安全的

public class vtkFieldData : vtkObject

vtkFieldData表示和操作数据字段。字段的模型是数据值的m x n矩阵,其中m是元组数,n是组件数。(元组是矩阵中由n个组件组成的一行。)假设该字段由一组数组组成,这些数组由一个或多个数据组成,其中数组中的数据具有不同的类型(例如int、double、char等),并且每个数组中可能有不同数量的组件。请注意,假设每个数据数组的长度为“m”(即元组数),这通常对应于数据集中的点或单元数。此外,每个数据数组必须有一个字符串名称。(这用于操作数据。)有两种方法可以操纵和连接字段。一般来说,可以通过double类型数据交换操作组件/元组来实现,也可以通过抓取数组并直接操作它们来实现。前者更简单,但执行类型转换,如果数据具有(void)指针之类的不可强制转换类型,或者由于强制转换而丢失信息,则类型转换很糟糕。更高效的方法是管理字段中的每个阵列。使用此方法,您可以创建更快、更高效的算法,而不会丢失信息。

public class vtkDataSetAttributes : vtkFieldData

表示和操作数据集中的属性数据,vtkDataSetAttributes是一个用于表示和操作属性数据(例如标量、向量、法线、纹理坐标、张量、全局ID、谱系ID和字段数据)的类。

public class vtkPointData : vtkDataSetAttributes

表示和操作点属性数据,vtkPointData是一个用于表示和操作点属性数据(例如标量、向量、法线、纹理坐标等)的类。大部分功能由vtkDataSetAttributes处理

public int AddArray(vtkAbstractArray array);

将数组添加到数组列表中。如果已经存在同名数组,则添加的数组将替换它。

public class vtkPolyDataAlgorithm : vtkAlgorithm

仅生成polydata(多边形数据)作为输出的算法的超类

public class vtkVertexGlyphFilter : vtkPolyDataAlgorithm

制作一个vtkPolyData,此过滤器的用途大致相当于vtkGlyph3D过滤器,但此过滤器专门用于具有多个顶点的数据,使渲染结果比glyph过滤器更快、更有序。此过滤器可以将图形或点集作为输入。

public void SetInput(vtkDataObject arg0);

设置此算法的输入。不要重写这些方法,请注意,这些方法支持旧式管道连接。编写新代码时,应使用更通用的vtkAlgorithm的SetInputConnection()。这些方法将输入索引转换为输入端口索引,而不是单个端口内连接的索引。

public virtual void Update();

使此算法的输出保持最新。

public vtkAlgorithmOutput GetOutputPort();

获取与此算法的给定输出端口对应的代理对象。代理对象可以传递给另一个算法的SetInputConnection()、AddInputConnection()和RemoveInputConnection()方法来修改管道连接。

public class vtkCamera : vtkObject

用于三维渲染的虚拟摄像机。vtkCamera是一种用于3D渲染的虚拟摄影机。它提供了定位和定向视点和焦点的方法。还提供了围绕焦点移动的方便方法。更复杂的方法允许操纵计算机图形模型,包括视图上方向向量、剪裁平面和相机透视。

public static vtkCamera New();

构造相机实例,其焦点位于原点,位置=(0,0,1)。视图向上沿y轴,视图角度为30度,剪裁范围为(.1,1000)。

public void SetPosition(double x, double y, double z);

public virtual double[] GetPosition();

设置/获取摄影机在世界坐标中的位置。默认位置为(0,0,1)。

public void SetViewUp(double vx, double vy, double vz);

public virtual double[] GetViewUp();

设置/获取相机的拍照方向。默认值为(0,1,0)。

public void SetUserTransform(vtkHomogeneousTransform transform);

除了位置和方向等实例变量外,还可以添加其他变换供自己使用。此转换连接到摄影机的ProjectOnTransform

public void Zoom(double factor);

值大于1表示放大,值小于1表示缩小。

public abstract class vtkWindow : vtkObject

vtkRenderWindow的窗口超类。vtkWindow是一个抽象对象,用于指定渲染窗口的行为。它包含vtkviewport。

public abstract class vtkRenderWindow : vtkWindow

为渲染器创建一个要绘制的窗口。vtkRenderWindow是一个抽象对象,用于指定渲染窗口的行为。渲染窗口是图形用户界面中的窗口,渲染器在其中绘制图像。提供了同步渲染过程、设置窗口大小和控制双缓冲的方法。该窗口还允许以三维立体渲染。隔行立体渲染类型用于输出到VRex立体投影仪。所有奇数水平线都来自左眼,偶数水平线来自右眼。用户必须使渲染窗口与VRex投影仪对齐

public static vtkRenderWindow New();

构造一个vtkRenderWindow实例,其屏幕大小设置为300x300,边框打开,定位为(0,0),双缓冲打开。

public virtual void SetSize(int arg0, int arg1);

public virtual int[] GetSize();

设置/获取屏幕坐标中窗口的大小(以像素为单位)。

public virtual void AddRenderer(vtkRenderer arg0);

将渲染器添加到渲染器列表中。

public override void SetParentId(IntPtr arg0);

vtkWindow API的虚拟存根。

public override void Render();

要求此RenderWindow拥有的每个渲染器渲染其图像并同步此过程。

public vtkRendererCollection GetRenderers();

返回“渲染”窗口中的渲染器集合。

public abstract class vtkViewport : vtkObject

Viewport的抽象定义。Viewport是控制对象渲染过程的对象。渲染是将几何体、灯光规格和摄影机视野转换为图像的过程。vtkViewport还执行世界坐标、视图坐标(计算机图形渲染坐标系)和显示坐标(显示设备上的实际屏幕坐标)之间的坐标转换。也可以控制某些高级渲染功能(如双面照明)。

public abstract class vtkRenderer : vtkViewport

渲染器抽象定义,vtkrender为渲染器提供了一个抽象定义。渲染器是控制对象渲染过程的对象。渲染是转换几何体的过程,定义灯光,并将摄影机视图转换为图像。vtkrender还执行世界坐标、视图坐标(计算机图形渲染坐标系)和显示坐标(显示设备上的实际屏幕坐标)之间的坐标转换。也可以控制某些高级渲染功能(如双面照明)。

public static vtkRenderer New();

创建具有黑色背景、白色环境光、打开双面照明、viewport(0,0,1,1)和关闭背面消隐的VTK渲染器。

public void AddActor(vtkProp p);

public void RemoveActor(vtkProp p);

向渲染器添加/删除不同类型的道具。这些方法与AddViewProp和RemoveViewProp相同。

public void SetActiveCamera(vtkCamera arg0);

指定要用于此渲染器的摄影机。

public vtkCamera GetActiveCamera();

获取当前摄像机。如果尚未将摄影机指定给渲染器,则会自动创建一个新的摄影机。这不会重置相机。

public virtual void SetBackground(double _arg1, double _arg2, double _arg3);

public virtual void GetBackground(ref double _arg1, ref double _arg2, ref double _arg3);

使用rgb颜色规范设置/获取渲染屏幕的背景色。

public void ResetCameraClippingRange();

基于可见actors的边界重置摄影机剪裁范围。这样可以确保没有道具被切断

public virtual void Clear();

将图像清除为背景色。

public virtual void Render();

创建一个图像。这是一个超类方法,它将调用vtkrender子类的DeviceRender方法。

public void ResetCamera();

根据可见的actors自动设置相机。摄影机将重新定位以查看actors的中心点,并沿其初始视图平面法线(即从摄影机位置到焦点定义的向量)移动,以便可以看到所有actors。

public void RemoveAllViewProps();

从actors列表中删除所有actors。

public virtual void SetBackground2(double _arg1, double _arg2, double _arg3);

public virtual double[] GetBackground2();

使用rgb颜色规范为渐变背景设置/获取渲染屏幕的第二种背景色。

public virtual void SetGradientBackground(bool _arg);

public virtual bool GetGradientBackground();

设置/获取此场景是否具有渐变背景。默认设置为关闭。使用SetBackground()方法设置底部颜色,使用SetBackground2()方法设置顶部颜色

public virtual void SetViewport(double _arg1, double _arg2, double _arg3, double _arg4);

指定要在渲染窗口中绘制的场景的位置。坐标表示为(xmin,ymin,xmax,ymax),其中每个坐标为0<=坐标<=1.0。左下角为0,0。右上角为1,1。

public class vtkRenderWindowInteractor : vtkObject

vtkRenderWindowInteractor-独立于平台的渲染窗口交互,包括拾取和帧速率控制。

public virtual vtkRenderWindow GetRenderWindow();

public void SetRenderWindow(vtkRenderWindow aren);

设置/获取由该对象控制的渲染窗口。

public virtual void SetInteractorStyle(vtkInteractorObserver arg0);

操纵杆/轨迹球/新模式之间的外部切换。初始值是VTKInteratorStyleSwitch对象。

public virtual void Initialize();

为处理事件做好准备。在交互程序工作之前,必须调用它。

public virtual void Render();

渲染场景。只需将render调用传递到关联的vtkRenderWindow。

public class vtkInteractorObserver : vtkObject

用于观察vtkRenderWindowInteractor调用的事件的类的抽象超类。VTKInteratorObserver是一个抽象超类,用于观察vtkRenderWindowInteractor调用的事件的子类。这些子类通常是与场景中的actors交互或以交互方式探测场景以获取信息的对象。VTKInteratorObserver定义方法SetInteractor(),并启用和禁用VTKInteratorObserver对事件的处理。使用方法EnabledOn()或SetEnabled(1)打开interactor观察器,使用方法EnabledOff()或SetEnabled(0)关闭interactor。初始值为0。为了支持对象的交互操作,此类(和子类)调用事件StartInteractionEvent、InteractionEvent和EndInteractionEvent。当vtkInteractorObserver进入需要快速响应的状态(鼠标移动等)时,将调用这些事件。例如,这些事件可用于设置所需的更新帧速率(StartInteractionEvent)、操作数据或更新管道(InteractionEvent),以及将所需帧速率设置回正常值(EndInteractionEvent)。启用或禁用交互观察者时,将调用另外两个事件EnableEvent和DisableEvent。

public class vtkInteractorStyle : vtkInteractorObserver

为渲染窗口提供事件驱动接口(定义轨迹球模式)。VTKInteratorStyle是实现大多数运动控制程序的基类,它定义了一个事件驱动接口来支持vtkRenderWindowInteractor。vtkRenderWindowInteractor实现了依赖于平台的键盘/鼠标和计时器控制,它将事件转发给VTKInteratorStyle。vtkInteractorStyle实现了“操纵杆”式的交互。也就是说,按住鼠标键会生成一系列事件,这些事件会导致连续操作(例如,旋转、平移、缩放)。(VTKInteratorStyleTrackball类实现了抓取和移动样式。)

此类的事件绑定包括以下内容:

-键盘按下 j / 键盘按下 t:在操纵杆和轨迹球样式之间切换。在操纵杆样式中,只要按下鼠标按钮,运动就会持续发生。在轨迹球样式中,当按下鼠标按钮且鼠标指针移动时,会发生运动。

-键盘按下 c / 键盘按下 a:在相机和actor模式之间切换。在相机模式下,鼠标事件会影响相机位置和焦点。在actor模式下,鼠标事件会影响鼠标指针下的actor。

-鼠标左键:围绕其焦点旋转相机(如果相机模式)或围绕其原点旋转actor(如果actor模式)。旋转方向是从渲染器viewport的中心向鼠标位置旋转。在操纵杆模式下,旋转的大小由鼠标距渲染窗口中心的距离决定。

-鼠标中键:平移摄影机(如果摄影机模式)或平移actor(如果actor模式)。在操纵杆模式下,平移的方向是从viewport中心朝向鼠标位置平移。在轨迹球模式下,运动方向是鼠标移动的方向。

-鼠标右键:缩放相机(如果相机模式)或缩放actor(如果actor模式)。如果鼠标位置在viewport的上半部分,则放大;如果鼠标位置在下半部分,则缩小。在操纵杆模式下,缩放量由鼠标指针与窗口水平中心线的距离控制。

-键盘按下 3:切换渲染窗口进入和退出立体模式。默认情况下,将创建红-蓝立体对。一些系统支持Crystal Eyes LCD立体眼镜;您必须在渲染窗口上调用setTereoTypeToCrystalStaleYes()。

-按e键:退出应用程序。

-按f键:到拾取的点

-按p键:执行拾取操作。渲染窗口交互器具有用于拾取的vtkCellPicker的内部实例。

-按r键:沿当前视图方向重置相机视图。使actor居中并移动摄影机,以便所有actor都可见。

-按键s:修改所有actor的表示,使其成为曲面。

-按u键:调用用户定义的函数。通常,此按键将弹出一个可输入命令的交互器。键入u将调用vtkRenderWindowInteractor上的UserCallBack(),后者将调用vtkCommand的UserEvent。换句话说,要定义用户自定义的回调,只需向vtkRenderWindowInteractor对象上的vtkCommand的UserEvent添加一个订阅。

-按w键:修改所有actor的表示,使其成为线框。

VTKInteratorStyle可以被继承,以提供新的交互样式,并提供了一种能力,可以覆盖任何默认的鼠标/键盘操作,这些操作负责当前处理轨迹球或操纵杆样式。请注意,这个类将触发各种各样的事件,这些事件可以使用事件处理程序进行订阅,例如LeftButtonPressEvent、LeftButtonReaseEvent、MiddleButtonPressEvent、MiddleButtonReaseEvent、RightButtonPressEvent、RightButtonReaseEvent、EnterEvent、LeaveEvent、KeyPressEvent、KeyReleaseEvent、CharEvent、ExposeEvent、ConfigureEvent、TimerEvent、MouseMoveEvent、

public class vtkInteractorStyleTrackballCamera : vtkInteractorStyle

相机的交互式操作。VTKInteratorStyleTrackBallCamera允许用户交互操作(旋转、平移等)摄影机和场景的viewpoint。在轨迹球交互中,特定的鼠标绑定的相关联的相机运动与鼠标运动的大小成比例。例如,鼠标左键按下后小幅运动会导致相机围绕其焦点的旋转发生小的变化。对于三键鼠标,左键用于旋转,右键用于缩放,中键用于平移,ctrl+左键用于旋转。(使用较少的鼠标按钮,ctrl+shift+left按钮用于缩放,shift+left按钮用于平移。)

public class RenderWindowControl : UserControl

用于Windows窗体应用程序的vtkRenderWindow类的UserControl派生实现。此UserControl的客户端区域完全由vtkRenderWindow的实例填充。

public Control Parent { get; set; }

获取或设置控件的父容器。返回结果: 表示控件的父控件或容器控件的System.Windows.Forms.Control。

public virtual DockStyle Dock { get; set; }

获取或设置停靠到其父控件的控件边框,并确定控件与其父控件一起调整大小的方式。

public vtkRenderWindow RenderWindow { get; }

通过此属性,可以访问填充客户端区域的vtkRenderWindow。

public virtual void Refresh();

强制控件使其客户端区域无效,并立即重新绘制自身和所有子控件。

public class vtkCollection : vtkObject

创建和操作未排序的对象列表。vtkCollection是用于创建和操作对象列表的常规对象。列表未排序,允许重复条目。vtkCollection还用作特定类型对象列表的基类。

public class vtkRendererCollection : vtkCollection

渲染器列表。vtkRendererCollection表示并提供操作渲染器列表(即vtkRenderer和子类)的方法。该列表未排序,允许重复条目。

public vtkRenderer GetFirstRenderer();

获取列表中的第一个渲染器。在列表末尾时返回NULL。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
ActiViz是一个基于C#的开源数据可视化库,它提供了一系列用于创建和呈现2D和3D图形的功能。如果你想学习ActiViz,以下是一些学习点滴: 1. 理解ActiViz的基本概念:开始学习之前,了解ActiViz的基本概念是很重要的。了解ActiViz的工作原理、主要组件和使用方式,可以帮助你更好地理解和应用它。 2. 安装和配置ActiViz:在开始使用ActiViz之前,你需要将其安装到你的开发环境中。阅读官方文档或教程,按照指示进行安装和配置。 3. 学习ActiViz的API:ActiViz提供了丰富的API,用于创建和操作图形对象。学习这些API的用法和功能,可以帮助你更好地使用ActiViz来实现你的需求。 4. 创建基本图形对象:开始学习ActiViz时,从创建一些基本的图形对象开始是一个不错的选择。尝试创建点、线、多边形等基本图形对象,并学习如何对它们进行操作和渲染。 5. 了解数据可视化技术:ActiViz最常用的用途之一是数据可视化。学习如何使用ActiViz来可视化不同型的数据,如二维数据、三维数据、图像数据等,可以帮助你更好地应用ActiViz来分析和展示数据。 6. 阅读官方文档和示例代码:ActiViz有详细的官方文档和示例代码,可以帮助你更深入地了解和使用ActiViz。阅读官方文档和运行示例代码,可以帮助你学习一些高级功能和技巧。 7. 参与开源社区:ActiViz是一个开源项目,有一个活跃的社区。参与到ActiViz的开发和讨论中,可以帮助你与其他开发者交流和学习,同时也可以为ActiViz的发展做出贡献。 希望这些学习点滴对你有帮助!祝你学***

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值