📄 vrml第十二章到第二十二章.txt
字号:
将该文件中的“#”去掉,再进行观察,将会发现:对于较近的空间视点所看见的空间场景没有任何变化,而切换到一个较远的空间视点时就会发现浏览器窗口中不再显示出原有的空间造型了,这是因为浏览者替身在空间中距离这个空间造型大于NavigationInfo节点所规定的替身能见度,所以在浏览器窗口中不会被显示出来。
[三级高度不同的台阶造型.wrl]
台阶造型中的第1级台阶的高度大约是1个单位,第2个台阶是两个单位,第3级台阶则是3个单位。
第十六章 网上穿梭
在VRML中浏览者可以通过单击虚拟空间中造型而跳转到其他的URL地址上去,当然不但可以跳转到另外的一个VRML文件所创建的虚拟空间去,也可以跳转到一个HTML页面上去。
Anchor节点是一个编组节点,称为锚点编组点。而包含在一个Anchor接点children域值列表中的空间造型就称为这个锚点编组的锚点造型,浏览者只要在浏览器窗口中单击锚点造型就能跳转到相应的URL地址上去,当然这个URL地址也是由Anchor节点中的相应域值给出。
1、WorldInfo节点语法
WorldInfo {
title "" #域值类型 SFString
info [] #域值类型 MFString
}
title域值给出一个简单的字符串来指定所创建VRML空间的标题,这些字符串将出现在VRML浏览器的标题栏上。
info域值给出一个字符串列表,表中给出创建VRML空间的有关作者、创作时间等信息。
WorldInfo节点可以作为任意编组节点的子节点出现,但是浏览器只显示其在VRML文件中所遇到的第1个WorldInfo节点。
[WorldInfo节点的使用方法.wrl]***
2、Anchor节点
在浏览窗口中单击Anchor编组节点所创建的各种窗口就可以进入到相应的URL地址上去,即打开新的页面。
Anchor节点语法
Anchor {
children [] #域值类型 MFNode
bboxCenter 0.0 0.0 0.0 #域值类型 SFVec3f
bboxSize -1.0 -1.0 -1.0 #域值类型 SFVec3f
parameter [] #域值类型 MFString
description "" #域值类型 SFString
url [] #域值类型 MFString
addChildren #输入接口 MFNode
removeChildren #输出接口 MFNode
}
children域值给出的是一系列的造型节点,在VRML浏览窗口中单击这些造型节点在虚拟世界中所创建的空间造型,就可以跳转到相应的URL地址上去。(可以使用事件接口)
bboxCenter指定了一个约束长方体的中心点位置,这个约束长方体的大小应该是children域值中所创建的所以的空间造型。(可以使用事件接口)
bboxSize指定约束长方体在3个不同的空间坐标轴方向上的大小。(可以使用事件接口)
description域值将给出所要跳转的目标页面的简单描述字符串,并且在VRML浏览器窗口中只要将鼠标移动到锚点空间造型上时,就将出现相应的描述。(可以使用事件接口)
url指定一个URL地址列表,即锚点的跳转目标地址。另外在所给出的URL地址的后面加上一个符号"#"和一个在VRML文件中已经存在的Viewpoint节点名称,当跳转到相应的VRML文件时,浏览器窗口中将给定的视点作为当前的观察位置。(可以使用事件接口)
parameter用来给出一个浏览器参数的列表,对于不同VRML浏览器会有不同的参数可供选择,但是通常的参数格式为"参数关键词=给定数值",参阅特定浏览器的使用手册可以得到特定参数的详细说明。(可以使用事件接口)
输入接口addChildren和输出接口removeChildren用来增减children域值中的锚点造型节点,被选中的节点将被加入children列表中或者从children列表中删除掉。
[网上穿梭01.wrl]
第十七章 节点控制
在VRML文件中可以通过Group节点将一组相关的节点组合在一起,这样的一组节点在虚拟世界中通常是某个特定的空间场景。VRML还给出了其他的几个编组节点,其中包括Switch转换编组节点和Billboard布告牌编组节点,另外还有前面已经介绍过的Transform节点。本章主要介绍约束长方体的概念、Switch节点和Billboard节点的语法及使用方法。
1、Group节点
使用Group节点可以将VRML节点汇集在一起。
Group节点语法
Group {
children [] #域值类型 MFNode
bboxSize -1.0 -1.0 -1.0 #域值类型 SFVec3f
bboxCenter 0.0 0.0 0.0 #域值类型 SFVec3f
addChildren #输入接口 MFNode
removeChildren #输出接口 MFNode
}
children可见域的值指定一系列包含在组中的子节点。典型的children域值包括Shape节点和其他编组节点。VRML浏览器通过创建组中包含的每个造型和组来创建组。
bboxSize指定约束长方体的大小,其大小要能包容组中所有造型。第1个值是约束长方体X方向的宽度,第2个值是约束长方体Y方向的高度,第3个值是约束长方体Z方向的深度。
bboxCenter指定约束长方体的中心位置。域值是组的坐标系内的一个三维坐标值。默认值是原点。如果VRML浏览器自动地计算约束长方体大小,它也同时也计算整体范围的中心点位置。
组中子节点序列可以由children可见域的输入接口set_children、addChildren和removeChildren来设置、增加或删除。当一系列节点传送给输入接口的set_children事件时children域中的节点序列由输入节点序列所代替。当一系列节点传送给输入接口addChildren时,输入序列中的每个节点被加到children域中的节点序列上。当一系列节点传送给输入接口removeChildren时,输入序列中的每个节点与子节点序列相比较,如果是相同的节点,则该节点在序列中被删除。在3种情况下,如果子节点序列变化了,那么新的子节点序列将使用Children可见域的输出接口children_changed传递出去。
Group节点中的bboxSize域和bboxCenter域值将在虚拟空间中创建一个约束长方体,VRML浏览器将通过约束长方体来判断这个Group编组节点中的空间造型是否在视野范围内,即是否在浏览器窗口中显示出来。
2、Switch节点
Switch节点通常是将同一个空间造型的不同的版本组织在一起,并且可以实现在不同版本之间的相互切换。
Switch节点语法
Switch {
choice [] #域值类型 MFNode
whichChoice -1 #域值类型 SFInt32
}
choice可见域的值指定组中的一系列子节点。包括Shape节点和其他编组节点(可以使用事件接口)
whichChoice可见域的值决定创建组中的哪一个子节点。字节点的编号是choice域值序列中的第1个子节点,从0开始。如果whichChoice域值小于0,或大于或等于子节点中choice域值序列的节点数,那么,组中的造型都不创建。默认值表示它指定不创建组中的任何造型。(可以使用事件接口)
[对于一个空间造型的不同版本.wrl] 在这个文件的Switch节点中分别设置whichChoice域值为0、1、2就将得到不同的版本。
3、Billboard节点
Billboard节点相对于它的父坐标系创建了一个新坐标系。Billboard组节点中子节点造型的创建相对于新的坐标系原点。
Billboard节点语法
Billboard {
children [] #域值类型 MFNode
axisOfRotation 0.0 1.0 0.0 #域值类型 SFVec3f
bboxCenter 0.0 0.0 0.0 #域值类型 SFVec3f
bboxSize -1.0 -1.0 -1.0 #域值类型 SFVec3f
addChildren #输入接口 MFNode
removeChildren #输出接口 MFNode
}
axisOfRotation可见域的值指定一个任意的旋转轴,组将自动围绕该轴旋转。随着观察者在一定范围内移动,这个轴的转角也在调整,使得组的Z轴始终对准观察者。转轴可以的任意轴。默认转轴是组的坐标系中的Y轴。转轴值为0.0 0.0 0.0时,组将任意转动,而不用绕一个特定的旋转轴转动。(可以使用事件接口)
可以使用DEF来赋予Billboard节点一个定义的名称,并且在VRML文件中使用USE重复引用。每个实例都独立于其他的实例而动作。也就是说,每个实例围绕旋转轴转动一个合适的角度,以便布告版始终面对观察者。
[Billboard编组节点.wrl] 当浏览者在这个空间场景中走动时,这个广告牌始终面朝着浏览者的方向。
第二部分 VRML提高
第十八章 高级造型方法
本章介绍VRML中的高级造型方法,通过这些造型方法就可以随心所欲地在虚拟世界中创建各种各样的空间造型。包括:点线面造型、海拔栅格造型和挤压造型。在VRML中还可以将特定的颜色指定到这些造型上面。
1、挤压空间造型
挤压造型的几个要素,包括放样图形、放样路径、放样方向以及最后形成的空间造型轮廓。这里借用了放样(Loft)的概念。其实VRML中的挤压造型可以视为放样造型的一种,就是放样图形沿着放样路径朝着放样方向“挤压”,并且在一些特殊给定的位置上发生缩放,最后形成的一个空间轮廓。
挤压造型节点Extrusion语法
Extrusion {
crossSection [
1.0 1.0,
1.0 -1.0,
-1.0 -1.0,
-1.0 1.0,
1.0 1.0
] #域值类型 MFVec2f
spine [
0.0 0.0 0.0,
0.0 1.0 0.0
] #域值类型 MFVec3f
scale 1.0 1.0 #域值类型 MFVec2f
orientation 0.0 0.0 1.0 0.0 #域值类型 MFRotation
beginCap TRUE #域值类型 SFBool
endCap TRUE #域值类型 SFBool
ccw TRUE #域值类型 SFBool
solid TRUE #域值类型 SFBool
convex TRUE #域值类型 SFBool
creaseAngle 0.0 #域值类型 SFFloat
set_spine #输入接口 MFVec3f
set_crossSection #输入接口 MFVec2f
set_scale #输入接口 MFVec2f
set_orientation #输入接口 MFRotaior
}
crossSection域的值指定了一系列二维坐标,这些坐标定义了沿着挤出过程的放样路径进行挤出的一个封闭或开放的轮廓。放样图形是作为一个建立在X-Z平面的平滑轮廓的最佳设想,这样每一个二维坐标的第1个值就是沿X轴方向上的距离,而第2个值就是沿Z轴方向上的距离。在这样的条件下,放样图形沿Y轴的绝对方向面上方。crossSection域的默认值是一个正方形。
spine域的值指定了一系列三维坐标,这些坐标定义了一个封闭或开放的轨迹,沿着这条轨迹放样图形被拉动,从而创造了挤出过程。spine默认值是一条直线轨迹,它沿Y轴指向上方。
scale域的值指定了一系列放样图形、比例因数对,它们被使用在沿放样路径的每一个坐标处。每一个比例因数对的第1个值为放样图形指定了一个X方向的缩放比例因数,而第2个值为放样图形指定了一个Z方向的缩放比例因数。缩放比例因数在0.0和1.0之间时,表示缩小放样图形比例,而当它大于1.0时,表示放大放样图形的比例。1.0这个缩放比例表示放样图形大小不变。负的比例因数是无效的。scale域必须包括一个比例因数对又包括放样路径上的一对坐标。当只指定一个比例因数对时,这个因数对使用于所有放样路径上的坐标。
orientation域的值指定了沿放样路径坐标的放样图形的旋转,每一个旋转值指定了一个旋转轴和旋转角。orientation域必须既包括一个旋转值,又包括放样路径上每一个坐标的旋转值。当只提供了一个旋转值时,它对所有的放样路径坐标都适用。默认值是一个零弧度的单一旋转值。VRML浏览器通过使用放样图形、放样路径、缩放比例和旋转值创造了挤出造型,同时还必须在每一个放样路径坐标上按以下步骤进行:
1)把crossSection域中取出的交叉截面平放在X-Z平面上,在这种形态下,放样图形的Y轴方向是朝上的。
2)在原有的比例基础上,依照现在放样路径坐标的X和Z的缩放比例因数缩放放样图形的比例,这些因数从scale域的列表中取出。
3)沿着现在放样路径坐标的切线,自动地确定放样图形的方向,使之对准Y轴。
4)使用现在放样路径坐标的旋转轴和旋转角,进一步旋转放样图形,这些轴和角在orientation域值的列表中。
5)使用三维坐标自动地把放样图形转换到现放样路径坐标上,这些三维坐标在spine域值的列表中。
6)如果第5步中的放样路径坐标不是放样路径的第1个坐标,那么建立一些表面,这些表面能够把现在放样路径坐标上的放样图形同先前坐标上的放样图形连接起来。
beginCap域和endCap域都指定了一个TRUE值或FLASE值,这个值说明了在挤出过程结束时,是否应当建立顶盖和底盖。当使用TRUE值,利用crossSection域中的二维坐标建立一个平坦的盖子表面。如果放样图形不是一个封闭的轮廓,那么盖子表面通过连接最后的和最前的放样图形坐标就把轮廓封起来。当使用FALSE值时,挤出过程结束时并不需要建立盖子的表面。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -