通过网格绘制三维对象
- 更新时间2025-08-27
- 阅读时长8分钟
出现在三维场景中的对象是现实对象的图形化表示。三维对象是三维空间中的一个顶点集,各顶点间可能连接,也可能不连接。创建框和创建球面等几何VI为用户定义了简单的几何对象。如需创建几何形状更为复杂的对象,或定义特定的顶点、法向量、索引、颜色和纹理映射等三维对象外观的属性,可通过配置网格而实现。
网格是一组在特定方式下组合后可创建一个三维表面的属性。网格的属性包括顶点、法向量、颜色、纹理坐标,以及描绘或连接顶点的点、线、三角形或多边形。定义网格实际上是定义代表了网格顶点、法向量、颜色和纹理坐标的值的数组。也可定义一个索引数组以指定上述数组中的值应用于网格的哪个方面。最后,定义每个数组中各个值的连接模式。要理解网格,须熟悉下列术语:
- 顶点 - 三维空间中创建网格角点的点。每个顶点由一个x、y和z坐标定义。
- 图元 - 网格的一个独立、可见的面。例如,在一个由三个三角形所组成的网格中,每个三角形是网格的一个图元。图元可以是点、线、三角形、四边形及其他多边形。
- 法向量 - 方向垂直于网格表面的向量。必须定义网格中每个顶点或每个多边形的法向量。网格的法向量定义了网格的表面相对于光源的方向。
在LabVIEW中,可使用创建网格VI创建一个新网格的引用。然后使用场景网格类的属性和方法通过编程配置网格。下列内容为网格的其他相关信息。
绘图模式
网格的绘图模式指定了绘制或连接网格顶点的方式。有如下绘图模式供选择。
点
在每个顶点上绘制一个点。该模式不连接单个的顶点,而是连接出现在三维空间中的点。
线
在一对顶点间绘制非连续的线段。例如,LabVIEW绘制一个有4个顶点的网格,其中包括2条线:V0V1和V2V3。如顶点的总数为奇数,则LabVIEW将忽略最后一个顶点。
线段条带
绘制顶点间从V0到Vn – 1的连续线段,n是顶点的总数。该模式连接了所有顶点,但创建的并不是封闭的多边形。
线段回路
从顶点V0开始在顶点间绘制连续的线段。该模式创建了一个封闭的多边形,但不填充线段包围而成的空间。
三角
绘制一系列三个顶点为一组的非连续三角形并填充每个三角的空间。例如,LabVIEW绘制一个有6个顶点的网格,其中包括2个三角:V0V1V2和V3V4V5。该模式不连接各个三角形。如顶点的总数不是3的倍数,则LabVIEW将忽略最后的1或2个顶点。
三角条带
绘制一系列连续且填充的三角形。LabVIEW将连接各顶点,在三角形的方向形成一条实心三角形带,从而创建对象表面的一部分。例如,第一个三角形连接顶点V0V1V2,第二个三角形连接顶点V2V1V3,第三个三角形连接顶点V2V3V4,依此类推。
三角扇
绘制一系列连续且填充的三角形。每个三角形的第一个顶点都相同,LabVIEW以1为单位递增随后三角形的第二和第三个顶点。由此在V0的中心点周围创建了一片三角扇形。例如,第一个三角形连接顶点V0V1V2,第二个三角形连接顶点V0V2V3,依此类推。
四边形
绘制一系列四个顶点为一组的非连续四边形,并填充每个四边形的空间。例如,LabVIEW绘制一个有8个顶点的网格,其中包括2个四边形:V0V1V2V3和V4V5V6V7。如顶点的总数不是4的倍数,则LabVIEW将忽略最后的1、2或3个顶点。
四边形条带
绘制一系列连续的四边形,并填充每个四边形的空间。例如,LabVIEW绘制一个有8个顶点的网格,其中包括3个四边形:V0V1V3V2、V2V3V5V4和V4V5V7V6。如顶点的总数为奇数,则LabVIEW将忽略最后一个顶点。
多边形
绘制一个连接了从V0到Vn – 1的所有顶点且填充的多边形,n是顶点的总数。顶点的总数必须至少为3,否则LabVIEW无法绘制。同时,多边形不可自身相交。
顶点数组
网格的顶点数组定义了网格中每个顶点的位置。数组的每个元素表示网格中的一个顶点。LabVIEW根据索引数组中的值对数组进行索引。顶点数组是一个簇数组,每个簇中包含了x、y和z值,用于定义三维空间中一个顶点的位置。
索引
索引是一个整数数组,定义了LabVIEW如何对创建网格的各数组进行索引。例如,索引数组中位置为3的元素是0,则颜色数组、顶点数组、法向量数组和纹理坐标数组中位置为3的元素都被索引为0。通过改变这四个数组的元素的索引,可改变网格的外观而不必单个修改各数组中元素的顺序。
颜色绑定模式
网格的颜色绑定模式指定了LabVIEW如何将颜色数组中的元素与一个网格绑定。有如下颜色绑定模式供选择。
颜色数组
网格的颜色数组定义了索引数组中每个顶点的RGBA值。颜色绑定模式指定了LabVIEW如何将颜色应用于该数组。颜色数组是一个簇数组,其中每个簇包含红、绿、蓝、alpha值,用于定义一个颜色。
法向量绑定模式
法向量绑定模式定义了LabVIEW如何将法向量数组中的元素与网格绑定。法向量绑定模式将决定光线在网格表面上反射的方式。有如下法向量绑定模式供选择:
- Overall - 将法向量数组中第一个索引位置的法向量绑定至网格的所有图元。
- Per Primitive - 将不同的法向量与网格中的每个图元绑定。网格的绘图模式定义了图元。例如,将颜色数组第一个索引的法向量与网格中第一个图元绑定。
- Per Vertex - 根据定义的索引,将法向量数组中的法向量与网格的各顶点绑定。必须为网格中的每个定点定义法向量。
- Binding Off - 取消法向量绑定。LabVIEW忽略法向量数组。
法向量数组
网格的法向量数组定义了网格中每条法向量的原点。数组的每个元素表示网格中的一条法向量。法向量绑定模式指定了LabVIEW如何将法向量应用于该数组。法向量数组是一个簇数组,其中每个簇所包含的x、y和z值用于定义一条法向量的原点。
纹理坐标数组
网格的纹理坐标数组定义了纹理与网格表面之间的映射。数组中的每个元素代表一个纹理坐标。网格中的每个顶点都必须定义一个纹理坐标。纹理坐标数组是一个簇数组,其中每个簇包含的s和t值用于定义纹理中的一个坐标。如不启用纹理,LabVIEW将忽略该数组。使用场景对象类属性特殊:纹理可启用三维场景中对象的纹理。
关于修改网格属性以改变网格外观的范例,见labview\examples\Graphics and Sound\3D Picture Control目录下的Using Meshes VI。