虚拟现实语言vrml“线集节点”练习1
第一次学编程,没想到第一个接触的是vrml语言。那就浅浅的做个笔记吧。
有不对的地方,欢迎指点!!
基本几何造型
IndexedLineSet (线集节点)
要求:
创建一个底部为正六边形的七面体轮廓线造型,利用材质节点和线集节点的颜色相关域制作纯色造型效果。
代码:
Shape { appearance Appearance { material Material { diffuseColor 0.5 0.5 0.5 } } geometry IndexedLineSet { coord Coordinate { point [ 0 3 0 #0 1.732 0 -1 #1 1.732 0 1 #2 0 0 2 #3 -1.732 0 1 #4 -1.732 0 -1 #5 0 0 -2 #6 ] } coordIndex [ #side 0 1 -1 0 2 -1 0 3 -1 0 4 -1 0 5 -1 0 6 -1 #bottom 1 6 5 4 3 2 1 -1 ] colorPerVertex FALSE color Color { color [ 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 ] } } }
运行结果:
理解:
Shape{}:节点
Appearance{}:外观特征域
Material{}:材质属性
diffuseColor 0.5 0.5 0.5 :漫反光色,值为0.5 0.5 0.5
geometry:几何形状域
IndexedLineSet{}:线集节点
coord:设置线造型的端点(点在坐标轴中的位置)
Coordinate{}:设置一系列用以创建一条直线或多条折线路径的坐标索引列表
coordIndex []:造型着色
colorPerVertex TRUE:设置对线造型的渲染是基于端点,还是基于线段,TRUE是基于端点
Color:用来为线单独着色
线集造型基本语法结构:
Shape {
appearance Appearance{
material Material { }
}
geometry IndexedLineSet { }}
coord Coordinate
{
point
[
0 3 0 #0
1.732 0 -1 #1
1.732 0 1 #2
0 0 2 #3
-1.732 0 1 #4
-1.732 0 -1 #5
0 0 -2 #6
]
}确定点位置:这里指每个点的三维( x y z )位置 ,#后面的是这7个点从0开始排序,分别是0,1,2,3,4,5,6,代表点的序号。
此模型我设的高为6,正六边形边为2,然后在纸上画个正六边形+二维坐标轴(x,z),利用勾股定理找到点的位置,由于正六边形取不到整数,所以这里取的根号三的近似值1.732。
coordIndex
[
#side
0 1 -1
0 2 -1
0 3 -1
0 4 -1
0 5 -1
0 6 -1
#bottom
1 6 5 4 3 2 1 -1
]连线:例:0 1 -1 是将序号为0和1的点连接起来,-1表示这条折线结束。
侧面的每个点都要与序号为0的点相连一下,底部的点则要依次连接,(注意法向,封底的正面要朝外,只是做轮廓线可以不管,做面的时候一定要理清楚点序)
color Color
{
color
[
0 1 0
1 1 1
1 0 1
1 0 0
0 1 1
0 0 1
1 1 0
]}
着色:上面的值代表R G B,从第一个(0 1 0)开始依次往下对应coord Coordinate中的线的每条颜色。
注意:
渐变:一条线因顶点色的不同,线会从一个顶点颜色渐变成另一个顶点颜色。
纯色:是线着色方式,以线为单位,给与一种颜色。