12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 5366|回复: 12
打印 上一主题 下一主题

[VRML] vrml教程之扩充节点类型

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

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

跳转到指定楼层
楼主
发表于 2011-9-6 16:52:15 |只看该作者 |倒序浏览
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标准,以求全面深入的掌握和应用,另一方面,要经常研读成功的作品,获取创作灵感。

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

使用道具 举报

797

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
5568
精华
0

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

沙发
发表于 2011-10-7 11:19:28 |只看该作者
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

板凳
发表于 2012-1-6 19:48:20 |只看该作者
我看看就走,你们聊!
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

地板
发表于 2012-2-12 23:31:06 |只看该作者
顶!学习了!阅!
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

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

5#
发表于 2012-3-1 23:24:12 |只看该作者
我来顶个
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

6#
发表于 2012-4-5 23:20:04 |只看该作者
好,真棒!!
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

7#
发表于 2012-4-11 23:33:11 |只看该作者
非常感谢,管理员设置了需要对新回复进行审核,您的帖子通过审核后将被显示出来,现在将转入主题
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

8#
发表于 2012-4-22 23:18:45 |只看该作者
不错 非常经典  实用
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

9#
发表于 2012-9-20 23:19:54 |只看该作者
我就看看,我不说话
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

10#
发表于 2012-9-28 23:25:02 |只看该作者
提醒猪猪,千万不能让你看见
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2024-9-20 15:02 , Processed in 0.086732 second(s), 28 queries .

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

© 2008-2019 Narkii Inc.

回顶部