首页|行业资讯|企业名录|周边产品|数字城市|增强现实|工业仿真|解决方案|虚拟医疗|行业仿真|图形处理|军事战场
资讯首页
行业资讯 >> 学习教程>>正文
VRML2.0教程2:内联节点使用外部资源
2012年4月10日    评论:    分享:

    来源:第三维度
    作者:施寅,周葆芳,赵志勇

    选自《VRML2.0使用速成》第四章第二节

    1、利用内联节点使用外部文件

    你可能经常想要把通过别的来源得到的造型融入你自己的场景中, 最好的办法是将这些造型仍保留在它们各自的文件中, 你只是在你的场景文件中引用它们。你可以把Inline节点看成一个很快捷的文件拷贝方式, 它把原文件中的相关部分拷贝到你的场景中。Inline 节点允许你通过指定URL 来引用外部资源。

    [例1] 使用Inline 节点。

    Inline { url "tlalocStatue .wrl"}

    Inline 节点还允许你把自己的文件分成容易管理的几个大块。如果你还没有指定协议(如http:// ) 的话, 浏览器假设这个外部文件的路径就是当前文档的URL。

    注意: 你必须清楚, 外部文件引用需要浏览器做额外的工作, 要求浏览器去连接相关服务器并获取数据, 这就增加了整个场景下载的时间。因此, 如果要引用的造型的数据量不是很大的话, 你最好直接把它放在你的场景文件中, 而尽量不使用外部引用方式。

    2 使用一个对象的多个实例

    如果你打算在场景中对同一节点进行多次使用的话, 你最好在第一次说明这个节点时就给它命名, 这样在后面你就可以借用这个名字多次引用它。这种引用技术除了能使VRML 文件更短更易读外, 它还节省场景的下载时间并提高了总体性能, 所以你应该尽可能地利用这一技术。

    这种建立一个节点并在多个地方通过名字引用就称为建立节点的多个实例, 或简称为节点实例化。如果你改变了最初的那个节点, 那么它的所有实例也自动跟着改变。

    正如前面提到过的, 有时你想把一个几何造型在场景中多次使用, 但每次颜色和纹理有所不同。在这种情况下, 你可以先说明几何节点并给它命名, 在重新引用时可以包括不同的材质节点和纹理节点来改变外观特征。

    给节点命名使用的语句是DEF(“define”的缩写) , 例如, 你想为会兹拉波切特里神庙门上的横梁定义一幅纹理图, 并在多个地方使用它, 那么就应该在文件中第一次出现这个纹理节点时给它起一个名字。

    [例2] 定义一个节点。

    Appearance { texture DEF BOWS ImageTexture { url "http: . . ."}
    # Names the texture map "BOWS"
    }

    接下来就可以使用这个定义好的对象。

    [例3] 重用节点。

    Appearance { texture USE BOWS # Use Huitzilopchtli bows texture map}

    这个Appearance 节点包含了一个前面定义好的图片纹理节点的实例。

    下面介绍在阿兹特克场景中大金字塔顶上的多个火盆是怎样用实例来实现的。

    [例4] 火盆的多个实例。

    DEF BothBraziers Transform { children [
    DEF Brazier Group {
    children Inline {
    url "TMBrazierTlaloc .wrl"
    bboxCenter 799 .5 127 .01 - 1187 .5
    bboxSize 124 5 5
    }
    },
    Transform {
    children USE Brazier
    translation 54 .5 0 0
    }
    ]
    translation 0 -1 .43 0
    }

    3 连接别的对象

    在VRML 定义的几十种节点中, Anchor ( 锚) 节点算是最灵活的节点之一, 它提供了到万维网上任何别的场景、HTML 页面甚至声音、影像文件的超连接( 这些特性类似于HTML 的links/ anchors 链节定位特性) 。如果你指定了一个VRML 文件, 它将取代当前的VRML 场景; 如果你指定一个声音或影像文件, 浏览器就知道如何去播放它。

    Anchor 节点的url 域指定要进行超连接的文件地址, 文件地址既可以是URL, 也可以是本地机上的文件路径。在children 域中指定用以激活超连接的对象, 用户点击它就能建立这个超连接。如果你想向用户描述一个超连接的内容, 你可以在description 域中填入说明的文字, 这样, 当你的鼠标光标停留在激活超连接的物体上时, 浏览器将会显示这些说明信息。

    下面的例子介绍在阿兹特克场景中怎样用Anchor 节点来超连接一个讲述泰诺切蒂特兰城的HTML 文档。在这个场景中, 当用户的光标移到单词“Tenochtitlan”上时, 单词将以高亮方式显示。如果点击它, 相连接的HTML 文档将显示出来。

    [例5] 使用Archor 节点。

    DEF Title Anchor { url "Tenochtitlan .html"
    description "The Aztec City of Tenochtitlan"
    children [
    Inline {
    url "TitleText .wrl"
    bboxSize 5 .8 .75 0
        bboxCenter 0 .37 0
    }
    ]
    }
   
    如果把多个物体连接到同一个文件, 那么你只需简单地把这些物体全部列在Anchor节点的Chidlren 域中即可。用户点击其中任何一个物体都将自动激活这一连接。这些物体可以是Inline 节点, 也可以是在你的VRML 文件描述的带有几何造型、表面特征以及空间位置的物体。

    [例5] 带有多个子节点的Anchor 节点。
    DEF Title Anchor { url "Tenochtitlan .html"
    description "The Aztec City of Tenochtitlan"
    children [
    Inline {
    url "TitleText .wrl"
    bboxSize 5 .8 .75 0
    bboxCenter 0 .37 0
    }
    Transform {
    children Shape {
    geometry Box { size 1 1 1 }
    }
    translation 0 1 0
    }
    ]
    }

标签:VRML
上一篇:VRML2.0教程1:构造一个虚拟场景
下一篇:VRML2.0教程3:组织场景中的对象
网友评论:VRML2.0教程2:内联节点使用外部资源
评论
留名: 验证码:
您可能还需要关注一下内容:
·基于VRML与Java3D的交互式虚拟物流仿真系统
·VRML2.0教程7:不规则几何节点
·VRML2.0教程6:简单几何节点
·VRML2.0教程5:变换节点
·基于VRML—JAVA的机器人运动仿真研究
·基于VRML的虚拟园林设计要素构建
·基于VRML的虚拟综合布线系统
·VRML2.0教程4:观察场景
·VRML2.0教程3:组织场景中的对象
·VRML2.0教程2:内联节点使用外部资源
☏ 推荐产品

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
扫一扫 第三维度
官方微信号