VRML---第二章第四部分(造型的着色设计)

       通过Appearance节点的Material节点对Shape造型进行着色,要想对不同的造型进行着色,就必须创建多个Shape节点。
       通过PointSet、IndexedLineSet、IndexedFaceSet 或ElebationGrid节点的颜色Color节点也可以对造型的点、直线、平面和坐标进行着色。

颜色节点

  着色 方式分为两种:一是利用Material材质节点的 emissiveColor 的域值添加颜色。二是利用点集和线集的color域的Color颜色节点。
   注意不能使用diffuseColor的域值添加颜色,因它不受光源影响,没有光源的情况下,浏览器显示为黑色。 Color颜色节点优于Material材质节点的 emissiveColor 的设置。

点集节点

语法:

PointSet{

#color域的域值用于设定在点集中用于对点进行着色的颜色列表。该域值通常为Color节点。

          exposedField SFNode  color NULL

    }

其颜色列表中第一种颜色用来给第一个点着色,第二种颜色用来给第二个点着色,依此类推。颜色列表中的颜色数至少应该和坐标列表中的坐标数相等。

线集节点

语法:

            IndexedLineSet{
            #color域的域值用于设定在面集中对平面进行着色的颜色列表。

       exposedField SFNode   color        NULL

#colorIndex域的域值用于设定一个颜色索引列表,用来指定要使用的颜色。其域值必须大于或等于0,且为整型。该域值的默认值为空。

       field         MFInt32  colorIndex     [ ]

#colorPerVertex域的域值用于设定Color节点颜色列表中的颜色是用于折线还是用于折线的坐标索引。当该域值为TRUE时,则颜色列表中的颜色用于每一个折线的每一个坐标索引,当域值为FALSE时,则表示用于每一个折线。

       field         SFBool     colorPerVertex  TRUE

   }


      如果colorPerVertex域为TRUE,且colorIndex域为非空时,其颜色索引列表中第一个颜色索引用来给第一个坐标索引着色,第二种颜

色索引用来给第二个坐标索引着色, 依此类推 颜色列表中的颜色数至少应该和坐标索引数相等。

     如果colorPerVertex域为FLASE,且colorIndex域为非空时,其颜色索引列表中第一个颜色索引用来给第一条折线着色,第二种颜色
索引 用来给第二条折线着色,依此类推。颜色列表中的颜色数至少应该和折线数相等。



例子:

#VRML V2.0 utf8 
Shape{
    geometry  IndexedLineSet{     #线集节点
          coord  Coordinate {       #坐标节点
               point[
				   0 3 0,3 0 0,0 -3 0, -3 0 0, 0 0 3
			   ]                     #端点坐标
           }
          coordIndex[
			  0,3,4,-1, 3,2,4,-1, 2,1,4,-1,1,0,4
		   ]                           #线段连接顺序索引
          colorPerVertex  TRUE         #着色方式基于端点
          color  Color{                 #颜色节点
               color[
				   1 0 0, 0 1 0, 1 1 0, 1 0 1, 1 1 1
			   ]
          }
    }
}



























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值