选择题 20 2/个
判断 20 2/个
程序填空20 2/个
简答题10 10 第二章 第四章
编程20
最开始的造型到最后的脚本
脚本
考第一章第二章
灯泡
#########
四种VR系统:桌面式 沉浸式 增强式 分布式
3I特性:沉浸感 交互性 想象力
1 虚拟现实技术概论
什么是虚拟现实:
由计算机产生一种逼真的虚拟三维场景,并使用特殊交互设备让用户在多种感官上产生身临其境的感觉。
-
实时三维空间表现能力
-
自然交互方式
-
身临其境的感受
1.1 虚拟现实技术的发展史
1929年,Edward Link设计出用于训练飞行员的模拟器
1956年,Morton Heilig开发出多通道仿真体验系统Sensorama
1965年,Ivan Sutherland发表论文“Ultimate Display”感觉真实,交互真实
1968年,Ivan Sutherland研制成功了带跟踪器的头盔式立体显示器(Head Mounted Display,HMD)
1972年,Nolan Bushnell开发出第一个交互式电子游戏Pong
1977年,Dan Sandin、Tom DeFanti和Rich Sayre研制出第一个数据手套——Sayre Glove
1.2 虚拟现实技术的概念
虚拟现实技术是指利用计算机生成一种模拟环境,并通过多种专用设备使用户“投入”到该环境中,实现用户与该环境直接进行自然交互的技术。
典型的VR系统的工作方式:
-
用户激活交互设备
-
VR软件根据输入信号对数据库进行更新
-
将相应信息传递给相应设备
虚拟现实系统的组成:
- 用户
- 计算机
- 输入输出设备
- 虚拟现实开发软件
- 数据库
1.3 虚拟现实技术的特征
VR技术的三角形:“3I特性”
- 交互性(Interactivity)
- 沉浸感(Immersion)
- 想像力(Imagination)
1.4 虚拟现实系统的分类
VR的根本目标**:
真实体验+基于自然技术的人机交互
能够达到或部分达到根本目标的系统称为VR系统。
- 桌面式VR系统(Desktop VR)
- 使用个人计算机和低级工作站来产生三维空间的交互场景。
- 周围现实环境干扰->不能获得完全的沉浸感
- 成本相对较低->普及
- 沉浸式VR系统(Immersive VR)
- 利用头盔显示器、洞穴式显示设备和数据手套等交互设备把用户的视觉、听觉和其他感觉封闭起来,而使用户真正成为VR系统内部的一个参与者,产生一种身临其境、全心投入并沉浸其中的体验。
高度的实时性和沉浸感。
- 利用头盔显示器、洞穴式显示设备和数据手套等交互设备把用户的视觉、听觉和其他感觉封闭起来,而使用户真正成为VR系统内部的一个参与者,产生一种身临其境、全心投入并沉浸其中的体验。
- 增强式VR系统(Augmented VR)
- 允许用户对现实世界进行观察的同时,将虚拟图像叠加在真实物理对象之上。
- 为用户提供与所看到的真实环境有关的、存储在计算机中的信息,从而增强用户对真实环境的感受,又被称为叠加式或补充现实式VR系统。
- 可以使用光学技术或视频技术实现。
- 分布式VR系统(Distributed VR)
- 指基于网络构建的虚拟环境,将位于不同物理位置的多个用户或多个虚拟环境通过网络相连接并共享信息,从而使用户的协同工作达到一个更高的境界。
- 主要被应用于远程虚拟会议、虚拟医学会诊、多人网络游戏、虚拟战争演习等领域。
1.5 虚拟现实技术的应用领域
教育与训练
虚拟现实技术能使学习者能直接、自然地与虚拟对象进行交互,以各种形式参与事件的发展变化过程,并获得最大的控制和操作整个环境的自由度。
1、仿真教学与实验
2、特殊教育
3、多种专业训练
4、应急演练和军事演习
设计与规划
虚拟现实已被看作是设计领域中唯一的开发工具。它可以避免传统方式在原型制造、设计和生产过程中的重复工作,有效的降低成本,应用领域包括汽车制造业、城市规划、建筑设计等。
科学计算可视化
科学可视化的功能就是将大量字母、数字数据转换成比原始数据更容易理解的各种图像,并允许参与者借助各种虚拟现实输入设备检查这些“可见的”数据。
它通常被用于建立分子结构、地震以及地球环境等模型。
商业领域
VR技术被逐步应用于网上销售、客户服务、电传会议及虚拟购物中心等商业领域。它可以使客户在购买前先看到产品的外貌与内在,甚至在虚拟世界中使用它,因此对产品的推广和销售都很有帮助。
艺术与娱乐
VR技术所具有的身临其境感及实时交互性还能将静态的艺术(如油画、雕刻等)转化为动态的形式,使观赏者更好地欣赏作者的思想艺术,包括虚拟画廊、虚拟音乐厅、文物保护等方面。
娱乐是VR系统的另一个重要应用领域,市场上已经推出了多款VR环境下的电脑游戏,带给游戏者强烈的感官刺激。
1.6 虚拟现实技术的研究现状
2 虚拟现实系统的硬件设备(简答题 选择判断)
2.1 跟踪定位设备
高精度高可靠性设备 获取人的动作信息 检测对象的位置和朝向 将信息返回给VR设备
人机之间沟通的重要通信手段,是实时处理的关键技术
原理:
典型工作方式:发信号 收信号 处理信号 确认位置 数据->环境处理系统
跟踪器:
-
电磁波:
- 体积小,易穿戴 价格便宜 不受视线阻挡
- 延迟长 范围小 金属/磁场影响->精度低
-
超声波:
-
不收电磁干扰 不收临近物体影响 轻便接收器
-
工作范围有限 信号传输不能受遮挡 受温度气压等影响
飞行时间测量法:
精确度和响应性 受外界噪音脉冲干扰 范围扩大->传输率降低 适合小范围
相位相干测量法:
连续测量 较高传输率
-
-
光学:适合头部活动范围等小范围,高刷新精确率等应用
- 速度快 实时性强
- 小范围 视线阻挡 不能提供角度数据
-
机械:
- 范围受限
- 精度高
-
**惯性:**小心陀螺仪
-
图像提取:摄像机拍摄 图像处理技术(纯软件
- 范围大 无附着感
- 受阻挡 图片要求高(光照,设备) 算法要求
跟踪传感设备性能比较:
响应时间
精度
抗干扰性
分辨率
常用3种跟踪技术性能指标对比:
//
2.2 立体显示设备
人眼立体视觉效应原理:
双眼时差,大脑分析,融合为一幅画面,由此获得距离和深度的感觉
两种立体图像显示技术:
同时显示:同时显示两幅不同光波长的图像,滤光使用户左右眼只能看到对应图像
分时显示:一定频率交替现实同一场景的立体图像,用户以相同频率同步切换的立体眼镜观察图像
立体眼镜:
-
有源眼镜(主动立体眼镜)
- 有线
- 无线
调节左右眼镜通断
-
无源眼镜(被动立体眼镜)
- 偏光眼镜
- 滤光眼镜-红蓝眼镜
使用大屏幕投影显示立体图像:
//
固定显示设备
单台投影主动式立体显示:
- 两倍标准刷新率,有源立体眼镜,分时显示左右眼信息
单台投影被动式
//
多通道被动立体显示:
- 每个通道两台投影机,分别对应左右眼的图像
多通道被动立体显示:
- 边缘融合
- 伽玛校正
- //
相应工作台式显示设备
洞穴式投影显示设备
三维显示器
三维显示器的实现方式
- 特殊涂层,旅馆器代替立体眼镜
- 投影机 闪投 屏幕快转 好像漂浮的影响
- 多个超薄屏幕 闪投
- 全息图像技术 真实空间创造完整的立体影像
头盔显示器
Head Mounted Display
装有位置跟踪器,实施测出头部位置和朝向,输入到计算机
计算机根据数据生成场景图像,由两个显示屏分别提供图像
- 显示屏:CRT(分辨率高)或LCD微机械硅
- 光学作用透镜:调节焦距 (缓解视疲劳,提高适用范围)
衡量头盔显示器性能:
- 逼真的立体视觉
- 分辨率
- 视场FOV
- 透射率
- 重叠率
- 重量
- 人的因素
2.3手部数据交互设备
2.3.1数据手套
数据手套是一种戴在用户手上的传感装置,用于检测用户手部活动的设备,并向计算机发送相应电信号,从而驱动虚拟手模拟真实手的动作。
2.3.2空间球
空间球是一种可以提供6自由度的桌面设备,它被安装在一个小型的固定平台上,可以扭转、挤压、按下、拉出和来回摇摆。
2.3.3三位浮动鼠标器
三维浮动鼠标器的工作原理是:在鼠标内部安装了一个超声波或电磁探测器,利用这个接收器和具有发射器的固定基座,就可以测量出鼠标离开桌面后的位置和方向。
2.4虚拟声音输出设备
为了提供身临其境的逼真感觉,声音输出设备应该满足的要求:
- 使人感觉置身于立体的声场之中
- 能识别声音的类型和强度
- 能判定声源的位置
2.4.1固定式声音设备
扬声器
- 允许多个用户同时听到声音
- 难以达到要求的声音空间定位——难以控制两个耳膜收到的信号,以及两个信号之差。
- 不能包含头部跟踪信息,并用这些信息随着用户头部位置变化适当调节喇叭的输入。
2.4.2耳机式声音设备
耳机式声音设备一般与头盔显示器结合使用。在默认情况下,耳机显示的是头部参照系的声音
2.5 其他交`互设备
2.5.1触觉和力反馈设备
触觉:
- 利用触感识别所探索对象及其方位;
- 利用触感去操作和移动虚拟物体以完成某种任务
分类:
- 触觉反馈:来自皮肤表面敏感神经传感器的触感(几何结构,表面硬度、温湿度等)
- 力觉反馈:身体的肌肉、肌健和关节运动所感受到的力量感和方向感 (对象的重量、惯性等)
设备要求:
- 实时性强
- 安全性强
- 轻便、舒适
触觉和力反馈设备
1.接触反馈设备
- 充气式
- 振动式
- 温度式
2.力反馈设备
(1)桌面式力反馈系统设备安装简单、使用轻便灵巧,并且不会因自身重量等问题而让用户在使用中产生疲倦甚至疼痛的感觉,因此目前已经成为较为常用的力反馈设备。
(2)力反馈手套可以独立反馈每个手指上的力,主要用于完成精细操作
2.5.2人体运动捕捉设备,数据衣
人体运动捕捉的目的:
把真实人的动作完全附加到虚拟场景中的一个虚拟角色上,让虚拟角色表现出真实人物的动作效果。
- 从应用角度来看
- 表情捕捉和身体运动捕捉
- 从实时性来看
- 实时捕捉系统和非实时捕捉
人体运动捕捉设备一般由四部分组成:
- 传感器
- 信号捕捉设备
- 数据传输设备
- 数据处理设备
根据传感器信号类型的不同,运动捕捉设备分为:
- 机械式
- 声学式
- 电磁式
- 光学式
声学式、电磁式
原理与三维定位跟踪设备类似
区别在于:在人体上放置多个传感器
光学式
对人体身上特定光点的监视和跟踪来完成运动捕捉的任务。
感光设备
- 高速数字摄像机获取标记
优点:
- 工作空间很大,运动不受妨碍,足够快的采样率(适于多数体育运动) 。
缺点:
- 最昂贵的运动捕捉系统
- 对光敏感(背景和环境照明都是问题)
- 标记的阻挡(每个标记至少被两个摄像机看到)
微软的Kinect交互设备:
精度一般,稳定性也不高。只能处理一些简单的肢体动作。
数据衣(Data Suit)
数据衣将大量的光纤、电极等传感器安装在一个紧身服上,可以根据需要检测出人的四肢、腰部的活动以及各关节(如腕关节、肘关节)的弯曲角度,然后用计算机重建出图像。
三维扫描仪(3D Scanner)
- 三维扫描仪的功能是通过扫描真实模型的外观特征,构造出该物体对应的计算机模型,通常分为激光式、光学式、机械式等三种类型。
- 三维激光扫描仪(3D Laser Scanner)应用最为广泛,其数据处理的过程一般包括数据采集、数据预处理、几何模型重建和模型可视化等四个步骤。
三维打印机
- 软件程序将三维模型分解成若干个横断面
- 硬件设备使用树脂或石膏粉等材料将这些横断面一层一层的沉淀、堆积,最终形成真实物体。
4 VRML
4.2VRML的语法基础
文件内****定义节点和调用
DEF yrc Shape {#定义
geometry Cylinder {
height 15
radius 0.5
}
appearance Appearance {
material Material {
diffuseColor 0 1 1
}
}
}
USE yrc #使用
4.2.1VRML的组成要素
节点 域 事件(入/出) 路由(连接事件) 脚本 原型
原型:自定义节点 (区别系统节点)
4.2.2VRML的文件结构
4.2.3VRML的空间计量
1.VRML的空间坐标系
三维坐标
原点:VRML浏览器中心
X轴:水平向右
Y轴:垂直向上
Z轴:正向垂直向前,指向浏览者
2.计量单位
描述长度的单位:VRML单位,不等同于显示世界/建模工具的计量单位
描述旋转等单位:弧度
3.色彩
RGB颜色规范
RGB范围:0.0~1.0的浮点数,0.0表示关闭,1.0表示完全打开
4.3 VRML的空间造型
4.3.1造型节点
任何一个VRML虚拟场景中的空间造型必须使用Shape节点创建
Shape节点的语法格式:
Shape{
appearance NULL #SFNode
geometry NULL #SFNode单一节点
}
Shape{
appearence Appearance{}
geometry Cone #以域值形式出现的节点
{
bottomRadius 3.0
height 2.0 #默认为2.0
bottom FALSE
#side 默认为TRUE
}
}
4.3.2简单造型节点
4.3.3复杂造型节点
4.3.3.1PointSet节点
-
不受光源影响,不能粘贴纹理,不能检测碰撞
创建一个四棱柱
![image-20210928120143498](https://gitee.com/yonaspigeon/giteepicstore/raw/master/img/202109281201568.png)
4.3.3.2IndexedLineSet节点
创建由线段组合而成的各种开放或封装的立体几何造型
- 不受光源影响
- 不能粘贴纹理
- 不进行碰撞检测
格式:
![image-20210928120354164](https://gitee.com/yonaspigeon/giteepicstore/raw/master/img/202109281203239.png)
eg:
![image-20210928121021768](https://gitee.com/yonaspigeon/giteepicstore/raw/master/img/202109281210840.png)
4.3.3.3IndeedFaceSet
IndexedFaceSet节点,创建各种由平面组合而成的不规则的立体几何造型。
IndexedFaceSet {
coord NULL
coordIndex []
texCoord NULL#纹理坐标
texCoordIndex []#纹理坐标索引
color NULL
colorIndex []#colorIndex[0,1,1,2,2]x号颜色依次给1,2,3,4,5顶点赋值
colorPerVertex TRUE #基于点着色/面着色
normal NULL #法向 呈现光照明暗变化
normalIndex [] #
normalPerVertex TRUE #
ccw TRUE#逆时针方向连接顶点形成的面是正面
convex TRUE#
solid TRUE#
creaseAngle 0.0
set_coordIndex
set_texCoordIndex
set_colorIndex
set_normalIndex
}
例4-2:将4-1中的五个顶点连成四棱锥体的轮廓线造型。
Shape {
geometry IndexedFaceSet {
coord Coordinate{
point[
0 2 0
-1 0 0
0 0 1
1 0 0
0 0 -1
]
}
coordIndex [
0 1 2 -1
0 2 3 -1
0 3 4 -1
0 1 4 -1
1 2 3 4 -1
]
}
}
4.3.4造型的外观设计
4.3.4.1材质节点:
Material{ diffuseColor 0.8 0.8 0.8 漫反射颜色;造型的颜色主要由该域值决定 ambientIntensity 0.2 有多少环境光被物体表面反射 specularColor 0 0 0 镜面反射光的颜色 emissiveColor 0 0 0 自发光物体产生光的颜色 shininess 0.2 物体表面的亮度 transparency 0 透明度 }
[例]柱体 高 1 半径1 黄色 Shape{ geometry Cylinder { radius 1 height 1 } appearance Appearance { material Material { diffuseColor 1 1 0 } } }
4.3.4.2造型的色彩设计:
简单 同一颜色:diffuseColor
复杂 不同/变化颜色
1.点集
emissiveColor设定单一颜色
不能使用diffuseColor,点集不受光照影响
color域设置颜色
Color{color []}
2.面集
//
4.3.4.3纹理:
三种纹理包装节点: ImageTexture
PixelTexture
MovieTexture
纹理:位图,二维图形
注:如果不使用textureTransform纹理变换域对纹理图进行缩放处理,浏览器会自动调整纹理图的大小使其恰好填满造型表面。
只有人为对纹理图进行缩小处理,使纹理图小于造型表面时,才需要设置repeatS和repeatT域的域值。
1.图像纹理:
ImageTexture{
url [] REM url:指定一个优先级由高到低的图像纹理文件url地址的排序表。或""表示
url "Koala.jpg" REM 图片和wrl在同一个文件夹下
repeatS TRUE REM repeatS:是否沿S方向重复粘贴。
repearT TRUE REM repeatT:是否沿S方向重复粘贴。
}
2.像素纹理:
PixelTexture{
Image 0 0 0
repeatS TRUE
repeatT TRUE
}
无url域,利用image域将纹理直接存放在VRML文件中,浏览器不必调用外部的纹理文件,可以节约网络下载的时间。
其他知识:
- image:设定对造型进行纹理包装的像素纹理的大小、类型和像素值。该域前三个值必须为整数,第一个数表示纹理宽度,第二个数表示纹理高度,第三个数表示纹理类型.
- 单元:灰度像素纹理 (0xFF:最亮;0x00:最暗)
- 双元:灰度加透明度像素纹理
- 三元:RGB彩色像素纹理
- 四元:RGB彩色加透明度像素纹理
- 注:像素纹理图的颜色从左下角第一个像素开始,一直到右上角最后一个像素填满结束。
- image 2 2 3
0xFF0000 0x00FF00
0x0000FF 0xFFFF00 红绿蓝黄依次填充
3.电影纹理:
支持MPEG1-Systems(包含声音和图像),或者MPEG1-Video(只有图像)。如果电影包括伴音,则当播放时MovieTexture节点为Sound声音节点的source域指定所需的声音文件。
MovieTexture{
url [ ] #路径
loop FASLE #是否循环
speed 1.0 #播放速度
startTime 0.0 #开始时间 一般由事件传入
stopTime 0.0 #结束时间
repeatS TRUE #是否沿着S轴重复粘贴
repeatT TRUE #是否沿着T轴重复粘贴
duration_changed #出事件,电影播放时间 /s -1值表示未被装载
isActive #出事件,电影是否正在播放
}
4.纹理坐标变换:
创建一个新的纹理坐标系。通过对纹理坐标系的平移、旋转、缩放等操作,改变粘贴在面的图像和电影纹理的位置、角度和缩放比例。
TextureTransform{
translation 0.0 0.0
rotation 0.0
scale 1.0 1.0
center 0.0 0.0
明暗控制:
REM 设置法向可以控制物体造型外观的明暗程度。
IndexedFaceSet {
normal NULL
normalIndex []
normalPerVertex TRUE
}
4.3.5创建文本造型
格式:
string:一行或多行文本,置于双引号内。多行置于多个双引号内,中间用逗号隔开。
length: 每一行文本造型的长度。浏览器通过改变字符尺寸或字间距来压缩或扩展。该域值与string域值一一对应。默认为0,不扩展也不压缩。
maxExtent:设定文本造型中所对应行的最大有效长度。默认为0,表示对长度无限制。
fontStyle:设置文本造型的外观特征。
文本外观节点:
4.4 造型的空间变换
4.4.1Transform坐标变换节点
用于创建一个或多个不同于默认坐标系的新坐标系
组节点,在此节点下可包含一个或多个子节点,所有子节点的定位中心都基于同一个坐标系的原点。这些子节点可以是Shape、Group和Transform节点。
Transform{
children []#Shape节点
translation 0 0 0#平移向量
rotation 0 0 1 0#旋转轴(0 0 0 连接0 0 1) + 弧度(0)
scale 1 1 1#三轴缩放
scaleOrientation 0 0 1 0#朝向
###################################################################
bboxCenter 0 0 0#包围盒 形状简单,尽量紧密包围
bboxSize -1 -1 -1#-1 -1 -1为不设包围盒
center 0 0 0#相对移动的中心 0 0 0为自己的中心
addChildren #事件
removeChildren
}
4.4.2造型编组和素材调用
4.4.3编组和素材调用:
VRML提供了一类具有编组功能的节点,它们可以将多个造型作为自己的子节点组合成一个整体,一起进行平移、旋转、缩放、外观设计、定义和调用等。
一 Group编组节点
Group{
children []
bboxCenter 0 0 0
bboxSize -1 -1 -1
addChildren REM 事件
removeChildren
}
素材调用的基本方法
1 采用DEF节点定义及USE节点引用的方法,在本文件范围内定义和调用不需要进行改动的素材,使其成为场景中的一部分;
2 利用Inline内联节点,从本文件范围之外的其他文件或者互联网上,调用不需要进行修改加工的素材,使其成为场景中的一部分;
3 利用带链接功能的Anchor锚节点,将存储在本机硬盘或互联网上的素材作为一个新的完整场景调用,取代原有场景;
4 利用PROTO语句和EXTERPROTO语句,在本文件范围内或本文件范围外及互联网上定义原型节点和外部原型节点,调用素材时可根据需要对其原有的属性进行更改或赋予更多的功能。
4.4.3.1内联:
Inline{
url “ ”
bboxCenter 0 0 0
bboxSize -1 -1 -1
}
4.4.3.2Anchor锚链接节点
Anchor{
children []
description “ ”REM 描述/提示语
parameter []REM 关键字=值
url “ ”REM 替换当前场景的新场景
bboxCenter 0 0 0
bboxSize -1 -1 -1
addChildren
removeChildren
}
4.4.3.3原型的定义和调用
前面三类调用只适用于对素材不需要进行加工处理,原汁原味调用的情况,如果需要对素材属性进行更改或赋予更多的功能后调用,可使用PROTO原型节点或EXTERNPROTO外部原型节点,它们可定义可供修改的属性。
原型:即自定义节点。设计者可以根据需要,利用原型创建一种新的节点类型,可通过对节点类型实例化建立新节点,可以为新节点添加各种域和事件。
原型具有如下功能:
- 素材调用功能。(原型可作为素材库,反复调用)
- 节点扩展功能。
- 动态更新和保护功能。(通过设置接口中的域和事件,对虚拟现实中造型属性进行更改或者限制更改,从而达到场景的动态更新和保护一些造型不被改动的目的)
- 造型及动作打包功能。(VRML中标准节点均不具备行为自控能力,通过原型可将造型与交互动作、事件、脚本等VRML元素捆绑使用)
- 网络动作功能。(原型可在当前文件中定义和反复调用,外部原型可在其他文件和网络中定义,在当前文件中反复调用,提供了跨越网络的强大功能)
PROTO nodeTypeName rem第一部分
[
field fieldType域类型 fieldName域名 DEFaultValue默认域值
exposedField可以外部访问的域 fieldType fieldName DEFaultValue
eventIn入事件 eventInType eventInName
eventOut出事件 eventOutType eventOutName
] rem 第二部分:接口
{
nodebody #节点体,定义节点执行内容 rem第三部分
}
节点体内的节点在使用节点接口中设置的各种域及事件时,必须使用IS语句进行连接。使用IS语句可以在节点体内反复使用同一个域或事件,但是必须注意接口元素的类型一定要与引用节点中的数据、事件的类型相匹配。
1.内部原型:
使用PROTO语句定义的原型节点,定义和调用必须在同一个VRML文件中运行,应用范围受到限制。
例4-15:使用PROTO语句定义一个名为Coclock的钟表原型节点,并为其设置表身颜色、表身尺寸及钟表位置三个接口域;调用原型节点时,通过设置接口域的域值,改变钟表的位置、颜色及尺寸。
#VRML V2.0 utf8
PROTO COClock
[
field SFColor bodyColor 1 0 0 # 颜色
field SFVec3f bodySize 4 4 2 # 大 小
field SFVec3f bodyPos 0 0 0 # 位置
]
{
Transform {
translation IS bodyPos # IS语句连接控制 步
children [
Shape {
geometry Box {
size IS bodySize # IS语句连接控制 步
}
appearance Appearance {
material Material {
diffuseColor IS bodyColor # IS语句连接控制 步
}
}
}
]
}
}
#成 功
COClock {
bodyColor 1 1 0
bodySize 0.1 0.2 3
bodyPos 0 0 0
}
2.外部原型:
如果想从其他VRML文件或者网络中调用已经定义了的原型节点,VRML提供了EXTERNPROTO语句用来定义外部原型节点。
这样,我们可以将所有原型节点集中保存在本机或网络上的某一个VRML文件中,组成原型素材库,方便设计者利用EXTERNPROTO语句定义和调用。
EXTERNPROTO nodeTypeName
[
field fieldType fieldName
exposedField fieldType fieldName
eventIn eventInType eventInName
eventOut eventOutType eventOutName
]rem 接口
url or urlList
方括号中的接口域,公共域,入事件,出事件应与被引用的外部文件中由PROTO语句定义的原型节点中的完全一致或根据需要取其中的一部分。
如果在指定的外部文件中包括多个PTOTO语句定义的原型节点,可用以下格式指定要调用的原型节点:
“外部文件名#原型节点名”
例4-16:新建一个index.wrl,并引用sample4-15.wrl中的钟表原型节点。
#VRML V2.0 utf8
EXTERNPROTO COClock
[
field SFColor body