📄 vrml第一章到第十一章.txt
字号:
startTime 0.0 #域值类型 SFTime
stopTime 0.0 #域值类型 SFTime
repeatS TRUE #域值类型 SFBoot
repeatT TRUE #域值类型 SFBoot
isActive #输出接口
duration_changed #输出接口
}
url用于指定一个造型表面材质贴图的地址列表,其中优先级从高到低排列。(可以应用事件接口)
loop用于指定相应的MPEG文件是否循环播放。缺省值表示只播放一次。(可以应用事件接口)
speed指定MPEG文件播放速度。大于1.0将以大于正常速度的速度播放。小于1.0则文件以小于正常速度的速度播放。如果为一个负值时则文件将反方向播放(-1.0反向正常速度)。(可以应用事件接口)
startTime指定MPEG文件播放的开始时间。格林威治时间,单位秒。(可以应用事件接口)
stopTime指定MPEG文件播放的结束时间。格林威治时间,单位秒。如果stopTime域值大于或等于startTime域值时,MPEG文件将不停地播放下去。当达到startTime指定的播放开始时间文件开始播放,同时输出接口isActive将自动输出TRUE;在文件停止播放时,输出接口isActive将自动输出FALSE。另外在MPEG文件停止播放的时候,将自动用该文件的第1帧或最后一帧作为空间造型的表面贴图。(可以应用事件接口)
改变后的持续时间通过输出接口duration_changed传送出去,单位是秒。另外用MovieTexture结点指定的材质贴图在各种造型表面上的安排方式和前面介绍的ImageTexture节点完全相同。如果指定了灰度的MPEG文件,Material节点也将同时作用于造型,产生各种特殊效果。
3.PixelTexture该节点不需要外部文件作为材质贴图,而是直接在VRML文件中指定贴图的各点的颜色值,即相当于将贴图文件嵌入到了VRML内部。
PixelTexture节点语法
PixelTexture{
image 0 0 0 #域值类型 SFImage
repeatS TRUE #域值类型 SFBool
repeatT TRUE #域值类型 SFBool
}
image域用来指定材质贴图的每个像素大小的特征值。通常image域值包括3个正整数和一个像素特征值的列表。(Image域值可以通过时间输入接口set_image进行重新设置;新的image域值通过输出接口image_changed传送出去。)
Image中3个整数的意义:
第1个正整数:表示材质的宽度,单位为像素
第2个正整数:表示材质的长度,单位为像素
第3个正整数:表示为每个像素指定的特征值位数。有效值为0、1、2、3和4共5个值。
[PixelTexture节点_image.wrl]
有效image域值及意义(第3个正整数)
特征位数 表示意义 像素点的特征值含义 举例说明
0 禁止材质贴图
1 创建灰度贴图 用一个字节表示像素点的灰度值,最小值0x00表示黑色,最大值0xff表示白色 0xff:白色 0x80:中等灰度 0x00:黑色
2 创建有透明度的灰度贴图 第1个字节表示像素点的灰度值,其规定同上;第2个字节表示像素点的透明度,最小值0x00表示该点完全透明,最大值表示该点不透明 0xffff:不透明白色 0x8000:完全透明灰色 0x0080:半透明黑色
3 创建RGB材质贴图 3个字节依次用来指定该点的Red、Green和Blue的颜色值,最大均为0xff,最小值均为0x00 0xff0000:红色 0x00ff00:绿色 0x0000ff:蓝色 0xffff00:黄色 0xffffff:白色 0x000000:黑色
4 创建有透明度的RGB材质贴图 前3个字节用于指定RGB颜色值;最后一个字节用来指定透明度 0xffffffff:不透明白色 0x00000000:透明黑色 0xff000080:半透明红色 0x80808080:半透明灰色
当指定了前3个正整数之后将依次为每一个像素点指定相应的特征值。所需的特征值列表中组元的个数和组元的格式则依据前3个正整数的取值。特征值说明像素点的顺序是从左到右,从下到上,从左下角开始到右上角结束。
每一个像素点特征值的说明通常采用十六进制,两位十六进制就是一个字节,在VRML文件中通常在一个数值前面加上前缀0x表示这个数值是一个十六进制的数值。
★使用技巧:在大多数的图象处理软件中自带调色板程序都是采用以十进制表示一个字节来计量颜色值,即最小为0而最大值为255。用十进制表示的值只要除以255就可以转化为VRML文件中惯用的RGB颜色表示法。
特征值的字节数由前面的第3个正整数指定。
第九章 空间背景
整个空间背景分为两个部分:天空sky和地面ground,两者之间以地平线分隔。可以分别指定天空和地面的颜色,其默认颜色为黑色。
1、Background节点语法
Background{
groundAngle [] #域值类型 MFFloat
groundColor [0.0 0.0 0.0] #域值类型 MFColor
skyAngle [] #域值类型 MFFloat
skyColor [0.0 0.0 0.0] #域值类型 MFColor
frontUrl [] #域值类型 MFString
backUrl [] #域值类型 MFString
leftUrl [] #域值类型 MFString
rightUrl [] #域值类型 MFString
topUrl [] #域值类型 MFString
bottomUrl [] #域值类型 MFString
set_bind [] #输入接口 MFBool
bind_changed [] #输出接口 MFBool
}
groundAngle域值是一个需要指定特定颜色位置的地面角的列表,地面角以从小到大的顺序排列,缺省值是一个空的列表。在指定了特定颜色位置之间的地面部分的颜色将从上一个颜色自动地平滑过渡到下一个颜色。(可以使用事件接口)
groundColor是一个和groundAngle域值的地面角列表中的地面角相对应的颜色值列表。当指定了一个非空的颜色列表之后,浏览器将自动地把列表中的第1个颜色值指定为地面角为0度,即空间正下方背景球体和空间坐标系的Y轴负半轴的交点处的颜色;列表中的第2个颜色值将被指定为groundAngle域值列表中的第1个地面角指定位置处的颜色值;依此类推。任意两个相邻的角度值之间的颜色值将自动的平滑过渡。(可以使用事件接口)
如果groundAngle域所指定的地面角列表中的最后一个角度值小于180度,那么从这个角度到180度地面角之间将自动的显示为透明状态。
skyAngle域值是一个需要指定特定颜色位置的天空角的列表,天空角以从小到大的顺序排列,缺省值是一个空的列表。在指定了特定颜色位置之间的天空部分的颜色将从上一个颜色自动地平滑过渡到下一个颜色。(可以使用事件接口)
skyColor是一个和skyAngle域值的天空角列表中的天空角相对应的颜色值列表。当指定了一个非空的颜色列表之后,浏览器将自动地把列表中的第1个颜色值指定为天空角为0度,即空间正上方背景球体和空间坐标系的Y轴正半轴的交点处的颜色;列表中的第2个颜色值将被指定为skyAngle域值列表中的第1个天空角指定位置处的颜色值;依此类推。任意两个相邻的角度值之间的颜色值将自动的平滑过渡。(可以使用事件接口)
和地面着色不同的是,如果skyAngle域所指定的天空角列表中的最后一个角度值小于180度,那么从这个角度到180度天空角之间将自动地显示为最后一个角度值处的颜色,而不是显示为透明状态。
frontUrl域值是一个指定到空间背景的正方体正面上的背景图象地址列表(即面对着浏览者的那个面),这些地址按照优先级的高低排列,顺序靠前的地址优先级较后面的地址高。(可以使用事件接口)
backUrl、leftUrl、rightUrl、topUrl、bottomUrl与frontUrl的域值类似。(都可以使用事件接口)
2、Background节点的使用
[有渐变效果的天空1.wrl]
[有渐变效果的天空2.wrl]
[有渐变效果的天空3.wrl]
[有渐变效果的天空4.wrl]
3、背景变换
在VRML中具体的背景切换过程是通过Background节点的输入接口set_bind和输出接口bind_changed来实现的。只要向需要指定为当前背景的Background节点的输入接口set_bind中发送一个TRUE值,则这个Background节点就将变成当前背景节点;同时原先的当前背景节点输出接口isBound向外发送一个FALSE值,就不再是当前背景节点,空间的环境背景同时发生变换。
下面的例子的变换主要是通过一个触发器TouchSensor来实现的,只要单击触发器所连接着的空间造型就能切换当前的空间背景。在这个VRML文件中一共创建了3个不同的空间背景。
[背景变换01.wrl]
第十章 大气效果
大气中的雾是用Fog节点来实现的。
1、Fog节点语法
Fog {
color 1.0 1.0 1.0 #域值类型 SFColor
fogType "LINEAR" #域值类型 SFString
visibilityRange 0.0 #域值类型 SFFloat
set_bind #输入接口 SFBool
bind_changed #输出接口 SFBool
}
color域用来指定这个Fog节点创建的雾的颜色,缺省为白色的雾。
fogType指定这个Fog节点创建的雾的类型,其有效值有两个:"LINEAR"和"EXPONENTIAL",即指定了雾的浓度随距离大小的变化规律。
fogType域的有效值说明
有效值 中文译义 浓度变化规律
LINEAR 线性雾 雾的浓度和与观察者的距离成正比
EXPONENTIAL 指数雾 雾的浓度和与观察者的距离的平方成正比
相同的观察距离上指数雾的浓度变化比线性雾的浓度变化大。
visibilityRange指定在这个Fog节点创建的雾中观察者的可是范围,这个域值由一个以VRML单位给出的实数值。在这个单位范围内的雾浓度将由近及远逐渐增大,直至到达由visibilityRange域给定的可视范围的最小处,在此之外的空间景物不再能看见了。
节点的输入接口set_bind和输出接口bind_changed同第九章中Background节点。
2、Fog节点的使用方法
[Fog节点的使用方法01.wrl]
[Fog节点的使用方法02.wrl]
[Fog节点的使用方法03.wrl]
3、大气效果的变换
在同一个VRML文件中同时写入几个Fog节点,而物理位置排在第一的那个Fog节点自动作为开始进入浏览时的空间大气。
[大气效果的变换.wrl]
第十一章 添加声音
虚拟世界中所需要的各种声音可以简单地分为两类:背景声音和动作声音。在VRML中有效的声音文件包括MIDI文件和WAV文件。MIDI文件通常是一些较长的音乐文件,常被用作某一个特定场景中的背景音乐;而WAV文件通常是一些音效,被作为动作声音而大量地使用。MPEG同样也可以作为一个外部的声音文件引入,要创建一台正在播放节目的电视机这种同时存在声音和图象的造型时通常采用MPEG格式。
1、声音节点
AudioClip节点用来引入一个外部声音文件。
AudioClip {
url [] #域值类型 MFString
description "" #域值类型 SFString
startTime 0.0 #域值类型 SFTime
stopTime 0.0 #域值类型 SFTime
loop FALSE #域值类型 SFBool
pitch 1.0 #域值类型 SFFloat
isActive #输出接口 SFBool
duration_changed #输出接口 SFFloat
}
url指定声音文件的地址列表,列表中的地址按照优先级从高到低依次排列。(可以使用事件接口)
description是一串介绍所引入的声音文件的说明字符串,用在由于浏览器本身的限制而导致了这个声音文件不能正常播放时在浏览器窗口中出现的说明文字。(可以使用事件接口)
loop指定是否循环播放所指定的声音文件,指定为TRUE时声音文件将自动地循环播放直到结束浏览为止;若指定为FALSE时则声音文件只是播放1次就结束了。(可以使用事件接口)
pitch指定声音文件的播放速度。取值为1.0时,声音文件将按照固有的速度播放;小于1.0时而大于0.0时,声音文件的播放速度将变慢;大于1.0时,声音播放速度加快。(可以使用事件接口)
startTime指定声音文件开始播放的绝对时间。(可以使用事件接口)
stopTime指定声音文件结束播放的时间。(可以使用事件接口)
duration_changed输出声音文件固有的播放长度,单位秒。
2、Sound节点
AudioClip节点VRML中通常是作为Sound节点的source域的域值出现的。Sound节点是用来指定一个声源的各种参数,可以说一个Sound节点在VRML中正好对应着一个声音。另外由于硬件条件的限制,对于在VRML世界中能够同时听到的声音的个数总是有一定的限制,当在VRML文件中所给出的Sound个数超过硬件所能支持的声音个数,其中一些声音就不能播放,这时就需要指定各个Sound节点的优先级别。
Sound节点语法
Sound{
source NULL #域值类型 SFNode
location 0.0 0.0 0.0 #域值类型 SFVec3f
direction 0.0 0.0 1.0 #域值类型 SFVec3f
intensity 1.0 #域值类型 SFFloat
minFront 1.0 #域值类型 SFFloat
minBack 1.0 #域值类型 SFFloat
maxFront 10.0 #域值类型 SFFloat
maxBack 10.0 #域值类型 SFFloat
priority 0.0 #域值类型 SFFloat
spatialize TRUE #域值类型 SFBool
}
source域的域值通常就是一个用来引入外部声音文件的节点。(可以使用事件接口)
location指定空间声源的位置。(可以使用事件接口)
direction指定声源的空间朝向,其值给出的是一个空间的向量值,该Sound节点创建的空间声源将以这个空间向量的正方向作为声音发射的方向。空间向量的正方向就是从当前的坐标原点指向这个给出的空间的方向。缺省值表示这个声音的方向是朝着空间坐标系的Z轴正方向。(可以使用事件接口)
priority用来指定这个Sound节点在VRML空间中的优先级别,其域值范围是从1.0到0.0的实数,其中1.0为最高优先级,0.0是最低优先级。另外在优先级相同的情况下根据浏览者的位置听到的声音的音量来决定声音的优先级,VRML浏览器将优先播放声音较大的那个声音。(可以使用事件接口)
spatialize指定是否在VRML空间中将声音文件进行立体化处理,其域值为TRUE时,引入的外部声音文件将进行立体声处理后在VRML空间播放。(可以使用事件接口)
[见图 声源有效距离的规定.jpg]
direction域值所指定的声源的播放方向来确定播放范围的前点和后点,其中最大和最小有效区域和声源方向的两个交点分别称为最大前点和最小前点。同样在声源方向相反的方向上可以得到最小后点和最大后点。在VRML的Sound节点中就是通过分别指定空间声源的前点和后点共4个空间点的方法来给空间声源的有效范围的。如果所指定的最大有效范围小于最小有效范围小于最小的有效范围,那么大的声音范围将被忽略,在最小有效范围之内将不能听到这个声源所播放的声音。
maxFront、minFront、maxBack、minBack(可以使用事件接口)
2、用声音节点添加声音
[用声音节点添加声音一个声源.wrl]
[用声音节点添加声音二个声源.wrl]
用MPEG文件作为声源声音文件的例子
[电视机.wrl]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -