虚拟现实语言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中的线的每条颜色。

注意:

        渐变:一条线因顶点色的不同,线会从一个顶点颜色渐变成另一个顶点颜色。

       纯色:是线着色方式,以线为单位,给与一种颜色。