文档介绍:第5章复杂造型
在前面的章节中,我们介绍了通过使用基本造型,来创建多个单一的物体造型,即使在复杂,也不过是多个基本造型的简单结合,这些并不能满足我们创建复杂形体的需求,因为有些复杂形体并不能通过基本造型而得来。这时就应该考虑到使用数学几何中最基本的点、线、面来构造造型。
使用点来构造造型—PointSet节点
PointSet节点用来创建一个点的几何形态,通常作为造型节点中的geometry域当作域值来使用。
其节点语法如下:
PointSet{
exposedField SFNode color NULL
exposedField SFNode coord NULL
}
color域用来为个别的点进行着色。通常该域值为color节点,color节点的语法很简单,仅包含一个域color。如下:
使用点来构造造型—PointSet节点
Color{
ExposedField MFColor color []
}
其颜色列表中第一种颜色用来给第一点着色,第二种颜色用来给第二点着色。颜色列表中的颜色数至少应该和坐标列表中的坐标数相等。该域值的确省值为NULL,即空的列表。
Coord域的值为一个节点,该节点包含了用来进行点定位的每个点的坐标。通常该域值为Coordinate节点。说到这里就必须介绍Coordinate节点。
使用点来构造造型—PointSet节点
Coordinate节点包含了一张坐标列表。其可以只包含一个域值point。其语法定义如下:
Coordinate{
ExposedField MFVec3f point []
}
point域提供了一张三维坐标列表,用作一个造型的几何坐标。其坐标都是三维坐标,即X、Y和Z方向上与原点的距离,该域值的缺省值为空。
Coord域的缺省值为NULL,表示空的列表,即不创建任何点。
使用线来构造造型—IndexedLineSet节点
IndexedLineSet节点创建了有关线的几何造型,包括折线和直线。该节点也常作为造型节点的geometry域值。
其节点语法如下:
IndexedLineSet{
ExposedField SFNode coord NULL
Field MFInt32 coordIndex []
ExposedField SFNode color NULL
Field MFInt32 colorIndex []
Field SFBool colorPerVertex TRUE
EventIn MFInt32 set_coordIndex
使用线来构造造型—IndexedLineSet节点
EventIn MFInt32 set_colorIndex
}
coord域的值为一列出了所有构造线坐标的集合列表。该域值的缺省值为NULL,为一空列表,表示不创建任何直线。
CoordIndex域的值指定了一张用来描述一条或多条折线路径的索引列表。每一个索引都指定了coord域所提供的坐标列表中的一个坐标。该域值的缺省值为空,表示不创建任何直线。
一张坐标索引表可以提供一条或多条折线路径的列表。每一条折线的连接方式都是按坐标索引列表的索引值的顺序从前向后排列的,直到索引表的末尾或者一个为-1的索引值为止,下一条折线是从-1的索引值开始的,直到索引表的末尾或者另外一个-1的索引值为止。
使用线来构造造型—IndexedLineSet节点
Color域或colorPerVertex域均用来给所创建的线着色,这两个域值将在下面的章节中详细说明。
坐标索引表通过输入接口set_coordIndex和set_colorIndex来改变域值。
。
使用面来构造造型—IndexedFaceSet节点
在VRML中,面的创建是通过IndexedFaceSet节点来实现的。IndexedFaceSet节点创建了面的几何图形,通常作为造型节点的geometry域的值。
其节点语法如下:
IndexedFaceSet{
ExposedField SFNode coord NULL
Field MFInt32 coordIndex []
ExposedField SFNode texCoord NULL
Field MFInt32 texCoordIndex []
ExposedField SFNode color NULL
Field MFInt32 colorIndex []
Field SFBool colorPerVert