![VRML虚拟现实应用技术](https://wfqqreader-1252317822.image.myqcloud.com/cover/952/687952/b_687952.jpg)
2.3.2 简单几何造型节点
1.Box节点
Box节点语法格式如下:
节点名称 域名称 域值 #域及域值类型 Box { size 2.0 2.0 2.0 #SFVec3f }
其中,size域的域值设定了三维立方体几何造型的尺寸大小。该域值为三维数组,第一个数值为立方体在X轴方向的边长尺寸,第二个数值为立方体在Y轴方向的边长尺寸,第三个数值为立方体在Z轴方向的边长尺寸,每个数值之间用空格分隔,这3个数值必须大于零。size域的默认值为2.0 2.0 2.0,是一个以坐标原点为中心,长、宽、高都为2.0单位的立方体几何造型。
【例2-1】 使用Box节点创建一个边长为3×2×3的长方体几何造型。在默认设置下,背景颜色为黑色。示例中,appearance域值没有选择默认值,因为白色无光照效果无法显示长方体的棱线,其详细比较将在后面的外观设计中介绍到。
其实现的源程序代码如下:
#VRML V2.0 utf8 Shape { appearance Appearance { material Material {} } geometry Box{ size 3.0 2.0 3.0 } }
运行程序,效果如图2-9所示。
![](https://epubservercos.yuewen.com/094EA6/3590506304528001/epubprivate/OEBPS/Images/figure_0052_0001.jpg?sign=1739054817-QBmYFls3UZsPHqbNdbWAXPeDVIaZn1Bw-0-b7a37927abc1d138b9277116df186358)
图2-9 使用Box节点创建长方体
2.Cone节点
Cone节点用来创建以坐标原点为中心、以Y轴为对称轴的圆锥体几何造型。
Cone节点的语法格式如下:
节点名称 域名称 域值 #域及域值类型 Cone { bottomRadius 1.0 #SFFloat height 2.0 #SFFloat side TRUE #SFBool bottom TRUE #SFBool }
其中:
(1)bottomRadius域的域值设定圆锥体底面半径尺寸。该域值必须大于零,其默认值为1.0单位。
(2)height域的域值设定圆锥体的高度。该域值必须大于零,其默认值为2.0单位,圆锥体的底面中心位于Y轴-1.0处,顶端位于Y轴1.0处。
(3)side域的域值设定是否创建圆锥体的锥面。如果该域值取TRUE则创建锥面,如果取FALSE则不创建锥面,即不显示圆锥体的锥面。默认值为TRUE。
(4)bottom域的域值设定是否创建圆锥体的底面。如果该域值取TRUE则创建底面,如果取FALSE则不创建底面,即不显示圆锥体的底面。默认值为TRUE。
【例2-2】 使用Cone节点创建一个锥体底面半径和锥体高度均为默认值的完整圆锥体几何造型。
其实现源程序代码如下:
#VRML V2.0 utf8 Shape { appearance Appearance { material Material {} } geometry Cone {} }
运行程序,效果如图2-10所示。
![](https://epubservercos.yuewen.com/094EA6/3590506304528001/epubprivate/OEBPS/Images/figure_0053_0001.jpg?sign=1739054817-YHVUzBqW5WF3Sy1OgwHZnpLJqAiR82Qq-0-10ef7589ab72c98eacf9b0faaf0786ef)
图2-10 设置默认的完整圆锥体几何造型
【例2-3】 创建一个底面半径为3.0、锥体高度为5.0的无底几何造型。
其实现的源程序代码如下:
#VRML V2.0 utf8 Shape { appearance Appearance { material Material {} } geometry Cone { bottomRadius 3.0 height 5.0 side TRUE bottom FALSE } }
运行程序,效果如图2-11所示。
![](https://epubservercos.yuewen.com/094EA6/3590506304528001/epubprivate/OEBPS/Images/figure_0054_0001.jpg?sign=1739054817-R7JjRrd1rffn9oDsOBFcGouqaQqKklhV-0-100f476a8a66e5f27ca211cba5c7dcf7)
图2-11 无底的圆锥体几何造型
3.Sphere节点
Sphere节点用来创建以坐标原点为中心的球体几何造型。
Sphere节点语法格式如下:
节点名称 域名称 域值 #域及域值类型 Sphere { radius 1.0 #SFFloat }
其中,radius域的域值设定了以坐标原点为中心的三维球体的半径尺寸。该域值必须大于零,其默认值为1.0单位。
【例2-4】 使用Sphere节点创建一个半径为3.0的球体几何造型。
其实现的源程序代码如下:
#VRML V2.0 utf8 Shape { appearance Appearance { material Material {} } geometry Sphere { radius 3.0 } }
运行程序,效果如图2-12所示。
![](https://epubservercos.yuewen.com/094EA6/3590506304528001/epubprivate/OEBPS/Images/figure_0055_0001.jpg?sign=1739054817-0O89kyClLLK6iPJKNLfS79iHHlOggARq-0-30f2d14609a928f7ba03b028aa2b00ca)
图2-12 使用Sphere节点创建几何造型
4.Cylinder节点
Cylinder节点用来创建以坐标原点为中心、以Y轴为对称轴的圆柱体几何造型。
Cylinder节点语法格式如下:
节点名称 域名称 域值 #域及域值类型 Cylinder { radius 1.0 #SFFloat height 2.0 #SFFloat side TRUE #SFBool bottom TRUE #SFBool top TRUE #SFBool }
其中:
(1)radius域的域值设定圆柱体底面半径尺寸。该域值必须大于零,其默认值为1.0单位。
(2)height域的域值设定圆柱体的高度。该域值必须大于零,其默认值为2.0单位,圆柱体的底面中心位于Y轴-1.0处,顶端位于Y轴1.0处。
(3)side域的域值设定是否创建圆柱体的曲面。如果该域值取TRUE则创建曲面,如果取FALSE则不创建曲面。默认值为TRUE。
(4)bottom域的域值设定是否创建圆柱体的底面。如果该域值取TRUE则创建底面,如果取FALASE则不创建底面。默认值为TRUE。
(5)top域的域值设定是否创建圆柱体的顶面。如果该域值取TRUE则创建顶面,如果取FALSE则不创建顶面。默认值为TRUE。
圆柱体节点和圆锥体节点一样,可以通过对域值设定不显示底面、顶面或曲面。
【例2-5】 使用Cylinder节点创建一个底面半径为3.0、柱体高度为5.0的圆柱体几何造型。
其实现的源程序代码如下:
#VRML V2.0 utf8 Shape { appearance Appearance { material Material {} } geometry Cylinder { radius 3.0 height 5.0 } }
运行程序,效果如图2-13所示。
![](https://epubservercos.yuewen.com/094EA6/3590506304528001/epubprivate/OEBPS/Images/figure_0056_0001.jpg?sign=1739054817-K5GHUL2q8E3zlQUkyKGivSfyCPhc7ZgU-0-c0f39407e9b2c3145e021bc7947acc14)
图2-13 圆柱体几何造型