2023年-虚拟现实技术―VRML篇.docx

上传人:太** 文档编号:96076586 上传时间:2023-09-07 格式:DOCX 页数:23 大小:43.69KB
返回 下载 相关 举报
2023年-虚拟现实技术―VRML篇.docx_第1页
第1页 / 共23页
2023年-虚拟现实技术―VRML篇.docx_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《2023年-虚拟现实技术―VRML篇.docx》由会员分享,可在线阅读,更多相关《2023年-虚拟现实技术―VRML篇.docx(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、虚拟现实技术一 一VRML篇一、VRML介绍1 .什么是VRML?VRML 是“Virtual Reality Modeling Languagev的缩写形式,意思是“虚 拟现实造型语言”。第一代Web是以HTML为核心的二维浏览技术,受HTML语言的局限性,VRML 之前的网页只能是简单的平面结构,而且实现环境与参与者的动态交互是非常烦 琐的。第二代Web是以VRML为核心的三维浏览技术。第二代Web把VRML与HTML、 Java,媒体信息流等技术有机地结合起来,形成一种新的三维超媒体Web。VRML是用来描述三维物体及其行为的,可以构建虚拟境界(Virtural World), 可以集成

2、文本、图像、音响、MPEG影像等多种媒体类型,还可以内嵌用Java、 ECMAScript等语言编写的程序代码。以VRML为核心构建的虚拟世界中用户如身处真实世界,可以和虚拟物体交 互,人们可以以习惯的自然方式访问各种场所,在虚拟社区中“直接”交谈和交 往。事实上,目前采用VRML技术取得成功的案例已经很多,例如探路者到达火 星后的信息就是利用VR应在因特网上即时发布的,网络用户可以以三维方式随 探路者探索火星。2 . VRML的工作原理VRML定义了一种把3D图形和多媒体集成在一起的文件格式。从语法角度看, VRML文件是显式地定义和组织起来的3D多媒体对象集合;从语义角度看,VRML 文件

3、描述的是基于时间的交互式3D多媒体信息的抽象功能行为。VRML文件描述 的基于时间的3D空间称为虚拟境界(Virtual World),简称境界,所包含的图形 对象和听觉对象可通过多种机制动态修改。VRML文件可以包含对其他标准格式文件的引用。可以把JPEG、PNG和MPEG 文件用于对象纹理映射,把WAV和MIDI文件用于在境界中播放的声音。另外, 还可以引用包含Java或ECMAScript代码的文件,从而实现对象的编程行为。VRML使用场景图(Scene Graph)数据结构来建立3D实境,VRML的场景图 是一种代表所有3D世界静态特征的节点等级:几何关系、质材、纹理、几何转 换、光线

4、、视点以及嵌套结构。几乎所有生产厂商,无论是CAD、建模、动画、 VR,还是VRML,他们的结构核心都有场景图。境界中的对象及其属性用节点(Node)描述,节点按照一定规则构成场景图 (Scene Graph),也就是说,场景图是境界的内部表示。场景图中的第一类节点 用于从视觉和听觉角度表现对象,它们按照层次体系组织起来,反映了境界的空 间结构。另一类节点参与事件产生和路由机制,形成路由图(Route Graph),确 定境界随时间的推移如何动态变化。VRML文件的解释、执行和呈现通过浏览器实现,这与利用浏览器显示HTML 文件的机制完全相同。浏览器把场景图中的形态和声音呈现给用户,这种视听觉

5、 呈现即所谓的虚拟世界(境界)o用户通过浏览器获得的视听觉效果如同从某个特 定方位体验到的,境界中的这种位置和朝向称为取景器(Viewer)。3 . VRML的应用VRML在电子商务、教育、工程技术、建筑、娱乐、艺术等领域有广泛的应 用。例如在教育上,VRML不仅仅是HTML功能更强的替代品,其潜在意义在于突 破上述基于WWW的教学模型建立更自然、更真实的虚拟教育环境。在这种环境中geometry Sphere )DEF cone Transform translation -500 children Shape appearance Appearance material Material

6、diffuseColor 001)geometry Cone )#end of Group childrenROUTE touchBox. isActive TO view2. set_bind #传递把这个文件调入浏览器,然后把鼠标指向方块并按下左钮(先别松开!),可 以看到视点已经变为view2,内部的机制我们已经很清楚:左钮按下时方块节点 的接触检测器被触发,接着接触检测器从事件出口 isActive送出一个事件 “TRUE”,这个事件通过路由进入视点节点view2的事件入口 set_bind, view2 收到“TRUE”后成为当前视点,所以在我们眼前场景发生了变化。当松开鼠标左键,又

7、回到原来的视点,称为视点回跳。因为松开鼠标左键后, 接触传感器向view2发送了 “FALSE”事件,这样view2的当前地位被解除。若 不想回跳,则要自己来定义。4 .利用脚本编写自定义行为在VRML中,利用Script节点(脚本节点)定义用户自定义行为,所谓定义 即用脚本描述语言(Scripting Language)编写脚本的过程。VRML97支持的脚 本描述语言目前有两种:Java和EMCAScript (这是JavaScript标准化后的名称), 关于这两种语言本身,请参考相应参考书,VRML97标准中定义了它们和VRML的 接口方法。应提请注意的是:VRML是基于节点的语言,所以脚

8、本也是封装在 Script这个特殊节点中的。这里我们不过多讨论脚本描述语言的细节,主要讨 论把脚本集成到VRML文件中的方法。上面我们曾把接触检测器touchBox和视点view2直接通过路径连接起来, 现在要定义我们指定的行为,就需要在二者之间插入一个脚本节点,也就是让路 径绕个弯:ROUTE touchBox. isActive TO touchScript. touchBoxIsActiveROUTE touchScript. bindView2 TO view2. set_bind其中的脚本节点touchScript有一个事件人口 touchBoxIsActive和一个事 件出口 bi

9、nd_View2,前者接收来自接触检测器touchBox的事件,然后经自己的 脚本处理后,把结果发送给视点节点view2:DEF touchScript Script eventin SFBool touchBoxIsActive #入口eventOut SFBool bindView2# 出口url,z javescript:#脚本function touchBoxIsActive(active) #与入口同名的函数被调用bindView2= TRUE;# 返回到出口关于这个Script节点,请注意一下几点:(1)它的事件入口 touchBoxIsActive和事件出口 bindView2是

10、自定义的, 其它VRML节点的域和事件都是固定的。(2 )这里定义的事件入口 touchBoxIsActive (即入事件)和事件出口 bindView2(即出事件)的类型都是SFBool (单值布尔型),它们与touchBox的事 件出口 isActive和view2的事件入口 set_bind的类型保持一致。(3) “url”是脚本节点的一个域,/以直接包含脚本,也可以包含一个或 多个用URL地址指示的脚本,若有多个地址,则按照先后次序获取第一个可得到 的脚本。(4)脚本是以函数(function)的形式给出的,函数名touchBoxIsActive 与事件入口的名称相同,这是和ECMAS

11、cript语言的接口约定,表示相应事件入 口收到事件后调用此函数进行处理。5.事件流程与小结下面我们整理一下事件流程:(1)用户在方块上按下鼠标左键。(2)接触检测器发出一个“TRUE”事件。(3)此事件进入脚本节点touchScript的事件入口 touchBoxIsActive.(4)调用脚本函数touchBoxIsActive(注意函数并没有判断入事件的值)。(5)函数向touchScript的事件出口 bindView2发送一个TRUE”事件(还 可以进行其它判断或执行其它事件)。(6) view2节点收到“TRUE”事件,成为当前视点。按照VRML约定,“认 为”上述事件是同时发生的

12、,也就是这些事件的时间戳相同。(7)若用户松开鼠标左键,则接触检测器发出一个FALSE”事件,此事件 同样引起脚本函数调用并发送“TRUE”事件,所以view2仍然保持为当前视点。 本节的完整代码是:#VRML V2. 0 utf8DEF viewl Viewpoint position 0 0 20description viewlDEF view2 Viewpoint position 5 0 20description view2Group children DEF box Transform translation 500 children Shape appearance Appea

13、rance material Material diffuseColor 100 )geometry Box )DEF touchBox TouchSensor DEF sphere Transform translation 000 children Shape appearance Appearance material Material diffuseColor 010 )geometry Sphere )DEF cone Tranform transaltion -500 children Shape appearance Appearance material Material di

14、ffuseColor 001 )geometry Cone )I #end of Group childrenDEF touchScript Script eventin SFBool touchBoxIsActiveeventOut SFBool bindView2url z/javascript :function touchBoxIsActive (active) bindView2 = TRUE;ROUTE touchBox. isActive TO touchScript. touchBoxIsActiveROUTE touchScript. bindView2 TO view2.

15、set_bind这里所建立的虚拟境界并不复杂,但涉及到了 VRML2. 0最基础性的功能和概 念:利用检测器产生事件、利用路由传递事件以及利用脚本编写自定义行为,掌 握了这些内容也就掌握了 VRML2.0的核心。在后面的几节中,我们将探索一些专 题性的有趣功能,而本节是基础,因而必须透彻理解。(六)进一步的完善与修饰1 .邻近传感器当用户进入或离开邻近检测器所划定的区域时就会触发它。正如你在标准中可以查到的那样,ProximitySensor节点定义为:ProximitySensor exposedField SFVec3f center 000exposedField SFVec3f siz

16、e 000exposedField SFBool enabled TRUEeventOut SFBool isActiveeventOut SFVec3f position changedeventOut SFRotation orientation_changedeventOut SFTime enterTimeeventOut SFTime exitTimeProximitySensor节点共有三个外露域(exposedField)和五个出事件 (eventOut) .出事件我们已经熟悉,是节点状态发生改变时用来通知其它节点 的,这里的出事件isActive用于ProximitySenso

17、r通报自己已被激活。 enterTime和exitTime通报用户(代表用户的用户化身或指示器)进入和退出 ProximitySensor检测区的时刻。若用户已在检测器之内,则当用户的位置或方 位发生变化时,送出pos i t i onchanged和or i ent at i on changed出事件。这五 个出事件联合起来,就定义了邻近检测器的功能。外露域则集域(Field)、入事 件(eventin)和出事件(eventOut)三者的功能于一身,也就是说,它既象域 一样描述了节点的当前状态,又可以作为入事件由其它节点修改这种状态,并作 为出事件把这种改变通知其它节点。这里的enable

18、d外露域是布尔型的,用于 ProximitySensor的启用和停用,center和size定义形为长方体的邻近检测区。我们要在方块、球体和圆柱这三个物体构成的静态世界,现在在球体周围增 加一个邻近检测区:DEF sphere Transform translation 000 children ShapeDEF comeClose ProximitySensor center 000 size 444 )ProximitySensor的名字为comeCloser,邻近区的中心和球体的球心重合, 形状为正方体,边长为4米,是球体直径的两倍。当用户走进球体时就会触发这 个邻近检测器,检测器发出i

19、sActive事件,我们把这个事件出口通过路由指向 Script节点(用来绑定视点2):DEF comeCloserScript Script eventin SFBool enterProximitySensorlsActive eventOut SFBool bindView2 url javascript :function enterProximitySensorlsActive (active) bindView2=TRUE; )随后,我们在邻近检测器的出事件isActive和脚本节点comeCloserScript 的入事件enterProximitySensorlsActive之

20、间建立路由,后者收到事件后执行 函数enterProximitySensroIsActive,函数发出bindView2出事件,这个出事件 通过路由连接到视点节点View2:ROUTEcomeCloser. isActiveTOcomeCloserScript. enterProximitySensorlsActiveROUTE comeCloserScript. bindView2 TO view2. set bind也就是说,一旦用户进入邻近区,境界的当前视点麻转换成View2.这个由 两个视点、三个物体、一个邻近检测器和一个脚本节点组成的境界的完整代码如 下:#VRML V2. 0 ut

21、f8DEF viewl Viewpoint position 0 0 20 description viewl )DEF view2 Viewpoint position 0 0 20 description view2 )Group children DEF box Transform translation 500 children _Shape appearance Appearance material Material diffuseColor 100 )geometry Box DEF sphere Transform translation 000 children Shape

22、appearance Appearance material Material diffuseColor 010 )geometry Sphere DEF comeCloser ProximitrySensor center 000 size 444DEF cone Transform translation -500 children _Shape appearance Appearance material Material diffuseColor 001 )geometry Cone #end of Group childrenDEF comeCloserScript Script e

23、ventin SFBool enterProximitySensorlsActiveeventOut SFBool bindView2url javascript :function enterProximitySensorlsActive(active) bindView2=TRUE;ROUTEcomeCloser. isActiveTOcomeCloserScript. enterProximitySensorlsActiveROUTE comeCloserScript. bindView2 TO view2. set_bind启动VRML浏览器进入境界,面向球体一直走过去,当你刚刚感到靠

24、近球体 时,会突然感到自己后退了一大步(或者说物体跳到前方更远的地方),这表明 邻近检测器已经检测到你的靠近,它把这件事通知脚本节点,脚本节点把视点 View2绑定成当前视点,从而使你感到视点突然改变。再稍稍修改一下邻近检测器,把它的中心位置向右移了 2米:DEF comeCloser ProximitySensor center 200size 444这样你就可以从左边(方块那一边)走进球体(视点不跳),但不能从右边 (圆锥那一边)走近它(视点跳转)。总之,ProximitySensor能够检测用户是否进入或离开检测器指定的空间区 域,典型用法是当用户走进房间时开启灯光,当用户离开时关闭灯光

25、,从而建立 功能丰富的“智能”空间。2 .连续动画我们已经使用过接触检测器,当我们把鼠标指针放到方块(这个几何节点包 含接触检测器)上面时,指针形状发生变化,这意味着我们已经进入检测区,如 果按下鼠标左钮,则按照我们的定义,当前视点会发生变化。这一节仍然制作这样一个对接触有反应的方块,只是接触后它会连续不断地 转动,动画行为可以用时间检测器(TimeSensor)驱动,而不断变化的旋转值可 用脚本节点或朝向插补器(orientationinterpolator)给出。接触传感器作为开始的基本代码是:#VRML V2. 0 utf8DEF cube Transform rotation 1110

26、children Shape appearance Appearance material Material diffuseColor 100geometry Box DEF TouchS TouchSensor DEF revolver Script eventin SFBool startRevolvingeventOut SFRotation revolvefield SFFloat angle 0url ,zjavascript :function startRevolving () revolve0=l;revolve1=1;revolve2=1;revolve3=angle;ang

27、le+=0. 1;ROUTE TouchS. isOver TO revolver. startRevolvingROUTE revolver.revolve TO cube. set_rotation其中,方块cube包含两个子节点,前者定义了它的形态(红色的单位立方体), 后者把它定义成接触检测器。注意,cube的类型是Transform节点,它的rotation 域是外露域,指定本组相对于上层坐标系的旋转值,这里指定的初始值是111 0 ”,其中前三个数值定义旋转轴,最后一个值定义旋转角。由于它是外露域, 因而可以通过入事件(名为set.rotation)进行修改,下面定义的动态行为就

28、是这样实现的。Script节点revolver的核心是内联的ECMAScript脚本函数。它给定一个不断 变化的旋转值。当鼠标指针移动到方块之上时,接触检测器发出isOver,和第一 节中采用的isActive事件不同,isOver不需鼠标左钮按下时即可发出。isOver 事件通过路由传递给脚本节点的事件入口 startRevolving,从而启动函数 startRevolving,函数将一个新的旋转值发往事件出口 revolve,这个旋转值通 过路由进入cube的外露域rotation,修改了方块的旋转角,引起它的朝向变化。 鼠标指针在cube上面的每次方位变化都引起isOver事件发送一次

29、,从而导致方 块旋转一次。时间传感器为了使方块能够连续旋转,需要引进等间隔连续发送的时间序列,这正是时间检 测器的用武之地。时间检测器随着时间推移不断产生事件,可用于多种目的,包 括:a.驱动连续性的仿真和动画b.控制周期性的活动(如每分钟一次)c.初始化单独事件,如报警钟下面是我们要用的时间检测器和修改后的路由关系:DEF ticker TimeSensor clelnterval 0. 1 loop TRUE enabled FALSE )ROUTE TouchS. isOver TO ticker. set_enabledROUTE ticker.cycleTime TO revolve

30、r. startRevolvingROUTE revolver.revolve TO cube. set_rotationenabled用于启用和停用时间检测器,开始时它处于停用状态,以后由接触检测 器的isOver事件修改这一状态。启用的时间检测器每隔0.1秒送出一个 cycleTime事件,并用它来触发revolver的startRevolving事件,注意, cycleTime事件的类型为SFTime,而路由两端事件的类型必须匹配,所以尽管这 里我们不关心这个事件表示的具体时刻,还是把revolver的startRevolving 事件类型也改为SFTime.这样,revolver的函数

31、startRevolving。就会每0. 1 秒调用一次,从而驱动方块连续旋转。完整的代码是:#VRML V2. 0 utf8DEF cube Transform rotation 1110 children Shape appearance Appearance material Material diffuseColor 100 )geoemtry Box )DEF TouchS TouchSensor )DEF revolver Script eventin SFTime startRevolving eventOut SFRotation revolve field SFFloat a

32、ngle 0url vrmlscript :function startRevolving () revolve0=l; revolvel=l;revolve = 1;revolve3=angle;angle+=0. 1;DEF ticker TimeSensor cyclelnterval 0. 1loop TRUEenabled FALSE)ROUTE TouchS. isOver TO ticker. set_enabledROUTE ticker. cycleTime TO revolver. startRevolvingROUTE revolver.revolve TO cube.

33、set_rotation上述脚本节点的功能比较简单,只是不断送出调整的旋转值,它是关键帧动画的 一种。由于关键帧动画十分常用,故VRML专门定义了插补器节点来实现它。方位插值器插补器节点可认为是VRML内置的脚本节点,它们执行简单的动态计算,通常和 时间检测器或者能够使对象产生动作的节点结合在一起使用,生成线性关键帧动 画。插补器节点实际上是一个由关键点和对应关键值定义的分段线形函数。根据 插值类型的不同,VRML共定义六个插补器节点:Colorinterpolator (颜色插补器)、Coordinatelnterpolator (坐标插补器)、Normallnterpolator (法线插

34、补器)、Orientationinterpolator (朝向插补器)、positioninterpolator (位置插补器)、Scalarinterpolator (标量插补器)。所有插补器的域和事件都是类似的:eventin SFFloat set_fructionexposedField MFFloat key .exposedField MFtype keyValue eventOut S|MFtype keyValue_changed关键值域keyValue的类型决定了插补器的类型(例如, Orientationinterpolator 的 keyValue 域的 类型是 MFFl

35、oat ),入 事件 set_fraction接收SFFloat型的事件,插补器随即根据它进行插值,并通过出 事件value_changed送出插值结果。这里我们把时间检测器的fraction_changed事件作为插补器的输入,这个 事件是一个0,1区间的值,每个时间步都送出一次,表示当前周期内已过去的 时间相对于整个周期的比例,是插补器常用的输入源之一。与此对应,我们把插 补器关键帧的取值也定义在0, 1范围内。与0和1这两个关键帧对应的关键值 的旋转轴是相同的,只是旋转角度不同(0,3. 14159),这样方位插补器输出的旋 转值的旋转轴固定不变,旋转角从0递增到3. 14159,然后不

36、断重复。#VRML V2. 0 utf8DEF cube Transform rotation 1110children Shape appearance Appearance material Material diffuseColor 010学生可以以浏览探索的方式汲取知识,如进入虚拟太空学习天文知识,利用虚拟 地球学习地理知识,穿过历史长廊与历史人物交流,进入分子世界游历化学殿堂 等等,这些曾经是梦想中的学习方式都可以逐步实现。在这个虚拟教育世界中, 甚至可以有利用VRML制作的动画人物扮演教师,其面部表情和形体动作利用动 作跟踪系统捕捉下来,这样得到的讲课节目将是三维的。如果把这种方式

37、扩大到 教学双方,则可实现具有实时交互性的虚拟教学一一教师控制的虚拟教师和学生 控制的虚拟学生就可以在一个虚拟教室中相互交流。4. VRML的工作组及其研究目标为了推动VRML技术的发展,VRML协会组织了很多工作组,每个工作组都是 自愿组织、自我约束、并经VRML协会认可的技术委员会,负责某个与VRML有关 的专题技术的研究和实现工作。人性动画工作组(Humanoid Animation WG)利用VRML表现人类行为特性。色彩保真工作组(Color Fidelity WG)确保采用任何平台的观众所看到的效 果都和创作者的原始作品一样,颜色应相当一致。元形式工作组(Meta Forms WG

38、)针对利用形式文法生成的作品,提出一般性 的方法论和一般性规范,使之能够映射为某种特定形式。首要目标是能够表示 数字生命格式(Digital Life-Forms)结构和增长。面向对象扩展工作组(Object-Oriented Extensions WG)探讨和推动对VRML 进行面向对象扩展的方法。数据库工作组(Database WG)推进基于VRML商业应用的创建,利用数据库维 护VRML内容的持久性、升级能力和安全传输能力。外部创作接口工作组(External Authoring Interface WG)在VRML境界和外 部环境之间建立标准接口。界面组件工作组(Widgets WG)

39、为开发者和用户提供一套基础性的、可自由使 用的标准用户界面组件集,并提供支持基本组件集和所有VRML组件的理论框架。二进制压缩格式工作组(Compressed Binary Format WG)探讨并开发VRML 文件的二进制编码方法,重点是研究为了快速传送目的而尽量缩小文件尺寸,同 时为了快速解码B的而尽量简化文件结构。通用媒体库工作组(Universal Media Libraries WG)为了提高VRML境界的 真实感,同时减少网络的下载量,而定义一种由驻留本地的媒体元件(纹理、声 音和VRML对象)组成的小型跨平台媒体库。同时定义一种统一机制,通过这种机 制,VRML内容创作者可以在

40、自己的境界中使用这些媒体元件。活动境界工作组(Living Worlds WG)为多用户(包括多个开发者)应用的产生 和进化定义概念框架,并确定一组界面。键盘输入工作组(Keyboard Input WG)为了使内容创作者能够在自己的境界 中访问键盘输入,定义一个或多个扩充节点。一致性工作组(Conformance WG)为与一致性测试有关的问题提供一个讨论 场所,特别地,本组将辨别VRML实现发生分歧的地方以及相应的动作序列。生物圈工作组(Biota WG)为生命系统(Living System)的研究和学习建立、 配备数字式工具和环境。分布式交互仿真工作组(Distributed Inte

41、ractive Simulation WG)为建立 有多广播能力(Mu 11icast-Capab 1 e)的大规模虚拟环境(Large-Scale Virtual Environments, LSVEs)确立初始网络约定。VRML 脚本工作组(VRML Script WG)向 VRML 监查组(VRML Review Board, VRB)geometry Box DEF TouchS TouchSensor DEF revolver Orientationinterpolator key 0, 1keyValue 0. 5 0. 5 0. 5 0, 0. 5 0. 5 0. 5 3. 14

42、159 )DEF ticker TimeSensor cyclelnterval 2 loop TRUE enabled FALSE )ROUTE TouchS. isOver TO ticker.set_enabledROUTE ticker. fraction_changed TO revolver. set_fractionROUTE revolver. value_changed TO cube. set_rotation小结:本节实现连续动向,动画由接触检测器记动,由时间检测器驱动,动画本 身比较简单,就是不断地旋转。产生不断变化的旋转值的方法有两种:自己编写 脚本,或者利用插补器节

43、点。3 .动态修改场景图场景图是描述境界结构的基本概念,节点是构成场景图的基本单元。组节点 是能够包含子节点的节点,组节点本身还可作为其他组节点的子节点,从而形成层次性 体系结构。VRML中的组节点包含Anchor (锚)、Billboard(布告牌)、Collision(碰撞)、 (Group)(组)、Inline(内联)、LOD(细节层次)、Switch(开关)、Transform(变换)共8种,除 Inline. LOD、Switch这几个具有特殊功能外,它们都定义了人事件addChild 和 removeChildren,前者用于向组节点的子节点域children中增加新的子节点,后备

44、用于从中删除子节点, 这样就可以动态修改场景图的结构。下面是我们这一节要建立的境界,开始的时候球体位于左边红色方块的内 部,在按动底部的绿色方块后,球体进人右边蓝包入块之内。#VRML V2. 0 utf8Viewpoint position 0 0 15 DEF leftBox Transform translation -500 children Shape appearance Appearance material Material diffuseColor 100)geometry Box DEF rightBox Transform translation 500 children

45、 Shape appearance Appearance material Material diffuseColor 001geometry Box DEF onoff Transform translation 0 -5 0 children Shape appearance Appearance material Material diffuseColor 010geometry Box 其中,左边的方块为红色,右边的方块为蓝色,下边的方块为绿色,都是Transform 类 型,三者都位于场景图的最高层,都是场景图的根节点,都包含一个Box几何体 作为子节点。下面为红方块增加一个球体子节

46、点:DEF leftBox Transform translation -500 children Shape appearance Appearance material Material diffuseColor 100DEF SphereChild Shape appearance Appearance material Material diffuseColor 101 )geometry Sphere radius 1. 2为了以后引用方便,这里为球体子节点起了名字:SphereChildo为了让用户 能够增删这个儿子,把绿方块定义成接触传感器:DEF onoff Transform translation 0 -5 0 children Shape appearance Appearance material Material diffuseColor 010 )geometry Box DEF TS TouchSensor )子节点增删的具体任务由Script节点来完成:DEF S Script eventin SFBool isActive eventOut MFNode child field MFNode t

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com