我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>培训教程

三维网页VRML入门教程第一节:Hello,World

文章来源:第三维度 作者: 发布时间:2010年09月14日 点击数: 字号:

    来源:第三维度

    第一节:Hello,World
    第二节:增加交互能力
    第三节:邻近检测器
    第四节:连续动画
    第五节:动态修改场景图
    第六节:扩充节点类型
    第七节:结束语

    VRML是“Virtual Reality Modeling Language”的缩写形式,意思是“虚拟现实造型语言”。

    VRML文件名全称为:***.wrl或***.wrz。可由文本编辑器或由VrmlPad编写。VRML文件可由VRML浏览器直接运行,也可装插件用IE浏览器运行。本人用的BS_Contact_VRML-X3D_62.exe,装好后可直接运行本地文件,也可在开始菜单设置(开始--程序--BS Contact VRML X3D--Make  BS Contact VRML  your default viewer in IE)即可通过IE浏览器访问网上的VRML文件了。

    VRML创作工具很多是“所见即所得”式的,通过图形界面可以方便地创作虚拟境界,但VRML不仅仅是普通的三维设计,尽管这些工具很容易上手,却往往屏蔽掉了VRML标准的具体细节,因为如果想深入掌握VRML,还需要全面了解节点、域、检测器等技术细节,而达成此目的的最好方法就是用编写文本文件的方式创作VRML境界。本教程提供了六个典型例子,这些例子并不复杂,也不精彩,但涵盖了VRML的关键内容。

    在开始创作之前,应作好下面的准备。

    文本编辑器 随便你喜欢的文本编辑器,如Win95下的NotePad,Dos下的Edit等等。

    VRML浏览器 若用的Web浏览器是Netscape4.0一下版本,可下载CosmoPlayer(http://cosmo.sgi.com);若用的是Netscape4.0或更高版本,则已内置CosmoPlayer2.0,只是安装Netscape时请注意是否选中了相应选项;若用的是Internet Explore4.0,则有可能已经内置了VRML2.0浏览器,判断是否内置的方法很简单,就是看它能否打开VRML文件(*.wrl,*.wrz),如果不行,可以从http://www.microsoft.com/vrml/下载VRML浏览器插件,对于IE3.x,还需要下载一些辅助插件。当然在开始之前应基本熟悉VRML浏览器的操作方法。

    硬件 VRML和硬件平台无关,只要能提供VRML浏览器。在下面的教程中,我们假定硬件平台是微机,输出设备是图形窗口,输入设备为鼠标器和键盘。当然,如果有更先进的虚拟现实设备和支持它的VRML浏览软件效果会更好。对于我们将要创作的境界,微机就足够了。

    资料 本站就是最全面的资料,遇到新概念时可查阅本站相关资料。

    第一节 "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的动态特征。

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料