📄 vrml第十二章到第二十二章.txt
字号:
color可见域的值指定了用作造型几何颜色列表。每一种颜色被说明为3个浮点值,每一个分别为颜色的红、绿和蓝值。当Color节点在使用颜色索引的几何节点中被指定时,其列表第1种颜色索引为0,第2种索引为1,依此类推。(可以使用事件接口)
Color节点通常是作为造型节点的color域值出现的,并且在不同的造型节点中出现时有着不同的着色方式。
1.海拔栅格着色
ElevationGrid {
xDimension 0 #域值类型 SFInt32
xSpacing 0.0 #域值类型 SFFloat
zDimension 0 #域值类型 SFInt32
zSpacing 0.0 #域值类型 SFFloat
height [] #域值类型 MFFloat
color NULL #域值类型 SFNode
colorPerVertex TRUE #域值类型 SFBool
normal NULL #域值类型 SFNode
normalPerVertex TRUE #域值类型 SFBool
texCoord NULL #域值类型 SFNode
ccw TRUE #域值类型 SFBool
solid TRUE #域值类型 SFBool
creaseAngle 0.0 #域值类型 SFFloat
set_height #输出接口 MFFloat
}
xDimension、zDimension、zSpacing、xSpacing、height、set_height、ccw、creaseAngle和solid域值的设置见前面的章节。
color指定一个节点提供用来对海拔栅格中平面进行着色的颜色。典型的color域值包含Color节点。
colorPerVertex指定为TRUE或FALSE,表示Color节点颜色列表中的颜色是用于海拔栅格的栅格方块(FALSE)还是每个栅格点(TRUE)。
★使用技巧:一些VRML浏览器不支持海拔栅格点着色(colorPerVertex域值为TRUE),这些浏览器将取栅格方块每个角落颜色的平均值,然后用此平均值对整个方块着色。
当colorPerVertex域值为FALSE时,由color域颜色列表中得到的颜色用于海拔栅格的每一块。第1种颜色用于栅格第1行的第1个方块,第2种颜色用于第1行的第2个方块,依此类推。海拔栅格中的每一方块都必须有一种颜色与之对应。海拔栅格中栅格方块数目的计算方法是:(xDimension-1)×(zDimension-1)
当colorPerVertex域值为TRUE时,由color域颜色列表中得到的颜色用于海拔栅格的每个栅格点。第1种颜色用于栅格第1行的第1个栅格点,第2种颜色用于第1行的第2个栅格点,依此类推。海拔栅格中的每一栅格点都必须有一种颜色与之对应。海拔栅格中栅格点数目的计算方法是:xDimension×zDimension
color可以使用事件接口。
海拔栅格的颜色可以由Color节点,Material节点或两者用以下规则设置:
1)如果没有Color节点和Material节点被指定,那么海拔栅格中的所有平面被设置为白色的。
2)如果没有Color节点被指定,但提供了Material节点,那么海拔栅格中的所有平面的颜色由Material节点中的颜色来确定,海拔栅格平面的绘制效果取决于Material节点diffuseColor域和emissveColor域和的使用。
3)如果指定了Color节点,但没有指定Material节点,那么海拔栅格中的所有平面的颜色由Color节点中的颜色来确定。这些颜色被当作放射性颜色来处理,以生成发光造型。
4)如果同时指定了Color节点和Material节点,那么海拔栅格中的所有平面的整体属性由Material节点中得来。但Material节点中的diffuseColor域和emissiveColor域将被忽略。而由Color节点中的颜色控制造型表面的着色。
5)ElevationGrid节点的其他域(texCoord域、normal域和normalPerVertex域)在第19章介绍。
在下面的例子中将分别通过Color节点为空间中的海拔栅格平面和栅格顶点着色,其方法就是设置Color节点中的colorPerVertex域值分别为FALSE或者TRUE。第1个例子将创建一个6×6的空间海拔栅格,并且为每一个栅格面指定了不同的颜色。
[海拔栅格面着色.wrl]
[海拔栅格点着色.wrl] 通过将colorPerVertex域值设置为TRUE,为栅格点着色。而栅格顶点之间的栅格面将自动用平滑过渡的颜色梯度着色。
2.空间点着色
PointSet {
coord NULL #域值类型 SFNode
color NULL #域值类型 SFNode
}
color指定一个节点提供用于点集合中用于着色的颜色。典型的color域包括Color节点。第1个点用颜色列表中的第1种颜色着色,第2个点用第2种颜色着色,依此类推。颜色列表中的颜色数必须至少与坐标列表中的坐标数相等。(可以使用事件接口)
点的颜色可以由Color节点、Material节点或两者用以下规则设置;
1)如果没有Color节点和Material节点被指定,那么点集合中所有点被设置为黑色。
2)如果没有Color节点被指定,但提供了Material节点,那么点集合中所有点的颜色由Material节点中的颜色来确定。
3)如果指定了Color节点,但没有指定Material节点,那么点集合中的所有点的颜色由Color节点中的颜色来确定。
4)如果Color节点和Material节点均被指定,那么点集中的所有点的整体属性,如透明度,由Material节点来确定。但Material节点中的diffuseColor域和emissiveColor域将被忽略。而由Color节点中的颜色控制造型表面的着色。
[空间点着色.wrl] 用Color节点为一组空间点着色。
3.空间线着色
通过Color节点也可以为IndexedLineSet节点所创建的空间折线着色。
IndexedLineSet {
coord NULL #域值类型 SFNode
coordIndex [] #域值类型 MFInt32
color NULL #域值类型 SFNode
colorIndex [] #域值类型 MFInt32
colorPerVertex TRUE #域值类型 SFBool
set_coordIndex [] #输入接口 MFInt32
set_colorIndex [] #输入接口 MFInt32
}
color指定一个节点提供用来对线集合中的直线进行着色的颜色。典型的color域包括Color节点。
当对空间折线中的折线着色时,colorIndex域的值提供一个颜色索引列表指定要使用的颜色。每一个值为一个整数索引,用此值从color域的颜色列表中指定一种颜色。
colorPerVertex域指定为TRUE或FALSE,表示Color节点颜色列表中的颜色是用于每一个折线(FALSE)还是用于每一折线的每一坐标索引(TRUE)。
当colorIndex域的值为非空时:
colorPerVertex域的值为FALSE时,表示由颜色索引列表得来的颜色索引用于空间折线中每一折线。第1个颜色索引为第1条折线指定颜色,第2个颜色索引为第2条折线指定指定的颜色,依此类推。线集合中的每一个折线必须有一个颜色索引。
colorPerVertex域的值为TRUE时,表示由颜色索引列表得来的颜色索引用于线集合中每一坐标索引。第1个颜色索引为第1个坐标索引指定颜色,第2个颜色索引为第2个坐标索引指定指定的颜色,依此类推。每一坐标索引必须必须有一个颜色索引,包括作为折线分割符的坐标索引-1。
★使用技巧:一些VRML浏览器不支持直线着色(colorPerVertex域的值为TRUE)。这些浏览器将折线坐标的颜色取平均值,然后用此平均值对整个折线着色。
当colorIndex域的值为空:时
colorPerVertex域的值为FALSE,表示将颜色列表中的颜色按顺序一一对应于每条折线,列表中的第1种颜色用于第1条折线,第2种颜色用于第2条折线,依此类推。空间折线中每一条折线在颜色列表中必须有一种颜色与之对应。
colorPerVertex域的值为TRUE,表示在colorIndex域中的坐标索引被用作颜色索引。第1个坐标索引同时指定第1个坐标以及此坐标的颜色,第2个坐标索引指定第2个坐标及其颜色,依此类推。
color可以使用事件接口。
colorIndex可以使用事件接口。
直线的颜色可以由Color节点、Material节点或两者用以下规则设置:
1)如果没有Color节点和Material节点被指定,那么线集中的所有直线被设置为白色。
2)如果没有Color节点被指定,但提供了Material节点,那么线集中所有直线的颜色由Material节点中的颜色来确定。
3)如果指定了Color节点,但没有指定Material节点,那么线集中的所有直线的颜色由Color节点中的颜色来确定。
4)如果同时指定了Color节点和Material节点,那么线集中的所有直线的整体属性,如透明度,由Material节点来确定。但Material节点中的diffuseColor域和emissiveColor域将被忽略。而由Color节点中的颜色控制造型表面的着色。
在所有情况下,空间折线的颜色都被选为放射性的,以生成发光的直线造型。
[着色空间折线.wrl] 本例创建了一簇向外发散的空间直线,并且有渐变的着色效果。
4.空间面着色
与前面介绍的一样可以通过Color节点为空间面着色。
IndexedFaceSet {
coord NULL #域值类型 SFNode
coordIndex [] #域值类型 MFInt32
texCoord NULL #域值类型 SFNode
texCoordIndex [] #域值类型 MFInt32
color NULL #域值类型 SFNode
colorIndex [] #域值类型 MFInt32
colorPerVertex TRUE #域值类型 SFBool
normal NULL #域值类型 SFNode
normalIndex [] #域值类型 MFInt32
normalPerVertex TRUE #域值类型 SFBool
ccw TRUE #域值类型 SFBool
convex TRUE #域值类型 SFBool
solid TRUE #域值类型 SFBool
creaseAngle 0.0 #域值类型 SFFloat
set_coordIndex #输入接口 MFInt32
set_texCoordIndex #输入接口 MFInt32
set_colorIndex #输入接口 MFInt32
set_normalIndex #输入接口 MFInt32
}
color指定一个节点提供用来对面集中的平面进行着色的颜色。典型的color域包括Color节点。
当对面集中的平面着色时,colorIndex域的值提供一个颜色索引列表指定要使用的颜色。每一个值为一个整数索引,用此值从color域的颜色列表中指定一种颜色。
colorPerVertex域指定为TRUE或FALSE,表示Color节点颜色列表中的颜色是用于每一个面(FALSE)还有用于每一个面的每一坐标索引(TRUE)。
当colorIndex域的值为非空时:
colorPerVertex域的值为FALSE时,表示由颜色索引列表得来的颜色索指定面集中每一个面的颜色。第1个颜色索引为第1个面指定颜色,第2个颜色索引为第2个面指定指定的颜色,依此类推。面集中的每一个面必须有一个颜色索引。
colorPerVertex域的值为TRUE时,表示由颜色索引列表得来的颜色索引用于面集中的每一坐标索引。第1个颜色索引为第1个坐标索引指定颜色,第2个颜色索引为第2个坐标索引指定指定的颜色,依此类推。每一坐标索引必须必须有一个颜色索引,包括作为平面分割符的坐标索引-1指定颜色。
★使用技巧:一些VRML浏览器不支持平面坐标着色(colorPerVertex域的值为TRUE)。这些浏览器将平面坐标的颜色取平均值,然后用此平均值对整个平面着色。
当colorIndex域的值为空:时
colorPerVertex域的值为FALSE,表示将颜色列表中的颜色按顺序一一对应地用于每个面。列表中的第1种颜色用于第1个面,第2种颜色用于第2个面,依此类推。面集中的每一个面在颜色列表中必须在颜色列表中有一种颜色与之对应。
colorPerVertex域的值为TRUE,表示在colorIndex域中的坐标索引被用作颜色索引。第1个坐标索引同时指定第1个坐标以及此坐标的颜色,第2个坐标索引指定第2个坐标及其颜色,依此类推。
color可以使用事件接口。
colorIndex可以使用事件接口。
直线的颜色可以由Color节点、Material节点或两者用以下规则设置:
1)如果没有Color节点和Material节点被指定,那么面集中的所有面被设置为黑色。
2)如果没有Color节点被指定,但提供了Material节点,那么面集中所有面的颜色由Material节点中的颜色来确定,面的绘制效果取决于Material节点diffuseColor域和emissiveColor域的使用。
3)如果指定了Color节点,但没有指定Material节点,那么面集中的所有面的颜色由Color节点中的颜色来确定。这些颜色被当作放射性颜色来处理,以生成发光造型。
4)如果同时指定了Color节点和Material节点,那么面集中的所有面的整体属性,如透明度,由Material节点来确定。但Material节点中的diffuseColor域和emissiveColor域将被忽略。而由Color节点中的颜色控制造型表面的着色。
[着色空间面.wrl] 将所创建的空间面造型的各个面指定了各自不同的颜色。
[着色空间面上的点.wrl] 对point域值中的每一个点指定颜色,而点之间的面将自动地以过渡颜色来填充,形成一些更加真实的空间面效果。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -