虚拟现实语言vrml“挤出造型节点”——练习3

 实验目的:

         熟练掌握Extrusion挤出造型节点

实验三:

         创建一个截面轮廓线为封闭三角形,龙骨线为封闭的正六边形的折线,挤压一个三棱柱边框的挤压造型,可以设定挤压时截面的放大缩小以及旋转形成不同的造型,并使用材质节点实现着色,并保存。

代码:

Shape
{
   appearance Appearance
   {
	   	material Material
	   {
		 diffuseColor       0 0.8  0.2
		  ambientIntensity  0.2
		  specularColor	    0 0.8 0.5
		  emissiveColor	    0 0.2 0.5
		  shininess	        0.1
		}
   }

   geometry	Extrusion 
   {
	 crossSection      #截面
	 [

		 0.9   0.9
		 0	  -0.9
		-0.9   0.9
	     0.9   0.9 
	 ]

	 spine             # 折线路径 (骨架)
	 [
	 2 0  0            #1
	 1 0  1.732        #2   
	-1 0  1.732        #3
	-2 0  0            #4
	-1 0 -1.732        #5
	 1 0 -1.732        #6
	 2 0  0            #7

	 ]

	 solid	TRUE
	 scale             #缩放[x z]
	 [
	  2 1
	  1 1
	  2 1
	  1 1
	  2 1
	  1 1
	  2 1
	 ]

	 creaseAngle 0.9   #折痕角(平滑)
	 orientation       #旋转[x,y,z,r]
	 [
		1 0 1 1
		1 0 1 1
		1 0 1 1
		1 0 1 1
		1 0 1 1
		1 0 1 1
		1 0 1 1
	 ]
   }
}


解释:

Extrusion:挤出造型节点

crossSection [ x  z ]:截面

Spine [x y z ]:龙骨线

scale [x z]:缩放

orientation [x y z r]:旋转

solid TRUE/FALSE:设定挤出造型是否构成实体。

 creaseAngle 0 :设定褶痕角的阈值。若相邻面法线夹角小于设定域值则做平滑处理,否则不处理

 diffuseColor       0 0 0:漫反光色
 ambientIntensity  0    :材料表面的对比度
 specularColor    0 0 0:材质的镜面反射光色
 emissiveColor    0 0 0:材料的发射光色
 shininess            0     :材料表面亮度

挤出造型节点固定语法结构:

Shape

{

    appearance Appearance

    {

         material Material{}

     }

geometry Extrusion {}

}

crossSection 域值说明:

crossSection     
     [

         0.9   0.9
         0      -0.9
        -0.9   0.9
         0.9   0.9 
     ]

crossSection[ x  z ]: 指截面的形状(二维),本题指封闭的三角形。取的是坐标上x与z的点。

截面——封闭三角形
1-1示意图

 如1-1示意图,随机取三个点,然后依次连接圈1至圈3坐标点,得到一条封闭的折线,作为放样的截面轮廓线。

截面
效果示意图

  spine 域值说明:

spine             # 折线路径 (骨架)
     [
     2 0  0               #1
     1 0  1.732        #2   
    -1 0  1.732        #3
    -2 0  0               #4
    -1 0 -1.732        #5
     1 0 -1.732        #6
     2 0  0               #7

     ]

spine [ x  y  z ]:是一组三维路径,由crossSection定义截面,截面的几何中心点会沿着这个路径画出来。

龙骨线——正六边形折线
1-2示意图

 如1-2示意图,随机取边长,由勾股定理计算出6个点的位置,然后有序的连接这些点,得到一条封闭的正六边形的折线,这就是挤出造型的牵引轨迹,也叫龙骨线。

注意:这里龙骨线的坐标点的数目是7个。

龙骨线
效果示意图

 scale 域值说明:

scale             #缩放[x z]
     [
      2 1
      1 1
      2 1
      1 1
      2 1
      1 1
      2 1
     ]

scale[x z]:设定二维截面轮廓线的x和z方向上的缩放系数。他的缩放比例系数要与spine域设定的龙骨线坐标点一一对应。(取值必须大于等于0)

这里龙骨线的坐标点的数目是7个,所以缩放系数也应该有7个

 这里我采用的是一个点 x放大(2 1),另一个不缩放(1 1),依次交叉着来。

缩放后
效果示意图

orientation  域值说明:

orientation       #旋转
     [
        1 0 1 1
        1 0 1 1
        1 0 1 1
        1 0 1 1
        1 0 1 1
        1 0 1 1
        1 0 1 1
     ]

orientation[x,y,z,r]:设定沿龙骨线坐标点的挤出造型的旋转参数。取4个值,前面3个是一个旋转轴,第四个是旋转的角度(弧度)。

注意:旋转的参数要与龙骨线坐标点的数目相同。

这里龙骨线的坐标点的数目是7个,所以旋转参数也应该有7个。

旋转后
效果示意图

有误欢迎指出!!!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值