![vrml基础知识简介_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/3df36b65-4456-4e43-a064-5addc9af80de/3df36b65-4456-4e43-a064-5addc9af80de1.gif)
![vrml基础知识简介_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/3df36b65-4456-4e43-a064-5addc9af80de/3df36b65-4456-4e43-a064-5addc9af80de2.gif)
![vrml基础知识简介_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/3df36b65-4456-4e43-a064-5addc9af80de/3df36b65-4456-4e43-a064-5addc9af80de3.gif)
![vrml基础知识简介_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/3df36b65-4456-4e43-a064-5addc9af80de/3df36b65-4456-4e43-a064-5addc9af80de4.gif)
![vrml基础知识简介_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/3df36b65-4456-4e43-a064-5addc9af80de/3df36b65-4456-4e43-a064-5addc9af80de5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VRML简介和基础语法- 一、VRML是什么 VRML是虚拟现实造型语言 (Virtual Reality Modeling Language) 的简称。二、VRML文件的组成部分和文件头 VRML文本的文件名后缀是 .wrl,这是一种ASCII文本文件。VRML文件可以包括四个主要成分: VRML文件头 原型 造型和脚本 路由 每个文件都有一个文 件头,VRML1.0的文件头和2.0的文件头是不一样的。VRML 1.0的文件头是#VRML V1.0 asciiVRML 2.0的文件头是,我们这里只讨论VRML 2
2、.0#VRML V2.0 utf8 在VRML文件中可以加入注解,只要在注解前加入#即可。下面是一个简单的VRML文件,它在三维空间中建立一个立方体。#VRML V2.0 utf8 Shape appearance Appearance material Material geometry Box 三、几个基本造型 所有VRML造型都使用Shape节点创建。 Shape节点的语法是Shape appearance NULL geometry NULL 其中app
3、earance域的值定义一个节点,该节点定义造型的外观,包括颜色和表面纹理等。当它为NULL值时建立的造型是无纹理的白色有阴影物体。它将在后面介绍。geometry域的值定义一个节点,该节点定义造型的3D构造及几何结构。典型的几何结构有Box,Cone,Cylinder和Sphere,它们都可以作为geometry的值。 Box节点的语法是Box size 2.0 2.0 2.0 #长 高 宽(x y z 三个方向,注:2.0 2.0 2.0是缺省值,下同) Cone节点的语法是Cone bottomRadius 1.0 # 圆锥底部半径
4、 height 2.0 # 圆锥的高 side TRUE # 是否创建圆锥的锥面 bottom TRUE # 是否创建圆锥的底 Cylinder节点语法Cylinder radius 1.0 # 园柱底的半径 height 2.0 # 园柱高 side TRUE # 是否创建园柱曲面 top TRUE # 是否创建园柱顶 bottom TRUE # 是否创建园柱底 Sphere节点语法Sphere radius 1.0 # 球体的半径 以上语法中的
5、值,是缺省值,下同。下面是一个简单的VRML文件,它创建一个白色的,无纹理的长、高、宽分别为2.2,1.0和1.5的长方体。#VRML V2.0 utf8 Shape appearance Appearance material Material # 白色无纹理的物体(material是appearance中的一个属性,我们以后接触) geometry Box size 2.2 3.0 1.5 # 长方体 四、文本造型 Text节点语法(作为geometry的值)Text string #文本内容
6、;length 0.0 #文本长度 maxExtent 0.0 #文本的最大长度 fontStyle NULL #文本外观特性 FontStyle节点语法FontStyle family "SERIF" #指定字符集 style "PLAIN" #文本风格 size 1.0 #字符高度 spacing 1.0 #指定VRML单位的水平文本的垂直间距和垂直文本的水平间距 justify "BEGIN" #相对于X、Y来说,文本造型放置的位置
7、160;horizontal TRUE #水平文本还是垂直文本 leftToRight TRUE #水平文本是从左到右还是从右往左(X方向) topToBottom TRUE #垂直文本是从上到下还是下到上 language "" #指定TEXT节点中string所用语言的前后文 文本风格style的值包括“PLAIN(常用文本)”、“BOLD(黑体文本)”、“ITALIC (倾斜文本)”和“BOLDITALIC(黑体且倾斜的文本)”。 justify的值有四个“FIRST”、“BEGIN”、“MIDDLE”和“END”,
8、justify可以取一个值,也可以取两个值。当取两个值时,两个值应放在方括号中,用逗号隔开。其中第一个为主对齐,第二个为次对齐。需要说明的是对齐的具体含义和lefttorigh和toptobottom的取值有关。具体见下面的表:表5.1水平文本主对齐的justify域值 justify域的主对齐值 leftToRight域值 描 述 “FIRST” TRUE 将文本块的左边放在Y轴上 FALSE 将文本块的右边放在Y轴上 “BEGIN” TRUE 将文本块的左边放在Y轴上 FALSE 将文本块的右边放在Y轴上 “MIDDLE” TRU
9、E 将文本块的中边放在Y轴上 FALSE 将文本块的中边放在Y轴上 “END” TRUE 将文本块的右边放在Y轴上 FALSE 将文本块的左边放在Y轴上 表5.2垂直文本主对齐的justify域值 justify域的主对齐值 topToBottom域值 描 述 “FIRST” TRUE 将文本块的上边放在X轴上 FALSE 将文本块的下边放在X轴上 “BEGIN” TRUE 将文本块的上边放在X轴上 FALSE 将文本块的下边放在X轴上 “MIDDLE” TRUE 将文本块的中边放在X轴上 FA
10、LSE 将文本块的中边放在X轴上 “END” TRUE 将文本块的下边放在X轴上 FALSE 将文本块的上边放在X轴上 表5.3水平文本次对齐的justify域值 justify域的主对齐值 topToBottom域值 描 述 “FIRST” TRUE 将第一行文本的基线放在X轴 FALSE 将第一行文本的基线放在X轴 “BEGIN” TRUE 将第一行文本的上边放在X轴 FALSE 将第一行文本的下边放在X轴 “MIDDLE” TRUE 将文本块的中点放在X轴 FALSE 将文本块的中点放在X轴
11、0;“END” TRUE 将最后一行文本的下边放在X轴 FALSE 将最后一行文本的上边放在X轴 表5.4垂直文本次对齐的justify域值 justify域的主对齐值 leftToRight域值 描 述 “FIRST” TRUE 将第一列文本的基线放在Y轴 FALSE 将第一列文本的基线放在Y轴 “BEGIN” TRUE 将第一列文本的左边放在Y轴 FALSE 将第一列文本的右边放在Y轴 “MIDDLE” TRUE 将文本块的中点放在Y轴 FALSE 将文本块的中点放在Y轴 “END” TRUE 将最后
12、一列文本的右边放在Y轴 FALSE 将最后一列文本的左边放在Y轴 例子:#VRML V2.0 utf8 Shape appearance Appearance material Material # 白色无纹理的物体(material是appearance中的一个属性,我们以后接触) geometry Text string "Hello","Let's go!" fontStyle FontStyle spacing 1.1
13、 五、造型定位(平移、旋转和缩放) Transform节点语法Transform children # 所包含的子节点列表 translation 0.0 0.0 0.0 # x,y,z方向上平移的值 ro tation 0.0 0.0 1.0 0.0 # x,y,z方向旋转轴标识,旋转角度(用弧度表示) scale 1.0 1.0 1.0 # x,y,z方向的缩放因子 scaleOrientation 0.0 0.0 1.0 0.0 # 在x,y,z方向轴上旋转一定弧度后,在按scale因子缩放 C
14、enter 0.0 0.0 0.0 # 新的旋转或缩放中心点的x,y,z坐标 children域中的值可以是Shape节点,Group节点(后面讲)或另一个Transform节点(即可嵌套)。还有些域我们放到后面讲。 物体的平移 translation的三个值分别表示x,y,z方向上的平移。 例子: #VRML V2.0 utf8 Transform translation 2.0 3.0 -5.0 # x方向平移2个单位,y方向平移3个方向,z的反方向平移5个单位 children Shape &
15、#160;appearance Appearance material Material geometry Cylinder 请看效果(红的为x方向平移2个单位,y方向平移3个方向,z的反方向平移5个单位的圆柱体) 物体的旋转 旋转采用右手法则,rotation域的前三个值的取值为绕X轴旋转(1.0 0.0 0.0);绕Y轴旋转(0.0 1.0 0.0);绕Z轴旋转(0.0 0.0 1.0);第四个数是旋转的角度,用弧度来表示,正数为逆时针旋转,负数为顺时针旋转。 通常情况下,旋转中
16、心是原点,但可以用Center的值来重定义旋转中心点。 例子: #VRML V2.0 utf8 Transform rotation 1.0 0.0 0.0 0.785 # 绕X轴顺时针旋转45度 children Shape appearance Appearance material Material geometry Cylinder 请看效果,红色的为旋转后的圆柱体,白色的为Y轴 物体的缩放 scale的三个值
17、分别是x,y,z方向的缩放因子.scaleOrientation的值指定一条旋转轴和旋转角度,在缩放前先做旋转,缩放后再转回来,所以它只是使缩放方向旋转而不会旋转物体. 例子: #VRML V2.0 utf8 Transform scale 3.0 0.0 0.5 # 沿X轴放大两倍,Z轴方向缩小0.5倍 children Shape appearance Appearance material Material geometry Cylinder
18、 六、使用材料控制外观 RGB颜色 RGB颜色包含三个浮点值,每一个都在0.0到1.0之间。第一个RGB颜色值代表红色的使用量值,第二个代表绿色的量值,第三个代表兰色量值。0.0表示该种颜色被关闭,1.0表示该种颜色全部打开。 明暗法 当光线照在造型上,造型对光的一面亮,背光的一面暗,而侧面就是中等亮度。明暗的对比使你感觉到造型是三维立体的。你可以使用VRML中的照明节点在你所处的环境中增加一些光源,这些节点 将在中级教程中介绍。你可以通过使用Material节点来控制表面的明暗度。 发光效果 发光造型包括电灯泡、计算机屏幕
19、和霓虹灯等。发光造型都发出自己本身的光。使用Material节点你可以指定一个发光颜色。 透明度 不透明的造型挡住了光线,而透明的造型可以让光线通过,半透明的造型挡住了部分光线。你可以用Material节点来指定一个造型创建时的透明状态。 Shape节点中的Appearance节点 在基本造型中我们详细介绍了Shape节点的geometry域,提到了“其中appearance域的值定义一个节点,该节点定义造型的外观,包括颜色和表面纹理等”。 Appearance节点语法是 Appearance material NULL
20、#定义造型材料属性的节点 texture NULL #(后面介绍) textureTransform NULL #(后面介绍) 其中 Material的节点语法是 Material diffuseColor 0.8 0.8 0.8 #表示一种材料的RGB颜色 emmissiveColor 0.0 0.0 0.0 #表示RGB发光色 transparency 0.0 #表示一个在0.0到1.0之间的透明度因数 ambientintensity 0.2 #(后面介绍) specularColor
21、0.0 0.0 0.0 #(后面介绍) shininess 0.2 #(后面介绍) 例1一个旋转了的红色立方体 #VRML V2.0 utf8 Transform rotation 1.0 1.0 0.0 0.635 #绕X轴和Y轴旋转 children Shape appearance Appearance material Material diffuseColor 1.0 0.0 0.0 # 红色无纹理的物体 geometry Box
22、size 2.2 3.0 1.5 # 长方体 例2 是多个不同颜色外观的造型 #VRML V2.0 utf8 Group children #Station Shapes Shape appearance Appearance material Material diffuseColor 1.0 0.0 0.0 geometry Sphere , Shape appearance Appear
23、ance material Material diffuseColor 0.5 0.25 1.0 geometry Cylinder radius 2.0 height 0.05 , Shape appearance Appearance material Material diffuseColor 0.75 0.0 1.0 geometry Cylinder radius 0.15 heig
24、ht 5.0 例3 本例子共有三个白色质地的灯泡,左边的关闭,中间的发白光,右边的发黄光。 八、Group节点和DEF、USE语法 Group节点 Group children #指定包含在组中的字节点列表,典型的子节点是Shape或其他的Group节点 bboxCenter 0.0 0.0 0.0 #(以后讲) bboxSize -1.0 -1.0 -1.0 #(以后讲) addChildren #(以后讲) removeChildren #(以后讲)&
25、#160; DEF语法 DEF 节点名 节点类型 #定义节点的名称 节点名可以是任何字母序列,他们是区分大小写的。但注意不要和VRML关键字重复。 节点类型是一种特殊 类型的节点,比如Box节点。 例如:DEF MY_BOX Box USE语法 USE 节点名 #使用已经定义的节点名 在同一文件中你可以使用USE来引用原始节点任意次。 例如:USE MY_BOX 例子: #VRML V2.0 utf8 Group children #Wing
26、0;DEF Wing Transform scale 0.5 1.0 1.5 children Shape appearance DEF White Appearance material Material geometry Cylinder radius 1.0 height 0.025 , # Fuselage DEF Fuselage Transform scale 2.0 0.2 0.5 children Shape
27、160;appearance USE White geometry Sphere , # Wing detal and fuselage dome Transform scale 0.3 2.0 0.75 children USE Wing USE Fuselage RML中的节点有以下几种类型: 造型尺寸、外观节点:Shape、Appearance、Material 原始几何造型节点:Box、Cone、Cylinder
28、、Sphere 造型编组节点:Group、Switch、Billboard 文本造型节点:Text、FrontStyle 造型定位、旋转、缩放节点:Transform 内插器节点:TimeSensor、PositionInterpolater、OrientationInterpolater、ColorInterpolator、 ScalarInterpolator、CoordinateInterpolator、 感知节点:TouchSensor、CylinderSensor、PlaneSensor、SphereSensor、Visibility
29、Sensor、ProximitySensor、Collision 点、线、面集节点:ointSet、IndexedLineSet、IndexedFaceSet、Coordinate 海拔节点:ElevationGrid 挤出节点:Extrusion 颜色、纹理、明暗节点:Color、ImageTexture、PixelTexture、MovieTexture、Normal 控制光源的节点:ointLight、DirectionalLight、SpotLight 背景节点:Background 声音节点:AudioClip、M
30、ovieTexture、Sound 细节控制节点:OD 雾节点:Fog 空间信息节点:WorldInfo 锚点节点:Anchor 脚本节点:Script 控制视点的节点:Viewpoint、NavigationInfo 用于创建新节点类型的节点:ROTO、EXTERNPROTO、IS ScalarInterpolator节点 ScalarInterpolator key # exposed field MFFloat keyValue # exposed field MFFloat&
31、#160; 域 key 关键帧时间比率列表。通常介于0.0和1.0之间的浮点数,包括0.0和1.0。 keyValue 浮点数值的列表,对应于上面的列表。 事件 set_fraction eventIn SFFloat 动画的完成比率。 value_changed eventOut MFFloat 与比率相对应的浮点数值。 说明 ScalarInterpolator节点允许对单精度浮点数进行动画关键帧的插值操作。建立插值器时,为动画的不同完成比率设置相应的闶詈冒贾岛徒崾担?br> 通常
32、坐标插值器从时间传感器接收set_fraction事件,经处理后,将输出值发送给类型为单精度浮点数的域。如intensity和radius。 s cript节点 s cript url # exposed field MFString mustuate FALSE # SFBool directOutpur FLASE # SFBool 以下 域可由用户定义任意多个: eventIn eventTypeName eventName field fieldTypeName field
33、Name initialValue eventOut eventTypeName eventName 域 url 脚本的URL或脚本。可能有多个值,浏览器执行第一个它 理解的脚本。 mustuate 指出当浏览器不再需要脚本的输出时是否还要给脚本发输人事件。若为FALSE,浏览器有时可以提高其性能,因为当没有其它节点需要脚本的输出事件时,浏览器可以不发事件给脚本。除非脚本做了诸如访问网络这样一些浏览器无法识别的事,否则应该保留FALSE。 directOutpur 指出是否允许脚本直接改变场景节点和动态地
34、建立或删除通路。换句话说,就是指出脚本是否只能通过事件的方法来与世界联系。如果不是十分必要的话,应设为FALSE,可便于浏览器对场景进行优化。 事件 s cript 节点不能包含内置事件,但对于整个s cript节点的输入输出事件可定义任意多个事件。 说明 一个s cript节点包含一个叫作s cript的程序。这个程序是以javas cript或Java写的。脚本可以接受事件,处理事件中的信息,还可以产生基于处理结果的输出事件。 当一个s cript节点接受一个输入事件时,它将事件的值和时间戳传给与输人事件同名的函数或方法。函数可以通过赋值给
35、与事件同名的变量发送事件。一个输出事件与调用发出输出事件函数的输入事件有相同的时间戳。 当一个脚本给另一个节点发出多个具有相同时间戳的事件时,另一个节点的类型将决定处理事件的顺序。总而言之,这个处理过程最接近用户期望的顺序。例如,如果用户的脚本向某个ViewPoint节点发出有相同时间戳的set_position和setbind事件,浏览器在激活该视点之前会重新设置观点的位置。大多数情况下,用户最好忽略时间戳。 一些脚本语言(包括Java,javas cript)定义了有特殊意义的函数和方法。例如,如果用户提供了一个叫initialize()的函数,则当世界被装入时,首先调
36、用这个函数。另外,如有shutdown()函数,则在删除世界时调用(例如当用户用Anchor选择了另一个世界时)。eventsProcessed()函数在一个或多个eventIn函数完成后被调用(由浏览器决定是完成每个eventIn函数后调用还是等所有输人事件都处理完了再调用)。 Shape节点 Shape appearance NULL # exposed field SFNode geometry NULL # exposed field SFNode 域 appearance 包含一个Appearance节点。&
37、#160;geometry 包含一个几何节点(如:Box、Cone、IndexedFaceSet、PointSet)。 说明 将Appearance指定的材质和质感应用到geometry域的几何节点 Sound节点 Sound source NULL # exposed field SFNode intensity 1 # exposed field SFFloat priority 0 # exposed field SFFloat location 0 0 0 # exposed field SFVec3f&
38、#160;direction 0 0 1 # exposed field SFVec3f minFront 1 # exposed field SFFloat maxFront 10 # exposed field SFFloat minBack 1 # exposed field SFFloat maxBack 10 # exposed field SFFloat spatialize TRUE # SFBool 域 source 包含一个AudioClip或MovieTexture节点。若没有指定,将不发出
39、声音。 intensity 声源的强度,0为最小值,1为最大值。在有些浏览器中最大值可以超过1。 priority 指出声音的优先级。若为背景音乐,则设为0。 location 声源的坐标。 direction 指定椭球的长轴方向。 minFront 声源坐标点至内椭圆球前部端点的距离。 maxFront 声源坐标点至外椭圆球前部端点的距离。 minBack 声源坐标点至内椭圆球后部端点的距离。 maxBack 声源坐标点至外椭圆球后部端点的距离。 spatialize 指出声音是作为空间点播放(TRUE
40、),还是作为环境声播放(FALSE)。 说明 minBack和minFront域定义一个内椭圆;maxBack和maxFront域定义一个外椭圆。 在内椭圆区域内声音为最大值;在外椭圆区域外没有声音;在内外椭圆之间的区域内,其声音按距离衰减。 声音能否同时播放,由浏览器决定。 Sphere节点 Sphere radius 1 # SFFloat 域 radius 球的半径。 说明 Sphere是一个代表球的几何节点。缺省时,球以
41、原点为圆心,以1为半径。 当一个纹理图应用到一个球上时,缺省的纹理将覆盖整个表面,从球体后面逆时针铺开。纹理在yz平面的后面缝合。由于浏览器功能的不同,在使用某些浏览器时,从内部观察球体是不可见的。不要把观察点放到球体内。如果希望看到几何体的内部,使用IndexedFaceSet,将其中solid设为FLASE。 SphereSensor节点 SphereSensor enabled TRUE # exposed field SFBool offset 0 1 0 0 # exposed field SFRotation autoO
42、ffset TRUE # exposed field SFBool 域 enabled 表示传感器当前是否检测定点设备的事件。可向该传感器发送一个值为FALSE的set_enabled时间来关闭它。 offset 在一次拖动后,相关几何体相对于初始位置的旋转角度。 autoOffset 设置为TRUE,表示在拖动结束时,将当前的方位值存储到offset中,若autoOffset设置为FALSE,在用户每次开始一个新的托动时,几何体复位到初始值。 事件 inActive eventOut SFBool 指出用户是
43、否在拖动与传感器相关的几何体。 trackPoint_changed eventOut SFVec3f 用户在拖动过程中任意时刻定点设备在假想的球体表面上的实际位置。 rotation_changed eventOut SFRotation 用户在拖动过程中任意时刻假想球体的当前朝向。 说明 SphereSensor节点将二维的拖 动解释为三维空间中绕局部原点的旋转。若在该节点的兄弟几何体处按下鼠标,浏览器会以点击鼠标的点到原点的距离为半径作一个想象中的球。随后的拖动将解释为旋转球体。 SpotLight节点 Sp
44、otLight on TRUE # exposed field SFBool intensity 1 # exposed field SFFloat ambientIntensity 0 # exposed field SFFloat color 1 1 1 # exposed field SFColor location 0 0 0 # exposed field SFVec3f direction 0 0 -1 # exposed field SFVec3f beamWidth 1.570796 # exposed f
45、ield SFFloat cutOffAngle 0.785398 # exposed field SFFloat radius 100 # exposed field SFFloat attenuation 1 0 0 # exposed field SFVec3f 域 on 指出灯是否打开。 intensity 光源的强度。 ambientIntensity 光源对环境光的贡献。 color 光源的颜色。 location 光源的位置。 direction 光圆锥轴的
46、方向。 beamWidth 光圆锥对应的角度(以弧度为单位)。该角度外,光的强度减弱。 cutOffAngle 光源的遮挡角。 radius 光源的射程。 attenuation 光源的衰减度。域中的第一个数表示常数衰减;第二个数表示对距离线性衰减;第三个数表示对距离平方衰减。对距离平方衰减是三种衰减中最接近现实的,但也是计算最慢的。 说明 一个SpotLight节点定义两个光圆锥:一个光圆锥的顶角等于beamWidth、高等于radius,在其内部光强最大;另一个光圆锥与前一个共轴,顶角等于cutOffAngle,光强从内圆锥表面到
47、外圆锥表面逐渐衰减,直至为零。 Switch节点 Switch whichChoice -1 # exposed field SFInt32 choice # exposed field MFNode 域 whichChoice 活动子项的标号。choice域中的第一个活动子项的标号是0。如果whichChoice的值小于0或者大于choice域中的项目数,那么不选中任何子项。 choice 包含该组节点的各个子项。每个子项有一个隐含的序号。第一个子项的隐含序号为0。 说明 S
48、witch组节点激活choice域中指定的零个或一个子项。非活动子项被忽略。但是,无论是否被激活,Switch节点的所有子项都对事件作出反应。 Text节点 Text string # exposed field MFString fontStyle NULL # exposed field SFNode maxExtent 0.0 # exposed field SFFloat length # exposed field MFFloat 域 string 要显示的文本串,用UTF-
49、8编码。 fontStyle 包括说明如何绘制文本的FontStyle节点。 maxExtent 在该节点文本的任意一行的主要方向上的最大范围,必须大于等于0。如果FontStyle节点的horizonal域是TRUE,则主要方向是水平方向,否则是垂直方向。取值0表示字符串可为任意长度。 length 单个文本串的预期长度。0表示可谓任意长取? 说明 Text节点绘出特殊风格的一个或多个字符串。如果给出多于一个的字符串 ,则每个串单独占一行,行距由FontStyle节点决定。 浏览器决定局部坐标系主要方向上字符串的范围。如果最长的字符
50、串超过maxExtent的范围,它将被缩小到maxExtent的长度范围内;其它的字符串相应缩小同样的程度。 每一个字符串有一个相应的length值,表明设定的字符串长度。浏览器将字符串拉长或压缩到所需长度。缺省值被当作0。 对Text节点不执行碰撞检查。 TextureCoordinate节点 TextureCoordinate point # exposed field MFVec2f 域 point 以二维(s,t)形式给出的一组纹理坐标点,它们一般与IndexedFaceSet
51、或ElevationGrid中的顶点构成对应关系。 说明 这个节点定义了一组二维坐标,用于完成纹理和几何表面顶点间的映射。它通常用在IndexedFaceSet和ElevationGrid节点的texCoord域中。 纹理图参数值沿纹理图像从0到1变化。先确定水平坐标s,然后确定垂直坐标t。 在point域定义的TextureCoordinate值可以在-infinity和+infinity之间变化。如果纹理在某一方向上重复(s或t),那么纹理坐标c映射到沿指定方向有n个像素的纹理图上; location=(c - floor(c)
52、)*n 如果纹理没有重复,c被剪裁到0-1的范围内: location=max(0,min(1,c)*n TextureTransform节点 TextureTransform translation 0 0 # exposed field SFVec2f rotation 0 # exposed field SFFloat rcale 1 1 # exposed field SFVec2f center 0 0 # exposed field SFVec2f 域 transl
53、ation 指定一个平移。 rotation 指定一个以center域中定义的物体中心为原点的旋转(弧度)。 scale 指定一个以center域中定义的物体中心为原点的缩放。两个轴向的缩放程度可以不同。 center 指定一个缩放和旋转的中心。 说明 TextureTransform 节点定义了对纹理坐标的二维变换。这个节点只在Appearance节点的textureTransf orm域使用,它影响纹理映射到相关几何体节点表面的方式。这个节点中的操作的顺序是缩放、旋转、平移 。 TimeSensor节点 Tim
54、eSensor cycleInterval 1 # exposed field SFTime enabled TRUE # exposed field SFBool loop FALSE # exposed field SFBool stsrtTime 0 # exposed field SFTime stopTime 0 # exposed field SFTime 域 cycleInterval 每个周期的长度,以秒为单位,取值大于0。 enabled 若为TRUE,当条件成立时产生时
55、间相关事件;若为FALSE,在任何条件下都不会产生时间相关事件。无论enabled为TRUE或FALSE,通域的 set_事件都被处理并产生_changed事件。 loop 表明时间传感器是无限循环,还是在一个周期后被终止。 stsrtTime 开始产生事件的时间。 stopTime 终止产生事件的时间。其值若小于等于起始时间,则被忽略。 事件 isActive eventOut SFBool 表明时间传感器 当前是否在运行。若在运行,则返回TRUE;若处于停止状态,则返回FALSE。 cycleTime eventOut
56、SFTime 在每个周期开始时,返回当前时间。 fraction_changed eventOut SFloat 当前周期的完成比。从0(周期开始)到1(周期结束)。 time eventOut SFTime 从格林威治时间1970年1月1日子时(午夜12点)至今所经过的秒数。 说明 随着时间的推移,TimeSensor节点产生事件。它能被用来生成动画(通常与插值器一起),能在一个指定时间引发一个动作或者以固定时间间隔产生事件。 通常情况下,时间传感器的starTime被另一个对用户动作作串反应的传感器或脚本传来的
57、时间事件设置。在startTime设定的时刻以前,时间传感器不做任何工作。在该时刻到来时,它产生值为 TRUE的 isActive事件,并开始产生 time、fraction changed和cycleTime事件。 time事件是总保持有一个当前时刻值的连续发生的事件。而产生的其它与时间相关的事件是周期性发生的事件。当loop为FALSE时,时间传感器仅仅运行cycleInterval中设置的一个时间周期(或在第一个周期完成前到达stopTime中设定的时间);而当loop为TRUE时,时间传感器不断地运行,直到到达stopTime中设定的时间或 enabled被设置为FALSE。
58、在每个周期的开始,时间传感器发出fractdrichanged事件(值为0)和cycleTime事件(值为当前时间)。在每一个周期中,当浏览器允许传感器产生一个事件时(通常每帧一次),fraction changed的值从0增加到1,表明当前周期已完成多少。在fractionchanged值为1时,当前周期结束,新的周期开始。 cycleTime事件仅仅在周期开始时产生。若要生成一个次性事件如闹钟,则应把start_Time设置为期望时间,把loop设置为FALSE。这样在startTime到来时,该时间传感器只运行一个周期。 在产生时间相关事件时,时间传感器忽略
59、set_cycleInterval和set_startTime事件。cycleInterval和startTime域的值将不会发生变化,而且不会产生 cycleInterval_changed和startTime_changed事件。若想要重启一个时间传感器,应该首先发送一个与当前时间值相同的set_stopTime事件来停止当前的时间传感器,再发送一个setstartTime事件。 当一个活动的时间传感器收到一个setstopTime事件时,若值大于startTime的值但小于当前的时间值,则它将把stopTime设定为指定值。但像stopTime中设置的时间是当前时间那样,发出结
60、束事件。若set_stopTime事件值小于等于startTime的值,则这一事件将被忽略。 设置loop为TRUE时,时间传感器在startTime到来时开始产生事件,事件将不断地产生或在stopTime到来时停止(如果stopTime大于startTime)。如果希望当浏览器加载一个环境时时间传感器立刻被激活,应将loop设置 为TRUE,让startTime和stopTime保持缺省值(或将它们设置成stopTime小于等于startTime的任何值)。 当时间传感器运行时将loop从TRUE改变为FALSE,传感器将在当前周期结束时或者stopTime到来时停止运行
61、(取决于这两个事件谁先发生)。 时间传感器不保证以某种频率产生时间相关事件,但是大多数浏览器在绘制动画的每一帧时,产生这些事件。 TouchSensor节点 TouchSensor enabled TRUE # exposed field SFBool 域 enabled 表明此传感器是否对定点输入设备做出反应。 事件 isOver eventOut SFBool 表明定点设备当前是否正指向传感器的兄弟几何体(无论是否有键被按下)。 is
62、Active eventOut SFBool 表明是否定点设备的键正在被按下。 hitPoint_changed eventOut SFVec3f 最近在兄弟几何体表面释放键的位置。 hitNormal_changed eventOut SFVec3f hitPoint_changed所指定点的法向量。 hitTexCoord_changed eventOut SFVec2f hitPoing_changed所指定点的纹理坐标。 touchTime eventOut SFTime 定点设备的键完成一次点动
63、的时间。 说明 TouchSensor(触动传感器)节点产生基于定点输入设备(通常是鼠标)的事件。这些事件表明用户是否正在点选某个几何体和用户在什么地方,以及在什么时候按了定点设备的键。 触动传感器监视的几何体是传感器的兄弟几何体传感器父组节点的所有子节点。 若定点设备未指向传感器的兄弟几何体,而用户开始将定点设备移到传感器的兄弟几何体时,传感器将产生一个isOver事件,并将其值设置为TRUE;相反,若定点设备已经指向传感器的兄弟几何体,此时用户将定点设备移出传感器的兄弟几何体,传感器将产生一个isOver事件,并将其值设置为FALSE。 当用户将定点设备从几何体的一点移动到另一点时,传感器将发送
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2024学年粤教版(2019)高中信息技术必修一《数据与计算》第五章第二节《数据的采集》说课稿001
- 2025广告发布代理合同
- 2023三年级数学下册 一 除法第6课时 节约(2)说课稿 北师大版
- 2025广东省果菜采购合同
- 2025广告物料制作合同(年度)
- 2025大厦建筑安装工程承包合同
- 输水工程专项施工方案
- 2023三年级数学上册 一 两、三位数乘一位数第9课时 乘数中间有0的乘法说课稿 苏教版
- 专项代理劳务合同范例
- 8安全地玩 (说课稿)统编版道德与法治二年级下册
- 蛋糕店服务员劳动合同
- 土地买卖合同参考模板
- 2025高考数学二轮复习-专题一-微专题10-同构函数问题-专项训练【含答案】
- 四川省绵阳市2025届高三第二次诊断性考试英语试题(含答案无听力原文及音频)
- 2025年天津市政建设集团招聘笔试参考题库含答案解析
- 2025年八省适应性 历史试卷(西北卷)
- 2024-2030年中国烘焙食品行业运营效益及营销前景预测报告
- 2025年上半年水利部长江水利委员会事业单位招聘68人(湖北武汉)重点基础提升(共500题)附带答案详解
- 公司安全事故隐患内部举报、报告奖励制度
- 人教版高中物理必修二同步练习及答案
- GA/T 458-2021居民身份证质量要求
评论
0/150
提交评论