首页|行业资讯|企业名录|周边产品|数字城市|增强现实|工业仿真|解决方案|虚拟医疗|行业仿真|图形处理|军事战场
资讯首页
行业资讯 >> 学习教程>>正文
vrml教程之扩充节点类型
2011年1月7日    评论:    分享:

    VRML提供了54种节点类型,称为内部节点类型。然而实际应用种可能要求新的节点类型,原型(prototype)是VRML实现节点类型扩充的基本机制。新节点类型是根据已定义的(内部的或原型的)节点类型定义的,一旦定义,原型节点类型就可以象内部节点类型一样在场景图中实例化。原型可以在当前文件中定义并使用,也可以在其它文件中定义,即外部原型,外部原型提供了一种使节点类型能够跨越网络的机制。本节的原型例子取自VRML97标准,它定义的是一个桌子类型,这个原型为:

    #VRML V2.0 utf8

    PROTO TwoColor Table [ field SFColor legColor 0.8 0.4 0.7

                                            field SFColor topColor 0.6 0.6 0.1 ]

                         }

    Transform {

             children [

                 Transform {

    translation   0.0 0.6 0.0

    children [

    Transform {

         appearance Appearance {

             material Material { diffuseColor IS topColor }

                                                         }

         geometry Box { size 1.2 0.2 1.2 }

             }

         }

    Transform {

    translation -0.5 0 -0.5

    children [

     DEF Leg Shape {

    appearance Appearance { diffuseColor IS legColor }

             }

       geometry Cylinder { height 1 radius 0.1 }

         }

         ]

     }

    Transform {   #另一条桌腿

    translation 0.5 0 -0.5

    children   USE Leg

         }

    Transform {   #另一条桌腿

    translation -0.5 0 0.5

    children USE Leg

         }

    Transform {   #另一条桌腿

    translation   0.5 0 0.5

    children USE Leg

         }

         ]#根节点Transform的儿子结束

         }#根Transform 结束

     }#原型结束

    原型语句PROTO分为原型接口声明和原型定义两部分、接口声明包括原型的入事件和出事件的类型和名称,以及原型的域的类型、名称和缺省值。这里的接口声明为:

    PROTO TwoColorTable [ field SFColor legColor 0.8 0.4 0.7

                                         field    SFColor topColor 0.6 0.6 0.1 ]

    这个原型的类型名称为“TwoColorTable"(双色桌),它有两个域:legColor(桌腿色)和topColor(桌面色)。作为节点类型,TwoColorTable的用法和其它内部节点类型一样,例如下面的语句定义一个TwoColorTable类型的节点,它的桌腿为红色,桌面为绿色:

    TwoColor   Table {

    legColor 1 0 0 topColor 0 1 0

             }
    接口声明之后是原型的主体,称为原型定义。原型定义实际上是一个场景图,由一个或多个根节点、嵌入的PROTO语句和ROUTE语句构成,其中的第一个节点类型确定原型实例在VRML文件中的使用方法。例如,如果原型定义中的第一个节点是Material节点,则只要可以使用Material节点的地方,原型实例都可以使用。原型定义中定义的其它节点及其附带的场景图都不进入原型实例所在的变换层系,但可以被原型定义中的ROUTE语句或Script节点引用。TwoColorTable原型中的第一个节点是Transform组节点,它决定了TwoColorTable型节点在场景图中的方法,在场景图中添加一个TwoColorTable型节点,相当于增加Transform.

    原型定义中节点的域、入事件、出事件可以通过IS语句和接口声明中的域、入事件、出事件建立关联,关联实际上相当于把原型定义中的这些域和事件公开作为原型的域和事件。关联的基本规则是域和域、入事件和入事件、出事件和出事件对应关联,原型定义中的外露域可以和接口声明中的域、入事件、出事件或外露域关联。本例中的关联有两个:桌面diffuseColor 域和接口声明中的topColor域,桌腿的diffuseColor域和接口声明中的legColor域之间。也就是说,TwoColorTable型节点中的topColor和legColor值实际上分别确定了桌面和桌腿的漫反射色diffuseColor.

    结束语

    本教程创建了六个典型VRML境界,介绍了VRML的主要功能。这些例子的侧重点在于VRML的交互式特征,而不是营造境界的造型特征,后者可参见一般的三维图形工具,把这二者结合起来,可以创建更加精彩的交互式3D境界。本章根据需要介绍了部分VRML节点的基本用法,以后将对VRML节点进行分类和较为全面的评论。

   当然,VRML功能十分丰富,要成为VRML专家,一方面需要研读VRML97标准,以求全面深入的掌握和应用,另一方面,要经常研读成功的作品,获取创作灵感。

标签:vrml教程
上一篇:索尼CES发布全高清3D摄像机HDR-TD10
下一篇:AR+VR 虚拟现实空战游戏
网友评论:vrml教程之扩充节点类型
评论
留名: 验证码:
您可能还需要关注一下内容:
·Unity3d 基础特效教程-下雨
·unity3d导入资源工作流程[编译]
·ARToolKit教程:摄像头和标识关系
·ARToolKit教程:跟踪稳定性
·ARToolKit教程:开发第一个程序
·Vega Prime教程:运行应用
·Vega Prime教程:添加特效
·Vega Prime教程:环境设置
·Vega Prime教程:定义通道
·Vega Prime教程:碰撞检测
☏ 推荐产品

Ladybug5全景
商家:力方国际

ProJet®
商家:力方国际

ProJet®
商家:视科创新

Premium1.5
商家:视科创新

巴可HDX主动立体投
商家:德浩科视

巴可HDF-W26投
商家:德浩科视

巴可30000流明2
商家:德浩科视

巴可4万流明2K投影
商家:德浩科视
☞ 外设导航
☏ 企业名录
【广州】中科院广州电子技术有限公司
【北京】第二空间(北京)科技有限公司
【北京】幻维世界(北京)网络科技有限公司
【厦门】厦门惠拓动漫科技有限公司
【厦门】厦门幻眼信息科技有限公司
【深圳】深圳南方百捷文化传播有限公司
【北京】北京思源科安信息技术有限公司
【上海】上海殊未信息科技有限公司
【北京】北京赢康科技开发有限公司
【武汉】武汉科码软件有限公司
友情链接 关于本站 咨询策划 行业推广 广告服务 免责声明 网站建设 联系我们 融资计划
北京第三维度科技有限公司 版权所有 京ICP备09001338
2008-2016 Beijing The third dimension Inc. All Rights Reserved.
Tel:010-57255801 Mob:13371637112(24小时)
Email:d3dweb@163.com  QQ:496466882
扫一扫 第三维度
官方微信号