浏览器方的功能扩展技术课件

上传人:仙*** 文档编号:241557338 上传时间:2024-07-04 格式:PPT 页数:67 大小:1.19MB
返回 下载 相关 举报
浏览器方的功能扩展技术课件_第1页
第1页 / 共67页
浏览器方的功能扩展技术课件_第2页
第2页 / 共67页
浏览器方的功能扩展技术课件_第3页
第3页 / 共67页
点击查看更多>>
资源描述
浏览器方的功能扩展技术浏览器方的功能扩展技术41、俯仰终宇宙,不乐复何如。42、夏日长抱饥,寒夜无被眠。43、不戚戚于贫贱,不汲汲于富贵。44、欲言无予和,挥杯劝孤影。45、盛年不重来,一日难再晨。及时当勉励,岁月不待人。浏览器服务器AppletActiveX ControlJavaScriptVBScriptHTML DocsCGI ScriptservletLiveWirePluginActiveX DocNetscape的plug-in技术 什么是什么是plug-in?plug-in?一个能和一个能和NavigatorNavigator配合工作的配合工作的软件模块软件模块,帮助它帮助它“显示显示”新的新的“数据类型数据类型”,”,或者以一种新的方式显示某些或者以一种新的方式显示某些“老数据类型老数据类型”.”.为什么需要为什么需要plug-in?“plug-in?“数据类型数据类型”的种类是无限的种类是无限的的,浏览器能显示的类型总是有限的浏览器能显示的类型总是有限的.WEB服务器netscape浏览器plug-inplug-in数据plug-in数据无限多的数据类型 text/plain,text/html,image/gif,image/jpg,text/plain,text/html,image/gif,image/jpg,audio/au,audio/ra,video/avi,message/,audio/au,audio/ra,video/avi,message/,extensions/,application/msdoc,.extensions/,application/msdoc,.数据类型数据类型:信息的一种编码形式信息的一种编码形式.信息的基本种信息的基本种类是有限的类是有限的(例如文字例如文字,图像图像,声音声音,视频等视频等),),但但人们出于不同的应用目的人们出于不同的应用目的,总会不断创造新的编总会不断创造新的编码形式码形式.例如例如WordWord和和PageMakerPageMaker的文件所采用的编码是不同的的文件所采用的编码是不同的,尽管它们都是针对相同的基本信息种类尽管它们都是针对相同的基本信息种类.因此它们对因此它们对应不同的数据类型应不同的数据类型.数据类型和信息的显示一种广义的映射关系一种广义的映射关系,非常大的一个概念非常大的一个概念“信息的显示信息的显示”-”-不一定是为了给人看不一定是为了给人看 同一种数据类型可以有不同的显示同一种数据类型可以有不同的显示 数据类型还可以是数据类型还可以是“嵌套嵌套”的的.浏览器就是实现这种映射的一个程序浏览器就是实现这种映射的一个程序 它要知道所收到数据的类型它要知道所收到数据的类型,以及该数据类型设计者以及该数据类型设计者的的“显示显示”意图意图.Plug-in 示例Plug-in 示例Plug-in 示例从三个不同的角度看plug-in用户(网页编写者)的角度:如何准备plug-in数据,可以期望什么效果?安装者的角度:如何将一个plug-in模块加到Navigator中?开发者的角度:如何实现一个plug-in?遵照Netscape定义的API和编码规则.在网页中使用一种plug-in(数据类型)保证潜在的浏览器安装了该plug-in.如果不清楚,你可以提供一张“bridge page”来提供该plug-in,使浏览器能首先安装它.通过MIME机构,配置你的WEB服务器,使其能识别这种plug-in数据.用 .标记将该数据类型引入你的网页中.EMBED标记的一些主要典型属性 height,width:plug-inheight,width:plug-in在浏览器窗口中的大小在浏览器窗口中的大小(缺省单缺省单位为象素数位为象素数)src:src:一个指向一个指向plug-inplug-in数据的数据的URLURL type:type:本本 plug-in plug-in 的的MIMEMIME类型类型 hidden:true,false hidden:true,false 指示本指示本plug-inplug-in是否可见是否可见 units:pixel,en,enunits:pixel,en,en为当前字体点大小的为当前字体点大小的1/2.1/2.pluginspage:pluginspage:一个指向描述该一个指向描述该plug-inplug-in的的URL.URL.text:text:可能的文字内容可能的文字内容srcsrc和和typetype之一必须出现之一必须出现;pluginplugin开发者可定义其它属性开发者可定义其它属性.一个例子Plain text isnt very exciting,butpPlain text isnt very exciting,butEMBED src=“one.txf”width=150 height=50 text=“a plugin can”EMBED src=“two.txf”width=150 height=50 text=“make text as fancy”EMBED src=“three.txf”width=150 height=50 text=“as you like”one.txf:001 255 000 000 000 000 000one.txf:001 255 000 000 000 000 000 two.txf:002 128 128 128 000 000 000 two.txf:002 128 128 128 000 000 000three.txf:003 000 000 255 000 000 000three.txf:003 000 000 255 000 000 000 style red green blue xpos ypos factor style red green blue xpos ypos factor注:在本例中在本例中,SRC,SRC所对应数据文件的扩展名对所对应数据文件的扩展名对应应pluginplugin的数据类型的数据类型.根据这个数据类型根据这个数据类型,浏览器决定启用哪一个浏览器决定启用哪一个pluginplugin模块模块.EMBEDEMBED标记的属性和标记的属性和pluginplugin数据的解释关系数据的解释关系由由pluginplugin设计者决定设计者决定在在HTML 4.0HTML 4.0中中,OBJECT标记作为一种标记作为一种通用描述通用描述,取代了取代了EMBED,APPLETEMBED,APPLET等标记等标记How applet is included in HTML 4 documentJava applet that draws animated bubbles.Plug-in的安装最常见的错误是将它的可执行码放到了不正确的目录中 Windows:“plugins”Windows:“plugins”文件夹文件夹(folder)folder)Mac:“Plug-ins”Mac:“Plug-ins”文件夹文件夹 UNIX:/usr/local/lib/netscape/pluginsUNIX:/usr/local/lib/netscape/plugins 或或$HOME/.netscape/plugins,HOME/.netscape/plugins,或由环境变或由环境变量量NPX_PLUGIN_PATHNPX_PLUGIN_PATH指出的目录指出的目录安全问题:plugin一旦安装,就和浏览器有同样权限.Plug-in工作的生命周期 用户访问一张含有用户访问一张含有pluginplugin数据的网页数据的网页;浏览器加载该浏览器加载该pluginplugin模块模块,并生成一个新的运行并生成一个新的运行实例实例;浏览器为该实例提供一个显示区域浏览器为该实例提供一个显示区域(在浏览器窗在浏览器窗口中口中););浏览器将浏览器将pluginplugin数据传给该实例数据传给该实例,并启动它执行并启动它执行.PluginPlugin按照它自己的方式显示数据按照它自己的方式显示数据 当用户离开当前网页时当用户离开当前网页时,该实例被销毁该实例被销毁.如果没有其它实例如果没有其它实例,该该pluginplugin模块被卸载模块被卸载.Plug-in的对象模型 基于编码技术和规则基于编码技术和规则,而不是通过语言支持而不是通过语言支持.仅考虑实例创建和函数调用等基本机制仅考虑实例创建和函数调用等基本机制.面向对象程序设计不一定需要面向对象程序设计语言面向对象程序设计不一定需要面向对象程序设计语言?class String typedef struct class String typedef struct public:const char*string;const char*color;public:const char*string;const char*color;string(const char*s)String;string(const char*s)String;string=s;color=NULL;String*NewString(const char*s)string=s;color=NULL;String*NewString(const char*s)void setColor(const char*c)String*obj=(String*)void setColor(const char*c)String*obj=(String*)color=c;malloc(sizeof(String);color=c;malloc(sizeof(String);private:obj-string=s;obj-color=NULL;private:obj-string=s;obj-color=NULL;const char*string;return obj;const char*string;return obj;const char*color;void setColor(String*obj,const char*c)const char*color;void setColor(String*obj,const char*c)obj-color=c;obj-color=c;用于开发Plug-in的API16个 NPP_ 函数,由plug-in实现,Navigator调用;16个 NPN_ 函数,由Navigator实现,plug-in调用.例如例如NPError NPP_SetWindow(NPP instance,NPWindow*window)NPError NPP_SetWindow(NPP instance,NPWindow*window)PluginInstance*This=(PluginInstance*)instance-pdata;PluginInstance*This=(PluginInstance*)instance-pdata;This-window=window;This-window=window;NPN_SetStatus(instance,“Creating user interface”);NPN_SetStatus(instance,“Creating user interface”);浏览器调用浏览器调用pluginplugin中实现的函数中实现的函数,传给它一个传给它一个pluginplugin数据和一个数据和一个window(window(对应浏览器窗口中的一个区域对应浏览器窗口中的一个区域)pluginplugin实例将数据建立在自己的空间中实例将数据建立在自己的空间中 pluginplugin反过来调用浏览器中实现的函数反过来调用浏览器中实现的函数,显示状态信显示状态信息息.NPError NPP_New(NPMIMEType pluginType,NPP instance,NPError NPP_New(NPMIMEType pluginType,NPP instance,uint16 mode;int16 argc,char*argn,uint16 mode;int16 argc,char*argn,char*argv,NPSavedData*saved)char*argv,NPSavedData*saved)int i;int i;instance-pdata=NPN_MemAlloc(sizeof(PluginInstance);instance-pdata=NPN_MemAlloc(sizeof(PluginInstance);PluginInstance*This=(PluginInstance*)instance-pdata;PluginInstance*This=(PluginInstance*)instance-pdata;This-window=NULL;This-instance=instance;This-window=NULL;This-instance=instance;This-mode=mode;This-iteration=0;This-label=NULL;This-mode=mode;This-iteration=0;This-label=NULL;for(i=0;iargc;i+)for(i=0;iiterations=atoi(argvi);This-iterations=atoi(argvi);if(!stricmp(argni,”label”)if(!stricmp(argni,”label”)This-label=NPN_MemAlloc(strlen(argvi);This-label=NPN_MemAlloc(strlen(argvi);strcpy(This-label,argvi);strcpy(This-label,argvi);return NPERR_NO_ERROR;return NPERR_NO_ERROR;Plug-in API中的数据交换部分NPP_NewStream()NPP_NewStream()NPP_Write();plug-inNPP_Write();plug-in由此得到数据由此得到数据NPP_DestroyStream()NPP_DestroyStream()NPN_NewStream()NPN_NewStream()NPN_Write();plug-inNPN_Write();plug-in送数据给浏览器送数据给浏览器NPN_DestroyStream()NPN_DestroyStream()NPN_GetURL();plug-inNPN_GetURL();plug-in可以直接和一个远程可以直接和一个远程服务器建立连接服务器建立连接,不一定是不一定是HTTP.HTTP.NPN_PostURL()NPN_PostURL()有关plug-in的其它问题 扩散与流行扩散与流行 免费免费,或初始版本免费或初始版本免费 plug-inplug-in软件免费软件免费,但创建但创建plug-inplug-in数据的工具不免费数据的工具不免费 (例如例如Shockwave)Shockwave)数据免费数据免费(例如海量天气数据例如海量天气数据,历史股票数据等历史股票数据等),),但但表现那些数据的表现那些数据的plug-inplug-in收费收费 plug-inplug-in在在intranetsintranets中也许比在中也许比在InternetInternet中更有用中更有用 跨平台性跨平台性:Win95,3.x,NT,OS/2,Mac,Win95,3.x,NT,OS/2,Mac,Unixes Unixes 通常难以做到通常难以做到 性能性能:好于好于 Java,JavaScript.Java,JavaScript.LiveConnect:NetscapeLiveConnect:Netscape推出的使推出的使plug-in plug-in 与与 Java,JavaScriptJava,JavaScript协同工作的技术协同工作的技术.ActiveX DocumentsMicrosoft的浏览器方扩充技术(in a very general way)ActiveX技术的一个方面源于OLE,但富于OLEInternet Explorer 3.0就是由ActiveX Documents构筑起来的Internet Explorer 3.0将浏览器的通用功能和显示不同对象的具体将浏览器的通用功能和显示不同对象的具体功能分离开来功能分离开来一般功能包括一般功能包括:navigating to a link,:navigating to a link,going forward and back,going forward and back,IEXPLORE.EXE,IEXPLORE.EXE,提供一个基本框架提供一个基本框架SHDOCVW.DLL,Web Browser object,SHDOCVW.DLL,Web Browser object,提供通用功能提供通用功能,作为一个作为一个ActiveX ActiveX Document Container.Document Container.MSHTML.DLL,HTML viewer,an ActiveX MSHTML.DLL,HTML viewer,an ActiveX Document serverDocument serverInternet Explorer 3.0(示意)ActiveX/DCOM嵌入在NT 4.0及以后的系统中.德国的Software AG已将DCOM在UNIX上实现(beta免费可得)从COM到DCOM,尽管扩充的内容不很多,但使得“enterprise computing”计算在Wintel结构上成为可能.COM是Microsoft所有技术的根基.有人比喻,COM对Microsoft相当于粒子物理对整个宇宙.从COM到ActiveX的演变OLE 1 OLE 1 组合文档组合文档(字处理字处理,电子表格电子表格,数据库数据库,画图画图)COM COM “各种软件构件怎么能够相互提供服务各种软件构件怎么能够相互提供服务?”?”OLE 2 OLE 2 不仅是组合文档技术不仅是组合文档技术,而是一种使各种而是一种使各种 软件相互作用的通用技术软件相互作用的通用技术 OLE (OLE (不再是一个缩略语不再是一个缩略语)1996.1 1996.1 ActiveX OLE(ActiveX OLE(还原到还原到“组合文档组合文档”)”)DCOMDCOM 构件对象模型Component Object Model(COM)出发点出发点:让软件系统让软件系统S S由由构件构件构件构件C1,C2,C1,C2,组成组成(COM object)COM object)这些构件这些构件C C不一定是专门为不一定是专门为S S所设计的所设计的,有些在有些在S S之前已存之前已存在在 为这系统所设计的构件将来可被其它系统所用为这系统所设计的构件将来可被其它系统所用,将来设计将来设计的构件还可用来扩充系统的构件还可用来扩充系统S S的功能的功能,不需重新编译链接不需重新编译链接.构件的内部改变不影响其所参与的系统的功能构件的内部改变不影响其所参与的系统的功能COM:COM:给出了一个关于什么能被称为构件给出了一个关于什么能被称为构件(COM COM 对象对象)的规定的规定 提供了一种以系统软件形式存在的基础设施提供了一种以系统软件形式存在的基础设施,使得满足其使得满足其规定的构件能够规定的构件能够“互操作互操作”(”(interoperate).interoperate).COM对象 多界面多界面(interface(interface),),每个界面包含一组方法每个界面包含一组方法 每个界面有两个名字每个界面有两个名字,一是供程序员识别一是供程序员识别(如如LookUpWord)LookUpWord),二是二是GUID(Globally Unique Identifier,GUID(Globally Unique Identifier,128128位位),),特殊生成特殊生成,供计算机使用供计算机使用.界面通常由界面通常由MicrosoftMicrosoft的的IDL(IDL(界面描述语言界面描述语言)描述描述 一旦在发布的软件中实现一旦在发布的软件中实现,界面就再不许修改界面就再不许修改.每个构件必须实现界面每个构件必须实现界面 IUnknown,IUnknown,其它界面必须从其它界面必须从它继承它继承.COM对象界面界面界面一个简单界面的描述 object,uuid(E7CD0D00-1827-11CF-9946-444553540000)object,uuid(E7CD0D00-1827-11CF-9946-444553540000)interface ISpellChecker:IUnkown interface ISpellChecker:IUnkown import “unknown.idl”;import “unknown.idl”;HRESULT LookUpWord(in OLECHAR word31,HRESULT LookUpWord(in OLECHAR word31,out boolean*found);out boolean*found);HRESULT AddToDictionary(in OLECHAR word31);HRESULT AddToDictionary(in OLECHAR word31);HRESULT RemoveFromDictionary(in OLECHAR word31);HRESULT RemoveFromDictionary(in OLECHAR word31);IUnkown IUnkown 界面有三个基本方法界面有三个基本方法QueryInterface,AddRef,Release.QueryInterface,AddRef,Release.ActiveX Document一种特殊的COM object 要满足要满足COM objectCOM object的一些基本要求的一些基本要求,例如实现例如实现IUnknownIUnknown等等 有一些特殊的界面有一些特殊的界面,例如例如 只能在只能在ActiveX Document ContainerActiveX Document Container中活动中活动(ActiveX Document Container本身又是另一种COM object!)VRML(2.0)The Virtual Reality Modeling Language(第二版)vrml.sgi/moving-worlds/spec/index.html什么是VRML(2.0)一种语言,用于描述三维物体和由它们构成的三维场景;该场景可以具有现实世界的多种特征、可以是动态的,也可以和观察者交互作用.它最引人入胜的应用是使人们能够在Web上构建动态的、具有丰富的传感效应的虚拟环境VRML(2.0)不仅是VRML(1.0)的一个扩充.围绕VRML(2.0)的活动语言的进一步发展,标准化:VRML97VRML浏览器(播放器)的开发 CosmoPlayer,WorldView,Liquid Reality,CosmoPlayer,WorldView,Liquid Reality,等等VRML应用开发工具 sdsc.edu/vrml/software/modelers.htmlsdsc.edu/vrml/software/modelers.htmlVRML应用开发 剧场订票,商场购物,旅游景点介绍,等剧场订票,商场购物,旅游景点介绍,等VRML的主要能力描述三维物体及由它们构成的场景动画:使物体在三维空间中运动在场景中播放声音和电影使观察者能与场景交互作用:传感与事件通过脚本(用Java和JavaScript写的)使观察者在场景中的感受更加生动。VRML(2.0)文件的基本格式文件扩展名:.wrl第一行必须是:#VRML V2.0 utf8这也是唯一必须有的内容。后面是关于“节点”(Node)的描述和注释注释用“#”开始,直到本行结束VRML是区分大小写字母的现在的CosmoPlayer对词法,语法错误的处理非常弱(难怪免费).例子1:一个半开口的圆柱体#VRML V2.0 utf8#VRML V2.0 utf8Shape Shape appearance Appearance appearance Appearance material Material#material Material#用缺省材质和颜色用缺省材质和颜色 geometry Cylinder geometry Cylinder radius 3 radius 3 height 6 height 6 side TRUE side TRUE top FALSE top FALSE bottom TRUE bottom TRUE 节点(node),VRML世界的基本单位其地位相当于面向对象语言中的对象,但语义简单许多节点由若干域(Field)描述.每个域包括域名(也称域的类型)和“值”.节点的域可能是简单的参数节点的域可能是简单的参数,如上例中的圆柱如上例中的圆柱体节点有若干描述圆柱体的具体参数体节点有若干描述圆柱体的具体参数.节点的域也可能是另外的节点节点的域也可能是另外的节点,如上例中的如上例中的ShapeShape节点节点,它含有两个域它含有两个域,名字分别为外观名字分别为外观(appearance)(appearance)和几何形状和几何形状(geometry),(geometry),其值都其值都是别的节点是别的节点.节点描述和域的次序无关节点描述和域的次序无关从与外界交互的性质上讲,节点的域分两类:field,exposedField.(见后)VRML的节点(续)有一些系统已定义的节点,例如 Box,Cylinder,Shape,Material,SpotLight等 它们所含的域它们所含的域(名名)是确定的是确定的,例如例如radiusradius等等.VRMLVRML文本编写者的任务就是要给这些域设计文本编写者的任务就是要给这些域设计适当的值适当的值 系统对这些域有缺省值系统对这些域有缺省值,例如例如Boxsize 2,2,Boxsize 2,2,2,Sphere radius 1 2,Sphere radius 1 等等.用户也可以自定义非规则几何体节点(见后)VRML的节点(续)在文本规范说明中,VRML用特殊的记号表示节点中域的值的数据类型,例如SFBool表示逻辑量,取值TRUE或FALSE,SFFloat表示浮点数,SFColor表示3个0-1之间的浮点数,分别代表RGB而MFFloat表示包括在方括号中的、由逗号或空格分开的多个浮点数这里的SF表示“Single-valued Field”,MF记“Multiple-valued Field”单值域并不一定就是一个数(例如SFColor含有3个数),多个数的SF被看成一个整体.两个节点定义规范的例子DirectionalLight DirectionalLight on TRUE#exposed field SFBool on TRUE#exposed field SFBool intensity 1#exposed field SFFloat intensity 1#exposed field SFFloat ambientIntensity 0#exposed field SFFloat ambientIntensity 0#exposed field SFFloat color 1 1 1#exposed field SFColor color 1 1 1#exposed field SFColor direction 0 0-1#exposed field SFVec3f direction 0 0-1#exposed field SFVec3f 其中给出的值为缺省值其中给出的值为缺省值,exposed field,exposed field的基本含义是的基本含义是“可修改可修改”.”.Inline Inline url#exposed field MFString url#exposed field MFString bboxCenter 0 0 0#SFVec3f bboxCenter 0 0 0#SFVec3f bboxSize -1-1-1#SFVec3f,bboxSize -1-1-1#SFVec3f,缺省指示无界缺省指示无界 VRML的节点类型形状节点(shape nodes)-描述物体在空间中的几何形状性质节点(property nodes)-定义形状节点的渲染方式(颜色,表面纹理等).成组节点(group node)-将多个其它节点组合成一个节点,以便于统一处理.还有环境效果节点,例如各种性质的光源.描述三维物体及其场景基本几何体 geometry:geometry:Box,Sphere,Cone,CylinderBox,Sphere,Cone,Cylinder表面特性 appearance:material,texture,.appearance:material,texture,.ShapeShape节点节点:通过赋予其一定的表面特性通过赋予其一定的表面特性,使几何体可见使几何体可见空间位置 右手坐标系统右手坐标系统:translation,rotation,scale:translation,rotation,scale组合几何体 Group,Transform,.Group,Transform,.环境效果 DirectionalLight,PointLight,SpotlightDirectionalLight,PointLight,Spotlight例子例子2:2:简单世界简单世界#VRML V2.0 utf8#VRML V2.0 utf8Group Group children children DirectionalLight direction 0 0-1#DirectionalLight direction 0 0-1#the first childthe first child Transform#Transform#the second childthe second child translation 3 0 1 translation 3 0 1 children Shape geometry Sphere radius 2.3 children Shape geometry Sphere radius 2.3 appearance Appearance appearance Appearance material Material diffuseColor 1 0 0 material Material diffuseColor 1 0 0 Transform#Transform#the third childthe third child translation-2.4.2 1 translation-2.4.2 1 rotation 0 1 1.9#rotation 0 1 1.9#不仅位移不仅位移,还要旋转还要旋转 children Shape geometry Box children Shape geometry Box appearance Appearance appearance Appearance material Material diffuseColor 0 0 1 material Material diffuseColor 0 0 1 VRML的坐标系统右手坐标系统,缺省距离单位是米基本几何体的缺省位置是中心位于坐标系统的原点 Box size 2 2 2Box size 2 2 2 Cone bottomRadius 1 height 2Cone bottomRadius 1 height 2 Cylinder radius 1 height 2Cylinder radius 1 height 2 Sphere radius 1Sphere radius 1缺省Viewpoint为(0 0 10).XYZVRML的坐标变换translation x y z translation x y z 将物体平行位移将物体平行位移rotation x y z r rotation x y z r 按右手法则按右手法则,将物体围绕将物体围绕由原点和由原点和(x y z)(x y z)确定的射线旋转确定的射线旋转r r弧度弧度scale x y z,scale x y z,相对原点相对原点,按照给出的比例因按照给出的比例因子在空间三个方向上放大子在空间三个方向上放大(缩小缩小)注意注意:变换是针对物体上每一个点的变换是针对物体上每一个点的.在成组节点中在成组节点中,变换对组中的节点都有效变换对组中的节点都有效.嵌套的变换效果叠加嵌套的变换效果叠加,由内向外由内向外变换顺序变换顺序:scale,rotation,translation:scale,rotation,translation还有些可选参数还有些可选参数,例如旋转的原点例如旋转的原点,放大的放大的中心等中心等表面特性:Appearance节点material域:值为Material节点,可有如下域 diffuseColor,diffuseColor,颜色的反射与入光角度有关颜色的反射与入光角度有关 shineness,shineness,光洁度光洁度,取值取值 0.0-1.0 0.0-1.0 transparency,transparency,透明度透明度,取值取值 0.0-1.0 0.0-1.0texture域:值取ImageTexture,MovieTexture,PixelTexture节点之一textureTransform域:TextureTransform节点.用于在施用前对纹理做空间变换例子3:图像纹理的应用#VRML V2.0 utf8Shape geometry Box appearance Appearance texture ImageTexture url“ie.gif”例子4:构造一个四面体#VRML V2.0 utf8VRML V2.0 utf8Shape Shape geometry IndexedFaceSet geometry IndexedFaceSet coord Coordinate#coord Coordinate#给出给出4 4个顶点的坐标个顶点的坐标 point 0 0 1,1.7 0-0.5,-1.7 0-0.5,0 1 0 point 0 0 1,1.7 0-0.5,-1.7 0-0.5,0 1 0#用顶点序列来说明用顶点序列来说明“面面”,-1”,-1为分隔符为分隔符.注意底面的注意底面的节点顺序节点顺序,“,“右手法则右手法则”coordIndex 0 2 1-1,0 1 3-1,1 2 3-1,2 0 3-1 coordIndex 0 2 1-1,0 1 3-1,1 2 3-1,2 0 3-1 color Color#color Color#造一个颜色表造一个颜色表 color 1 0 0,0 1 0,0 0 1,1 1 0#color 1 0 0,0 1 0,0 0 1,1 1 0#红红,绿绿,蓝蓝,黄黄 colorIndex 1,0,2,3#colorIndex 1,0,2,3#底面底面(0 2 1)(0 2 1)用绿色用绿色,等等 colorPerVertex FALSE#colorPerVertex FALSE#不要按顶点着色不要按顶点着色 VRML的动画能力 Ability to change the world over timeAbility to change the world over time 不仅几何位置的变化,还包括颜色、光线、声音等。不仅几何位置的变化,还包括颜色、光线、声音等。具体表现在对有关节点属性值的动态改变具体表现在对有关节点属性值的动态改变 如何启动一个动画过程如何启动一个动画过程?-VRML-VRML提供各种各样的提供各种各样的“传感器传感器”节点节点,响应用户事件响应用户事件.如何在时间上控制一个动画过程如何在时间上控制一个动画过程?-TimeSensor-TimeSensor节节点点 如何在行为上控制一个动画过程如何在行为上控制一个动画过程?-各种各样的各种各样的“插值器插值器”节点节点 通过通过ROUTEROUTE语句进行事件的传播:语句进行事件的传播:VRMLVRML动画的基本动画的基本机制机制一个最简单的动画例子(eg5)#VRML V2.0 utf8VRML V2.0 utf8Group Group children children DEF DEF PUSHPUSH TouchSensor#TouchSensor#和下面的节点相联系和下面的节点相联系 Shape Shape geometry Cone geometry Cone appearance Appearance appearance Appearance material Material diffuseColor 1 0 1 material Material diffuseColor 1 0 1 Sound#Sound#定义一个音响节点定义一个音响节点 source DEF source DEF BUZZBUZZ AudioClip url mssound.wav AudioClip url mssound.wav maxFront 50#no sound heard beyond maxFront 50#no sound heard beyond minFront 5#no change in volume within minFront 5#no change in volume within ROUTE ROUTE PUSHPUSH.touchTime TO.touchTime TO BUZZBUZZ.startTime.startTimeVRML的声音和文字SoundSound节点节点,可以定义声源在场景中的位置可以定义声源在场景中的位置,以及该声音能被听到的范围以及该声音能被听到的范围AudioClipAudioClip节点节点,出现在出现在SoundSound节点的节点的sourcesource域域中中,指出声音文件指出声音文件.该节点还含有该节点还含有loop,loop,startTime,stopTimestartTime,stopTime等等exposed fieldsexposed fields以控制以控制声音播放声音播放TextText节点节点,作为一种作为一种geometrygeometry节点节点,给出文字给出文字信息信息FontStyleFontStyle节点节点,出现在出现在TextText节点的节点的fontStylefontStyle域域中中,描述文字的字体等描述文字的字体等文字例子(eg6)#VRML V2.0 utf8VRML V2.0 utf8Shape Shape geometry Text geometry Text string Internet and Java Technologies string Internet and Java Technologies fontStyle FontStyle fontStyle FontStyle size 1.5 size 1.5 family SERIF family SERIF style BOLD style BOLD VRML的事件:交互与动态的基础事件是某些节点的性质(在VRML的53种节点中,多数与事件有关)如何知道什么节点与什么事件有关 节点规范中的显示说明节点规范中的显示说明 节点的节点的exposed Fieldexposed Field域隐含相关事件域隐含相关事件ROUTE语句:让不同节点之间事件相互联系的手段(起一个类似于赋值语句的作用)接触传感器规范说明的例子TouchSensor TouchSensor enabled TRUE#exposed field SFBool enabled TRUE#exposed field SFBool FieldFieldenabled enabled 指出该传感器当前是否处于工作状态指出该传感器当前是否处于工作状态 EventsEventsisOver eventOut,SFBool,isOver eventOut,SFBool,指出鼠标正放在指出鼠标正放在兄弟几何节点兄弟几何节点之上之上isActive eventOut,SFBool,isActive eventOut,SFBool,指出鼠标已经按下指出鼠标已经按下touchTime eventOut,SFTime,touchTime eventOut,SFTime,指出鼠标按下后释放的时间指出鼠标按下后释放的时间hitPoint_changed eventOut,SFVec3f,hitPoint_changed eventOut,SFVec3f,指出位置的变化指出位置的变化hitNormal_changed eventOut,SFVec3f,hitNormal_changed eventOut,SFVec3f,指出法线的变化指出法线的变化hitTexCoord_changed eventOut,SFVec2f,hitTexCoord_changed eventOut,SFVec2f,指出纹理坐标的变化指出纹理坐标的变化Transform Transform bboxCenter 0 0 0#SFVec3f bboxCenter 0 0 0#SFVec3f bboxSize -1-1-1#SFVec3f bboxSize -1-1-1#SFVec3f translationtranslation 0 0 0#0 0 0#exposed fieldexposed field SFVec3f SFVec3f rotation 0 0 1 0#exposed field SFRotation rotation 0 0 1 0#exposed field SFRotation scale 1 1 1#exposed field SFVec3f scale 1 1 1#exposed field SFVec3f scaleOrientation 0 0 1 0#exposed field SFRotation scaleOrientation 0 0 1 0#exposed field SFRotation center 0 0 0#exposed field SFVec3f center 0 0 0#exposed field SFVec3f children#exposed field MFNode children#exposed field MFNode 任何一个任何一个exposed fieldexposed field都隐含对应两个事件都隐含对应两个事件,于是于是TransformTransform相当于有事件相当于有事件set_set_translationtranslation (输入事件输入事件,eventIn),eventIn)translationtranslation_changed_changed (输出事件输出事件,eventOut),eventOut)set_rotation,rotation_changed,set_rotation,rotation_changed,等等等等TimeSensorTimeSensor TimeSensor cycleInterval cycleInterval 1 1#exposed#exposed 秒为单位的周期长度秒为单位的周期长度 enabled enabled TRUETRUE loop loop FALSE FALSE#exposed#exposed 是否应无限重复是否应无限重复 startTime startTime 0 0 stopTime stopTime 0 0 还有专门还有专门eventOuteventOut事件事件fraction_changed,fraction_changed,表示当前表示当前周期周期(cycleInterval)(cycleInterval)已经完成已经完成.PositionInterpolator:位置插值器PositionInterpolator PositionInterpolator key#exposed field MFFloat key#exposed field MFFloat keyValue#exposed field MFVec3f keyValue#exposed field MFVec3f key:key:从从0 0到到1 1的一个规格化时间表的一个规格化时间表,每一项是个每一项是个fraction.fraction.keyValue:3keyValue:3维空间中的一个位置表维空间中的一个位置表 还有专门还有专门eventIneventIn事件事件set_fractionset_fraction和和eventOuteventOut事件事件value_changed.value_changed.前者对应已完成的一段时间前者对应已完成的一段时间,后者对应后者对应空间位置空间位置#VRML V2.0 utf8VRML V2.0 utf8Transform#Transform#利用位置插值器做动画利用位置插值器做动画 eg7eg7 translation-5 0 0translation-5 0 0 children children DEF BUTT TouchSensor DEF BUTT TouchSensor Shape Shape geometry Box size 1 1 1geometry Box size 1 1 1 appearance Appearance appearance Appearance material Material diffuseColor 1 0 0 material Material diffuseColor 1 0 0 DEF Moving_Obj Transform DEF Moving_Obj Transform children children Shape Shape geometry Box#a boxgeometry Box#a box appearance Appearance appearance Appearance material Material diffuseColor 0 1 0 material Material diffuseColor 0 1 0 DEF TIMER TimeSensor cycleInterval 1.5 DEF TIMER TimeSensor cycleInterval 1.5 DEF Obj_MOVER PositionInterpolator#DEF Obj_MOVER PositionInterpolator#在在1.51.5秒里完成秒里完成3 3次移动次移动 key 0,0.33,0.67,1 key 0,0.33,0.67,1 keyValue 0 0 0,1 3-2,5 3-1
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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