查看: 4792|回复: 7
打印 上一主题 下一主题

[VRML] VRML的基础教程(2) 第一节 "Hello,World!"

[复制链接]
Asen    

867

主题

0

听众

1万

积分

外协人员

Rank: 7Rank: 7Rank: 7

纳金币
17488
精华
1
跳转到指定楼层
楼主
发表于 2011-8-2 16:38:33 |只看该作者 |倒序浏览
第一节 "Hello,World!"



按照惯例,我们以"Hello,World!"作为我们的第一个虚拟境界,它由立方体、圆锥和球体组成,你可能已经注意到,VRML的标志正是由这三个几何形状构成的。输入的第一行文字是:



#VRML V2.0 utf8



这是VRML文件的标志,所有2.0版本的VRML文件都以这行文字打头,VRML97是由VRML2.0版修订而成的,符合VRML97规范的VRML文件也以这行文字打头。其中“#”表示这是一个注释。而utf8表示此文件采用的是utf8编码方案,这在标准中有详细说明。



先加入一个Group节点(组节点):



Group {



组节点的花括号之内的所有内容视为一个整体,利用组节点可以把虚拟场景组织成条理清晰的树形分支结构。下面定义组节点的children域(孩子域):



children [



在children后的方括号内定义Group节点的所有孩子对象,第一个孩子是一个Shape节点(形态节点),它描述一个几何形状及其颜色等特征:



Shape {



在Shape 节点内定义一个几何体Box(方盒节点):



geometry Box {}



注意我们没有为Box定义任何域,这意味着它的尺寸和坐标位置等特性取缺省值(单位立方体)。随后补齐各右括号:



}



]



}



至此,我们已经成功地制作了第一个虚拟境界,把它保存为Hello World.wrl,下面是完整的文件:



#VRML V2.0 utf8



Group {



children [



Shape {



geometry Box {}



}



]



}



用浏览器打开这个文件,你会看到一个灰色的立方体,尽管不太好看,但你还是可以通过改变视点位置从不同方位观察它,初步体验“三维交互”的感觉。



下面定义立方体的外观,这只需改变Shape节点的appearance域(外观),appearance 域是一个Appearance 节点,此Appearance节点的material域(材质)定义为一个Material 节点:



appearance Appearance {



material Material {}



}



这样,上面的Shape节点变成了:



Shape {



appearance Appearance {



material Material {}



}



geometry Box {}



}



这是定义几何造型的基本格式。现在立方体还是灰色的,这是因为其中的Material节点采用的还是缺省值,下面修改它的diffuseColor域(漫射色),VRML的颜色说明采用的是RGB颜色模型,所以要定义红色的立方体,漫射色应该是{1 0 0},三个数字依次表示红色、绿色和蓝色,取值范围都是0到1:



material Material {diffuseColor 1 0 0 }



现在我们生成了第二个场景,完整的代码是:



#VRML V2.0 utf8



Group {



children [



Shape {



appearance Appearance {



material Material { diffuseColor 1 0 0 }



}



geometry Box {}



}



]



}



在这个场景中,红色的立方体位于屏幕的中心,它的中心坐标为{0 0 0 }。若想把它移动一个位置,可以通过为它外套一个Transform(变换节点)来实现:



Transform {



translation 5 0 0



children [



Shape {



appearance Appearance {



material Material {}



}



geometry Box {}



}



]



}



在VRML中,Transform节点除了可以引进平移、旋转和缩放变换以外,其作用和Group节点的作用一样。把Transform 节点的translation域(平移)设置为5 0 0,意味着Transform节点所在的坐标系相对于其上层坐标系向右平移(即x轴方向)5个单位,在其它两个方向不移动,VRML的距离单位是米,5个单位相当于5米。我们第三个场景的完整代码是:



#VRML V2.0 utf8



Group {



children [



Transform {



translation 5 0 0



children [



Shape {



appearance Appearance {



material Material { diffuseColor 1 0 0 }



}



geometry Box {}



}



]



}



]



}



接下来我们把方块所在的Transform节点复制三份,并把各自包含的几何形状依次定义为方块、球体和圆锥:



Group {



children [



Transform {



translation 5 0 0



children [



Shape { .... geometry Box {} }



]



}



Transform {



translation 0 0 0



children [



Shape { ... geometry Sphere {} }



]



}



Transform {



translation -5 0 0



children [



Shape { ... geometry Cone {} }



]



}



]#end of Group children



}



你可能已经感觉到,VRML文件中有许多括号(花括号“{}”和方括号“[]”),所以务请注意括号的配对,建议采用本教程的缩进风格。注意上面的VRML文件中三个Transform节点的平移量是不同的,因而三个几何体的位置也就不同。另外,还可以修改三个几何体的颜色:球面Sphere为绿色(0 1 0),圆锥为蓝色( 0 1 0 )。最后,为了以后引用方便,分别给这三个Transform 节点指定一个名称:



DEF box Transform {...}



DEF sphere Transform {...}



DEF cone Transform {...}



这个VRML场景的完整代码是:



#VRML V2.0 utf8



Group {



children [



DEF box Tranform {



translation 5 0 0



children [



Shape {



appearance Appearance {



material Material { diffuseColor 1 0 0 }



}



geometry Box {}



}



]



}



DEF sphere Transform {



translation 0 0 0



children [



Shape {



appearance Appearance {



material Material { diffuseColor 0 1 0 }



}



geometry Sphere {}



}



]



}



DEF cone Transform {



translation -5 0 0



children [



Shape {



appearnance Appearance {



material Material { diffuseColor 0 0 1 }



}



geometry Cone { }



}



]



}



]# end of Group children



}



把此文件保存为helloworld.wrl,用VRML浏览器打开这个文件,通过调整视点从多个方位浏览自己的作品。



小结:在这一节,我们创建了第一个虚拟境界,涉及到如何用几何体构建境界,以及如何设定几何体的颜色与材质。尽管这个由方块、圆锥和球体组成的场景图比较简单,但已经反映了VRML的基本功能。当然,除了可用鼠标改变视点外,这还只是一个静态世界,在下一节,我们将引进VRML的动态特征。


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-1-25 23:23:41 |只看该作者
新雪时舞蹈, 年夜思悄然。
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-3-22 23:26:39 |只看该作者
长了不少见识
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-3-22 23:32:51 |只看该作者
我也来支持下
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-4-21 23:25:55 |只看该作者
有意思!学习了!
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-7-14 23:19:49 |只看该作者
俺是新人,这厢有礼了!
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

7#
发表于 2012-9-20 23:28:42 |只看该作者
再看一看,再顶楼主
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-10-14 23:24:35 |只看该作者
呵呵,真得不错哦!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-2-11 05:50 , Processed in 0.068759 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部