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

[VRML] VRML的基础教程(7)第五节 动态修改场景图

[复制链接]
Asen    

867

主题

0

听众

1万

积分

外协人员

Rank: 7Rank: 7Rank: 7

纳金币
17488
精华
1
跳转到指定楼层
楼主
发表于 2011-8-2 17:33:26 |只看该作者 |倒序浏览
第六节 扩充节点类型



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.
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

797

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
5568
精华
0

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

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

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

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

板凳
发表于 2012-2-21 23:24:26 |只看该作者
不错 非常经典  实用
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

地板
发表于 2012-4-11 23:19:36 |只看该作者
呵呵,很漂亮啊
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

5#
发表于 2012-4-19 23:25:26 |只看该作者
路过、路过、快到鸟,列位请继续...ing
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

6#
发表于 2012-4-29 23:24:55 |只看该作者
这么后现代
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

7#
发表于 2012-9-4 23:20:41 |只看该作者
好可爱的字,学习了
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

8#
发表于 2012-11-8 23:24:20 |只看该作者
好可爱的字,学习了
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

9#
发表于 2012-11-10 23:21:16 |只看该作者
都闪开,介个帖子,偶来顶
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

10#
发表于 2012-11-28 23:22:12 |只看该作者
百度的叫度娘,网易的叫易娘,新浪内部还在为是叫新娘还是浪娘而争论不休!……不管你们是企鹅的额娘,豆瓣的伴娘,还是华为的伪娘,都要记得,淘宝才是你们的亲娘啊!亲!!
回复

使用道具 举报

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

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

GMT+8, 2025-7-14 09:59 , Processed in 0.345774 second(s), 28 queries .

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

© 2008-2019 Narkii Inc.

回顶部