论文部分内容阅读
摘要:VRML语言是一种建模语言,广泛应用于虚拟实验中。本文介绍如何利用VRML语言实现幻灯机的虚拟实验。
关键词:VRML;虚拟实验;幻灯机
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)12-20ppp-0c
The Design and Realization of Virtual Experiment of the Slide Projector Based on VRML
XIN Yun-dong
(The Information and Technology Department of Jining College, Qufu 273155, China)
Abstract: The VRML is a Modeling Language, which is applied in virtual experiment widly. The virtual experiment of slide projector is realized in VRML language.
Key words: VRML; Virtual experiment; Slide projector
1 VRML语言介绍
VRML(Virtual Reality Modeling Language)即虚拟现实建模语言,是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,具有平台无关性,是目前虚拟实验制作的主流语言。VRML的对象称为节点,子节点的集合可以构成复杂的景物。节点可以通过实例得到复用,对它们赋以名字,进行定义后,即可建立动态的VR(虚拟世界)。
虚拟现实的三大特点就是沉浸感、交互性、构想性。VRML不仅支持数据和过程的三维表示,而且能提供带有音响效果的节点,用户能走进视听效果十分逼真的虚拟世界。用户能与虚拟对象交互,并得到相应的反馈信息,就像在真实的实验环境中,为用户带来了全新的感受。
2 幻灯机虚拟实验的设计
2.1 创建虚拟实验环境的VR界面
构建逼真三维效果的空间场景和实体。这些场景和实体与真实世界的几何特征和物理特性基本相同,提供实验环境和进行实验操作的虚拟空间。实验者在进行实验时,能够体验到具有基本真实感的三维视觉空间。本虚拟实验室需要进行建模的实验实体有实验室场景(包括墙壁、地面、顶棚、灯光、实验台)、幻灯机、幻灯片、银幕。
2.2 设计并实现基于VRML的幻灯机操作功能
这是实现系统功能的主要部分。实验者在虚拟实验环境中完成幻灯机实验的各个环节。操作功能包括连接电源、放置幻灯片、调焦、换片等。
2.3 实验组成部分
该实验包括以下几个部分:正确放置幻灯片、连接电源、调焦、换片。
3 幻灯机虚拟实验的实现
这里以直线盒式幻灯机为例。
3.1 实验器材的设计
实验器材包括实验台、银幕、幻灯机三部分。有两种方法可以实现。一是直接用VRML语言创作,主要用到了Transform、Shape节点;二是用3DMAX制作完之后,导出VRML文件格式,再对其中的一些错误进行修改。这里采用VRML语言直接编辑,幻灯机的效果如图1。
3.2 正确放置幻灯片
幻灯机就是利用凸透镜当物体距透镜的距离大于一倍焦距而小于二倍焦距时成倒立、放大的实像这个原理制成的。当幻灯片离镜头的距离在一倍焦距和二倍焦距之间,用强光照射幻灯片时,就可以在屏幕上得到倒立、放大的实像。为了使得到的像成为“正立”的,所以要把幻灯片上下颠倒放置。幻灯片的初始位置在实验台上,在幻灯片上加一个接触传感器,当单击幻灯片时,便出现一个动画,演示如何放置幻灯片。制作这个动画较简单,这里不再赘述。
3.3 连接电源
放好幻灯片后,需要接通电源,开始实验。电源的连接操作应该是将电源插头插入插座。为了实现连接电源,有两种方式:一是电源导线由无到有的显示;二是做一个动画,将电源插头插入插座的过程进行模拟。两种方式都可以。这个相对来说也简单,重点开发的是下面两方面。
3.4 调焦
根据成像公式1/f=1/u 1/v(u、v、f分别代表像距、物距、焦距),幻灯机的放置位置不一样,在银幕上成的像的清晰度就不一样。所以需要调焦。调焦动画的模拟是这样的:当单击镜头左半部分时,镜头向左转动、向后移动;单击镜头右半部分时,镜头向右转动、向前移动。为使动画模拟更逼真,镜头的转动应具有继承性,这就需要两个变量分别记录上次转动的角度及距离,然后再加上本次转动的角度及距离,使动画具有了继承性。还有一点,那就是在镜头转动的过程中,物距发生变化,像距也随之发生变化,那么,幻灯片能否在银幕上成清晰的像也在变化。为了实现成像的清晰度的变化的模拟,采用了在银幕前加一个很薄的方体,设置为白色,通过改变其透明度属性(transparency),来改变成像的清晰度。主要代码及注释如下:
DEF tiaojiaocontrol Script {
eventIn SFFloat jingtoutimefraction#时间片段
eventIn SFVec3f jingtoutouchpoint#接收点击点位置的入事件
eventIn SFTime jingtoustarttime#点击的开始时间
eventOut SFRotation jingtourotation#转动角度的出事件
eventOut SFVec3f jingtouqianhouyidong#镜头前后移动的距离
eventOut SFFloat jiaoju#改变银幕成像的清晰度
field SFVec3f touchpoint 0 0 0#判断点击位置的中间变量
field SFFloat jtzd 0#记录上次转完后,所处的角度
field SFFloat qianzd 0#记录上次转过的角度
field SFFloat houzd 0#记录本次转过的角度
field SFFloat juli 0#记录上次转完后,所处的位置
field SFFloat qianydjuli 0#记录上次移动的距离
field SFFloat houydjuli 0#记录本次移动的距离
url "javascript:
function jingtoustarttime(value){
qianzd=jtzd;
houzd=0;//在本次转动之前,先将其置零 ,使其具有继承性
qianydjuli=juli;
houydjuli=0;
}
function jingtoutouchpoint(value){touchpoint=value;}
function jingtoutimefraction(value){
houzd=houzd 0.002;
houydjuli=houydjuli .002;
if(touchpoint[0]<0.035) { //向左转
jingtourotation[0]=0;jingtourotation[1]=0;jingtourotation[2]=1;
关键词:VRML;虚拟实验;幻灯机
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)12-20ppp-0c
The Design and Realization of Virtual Experiment of the Slide Projector Based on VRML
XIN Yun-dong
(The Information and Technology Department of Jining College, Qufu 273155, China)
Abstract: The VRML is a Modeling Language, which is applied in virtual experiment widly. The virtual experiment of slide projector is realized in VRML language.
Key words: VRML; Virtual experiment; Slide projector
1 VRML语言介绍
VRML(Virtual Reality Modeling Language)即虚拟现实建模语言,是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,具有平台无关性,是目前虚拟实验制作的主流语言。VRML的对象称为节点,子节点的集合可以构成复杂的景物。节点可以通过实例得到复用,对它们赋以名字,进行定义后,即可建立动态的VR(虚拟世界)。
虚拟现实的三大特点就是沉浸感、交互性、构想性。VRML不仅支持数据和过程的三维表示,而且能提供带有音响效果的节点,用户能走进视听效果十分逼真的虚拟世界。用户能与虚拟对象交互,并得到相应的反馈信息,就像在真实的实验环境中,为用户带来了全新的感受。
2 幻灯机虚拟实验的设计
2.1 创建虚拟实验环境的VR界面
构建逼真三维效果的空间场景和实体。这些场景和实体与真实世界的几何特征和物理特性基本相同,提供实验环境和进行实验操作的虚拟空间。实验者在进行实验时,能够体验到具有基本真实感的三维视觉空间。本虚拟实验室需要进行建模的实验实体有实验室场景(包括墙壁、地面、顶棚、灯光、实验台)、幻灯机、幻灯片、银幕。
2.2 设计并实现基于VRML的幻灯机操作功能
这是实现系统功能的主要部分。实验者在虚拟实验环境中完成幻灯机实验的各个环节。操作功能包括连接电源、放置幻灯片、调焦、换片等。
2.3 实验组成部分
该实验包括以下几个部分:正确放置幻灯片、连接电源、调焦、换片。
3 幻灯机虚拟实验的实现
这里以直线盒式幻灯机为例。
3.1 实验器材的设计
实验器材包括实验台、银幕、幻灯机三部分。有两种方法可以实现。一是直接用VRML语言创作,主要用到了Transform、Shape节点;二是用3DMAX制作完之后,导出VRML文件格式,再对其中的一些错误进行修改。这里采用VRML语言直接编辑,幻灯机的效果如图1。

3.2 正确放置幻灯片
幻灯机就是利用凸透镜当物体距透镜的距离大于一倍焦距而小于二倍焦距时成倒立、放大的实像这个原理制成的。当幻灯片离镜头的距离在一倍焦距和二倍焦距之间,用强光照射幻灯片时,就可以在屏幕上得到倒立、放大的实像。为了使得到的像成为“正立”的,所以要把幻灯片上下颠倒放置。幻灯片的初始位置在实验台上,在幻灯片上加一个接触传感器,当单击幻灯片时,便出现一个动画,演示如何放置幻灯片。制作这个动画较简单,这里不再赘述。
3.3 连接电源
放好幻灯片后,需要接通电源,开始实验。电源的连接操作应该是将电源插头插入插座。为了实现连接电源,有两种方式:一是电源导线由无到有的显示;二是做一个动画,将电源插头插入插座的过程进行模拟。两种方式都可以。这个相对来说也简单,重点开发的是下面两方面。
3.4 调焦
根据成像公式1/f=1/u 1/v(u、v、f分别代表像距、物距、焦距),幻灯机的放置位置不一样,在银幕上成的像的清晰度就不一样。所以需要调焦。调焦动画的模拟是这样的:当单击镜头左半部分时,镜头向左转动、向后移动;单击镜头右半部分时,镜头向右转动、向前移动。为使动画模拟更逼真,镜头的转动应具有继承性,这就需要两个变量分别记录上次转动的角度及距离,然后再加上本次转动的角度及距离,使动画具有了继承性。还有一点,那就是在镜头转动的过程中,物距发生变化,像距也随之发生变化,那么,幻灯片能否在银幕上成清晰的像也在变化。为了实现成像的清晰度的变化的模拟,采用了在银幕前加一个很薄的方体,设置为白色,通过改变其透明度属性(transparency),来改变成像的清晰度。主要代码及注释如下:
DEF tiaojiaocontrol Script {
eventIn SFFloat jingtoutimefraction#时间片段
eventIn SFVec3f jingtoutouchpoint#接收点击点位置的入事件
eventIn SFTime jingtoustarttime#点击的开始时间
eventOut SFRotation jingtourotation#转动角度的出事件
eventOut SFVec3f jingtouqianhouyidong#镜头前后移动的距离
eventOut SFFloat jiaoju#改变银幕成像的清晰度
field SFVec3f touchpoint 0 0 0#判断点击位置的中间变量
field SFFloat jtzd 0#记录上次转完后,所处的角度
field SFFloat qianzd 0#记录上次转过的角度
field SFFloat houzd 0#记录本次转过的角度
field SFFloat juli 0#记录上次转完后,所处的位置
field SFFloat qianydjuli 0#记录上次移动的距离
field SFFloat houydjuli 0#记录本次移动的距离
url "javascript:
function jingtoustarttime(value){
qianzd=jtzd;
houzd=0;//在本次转动之前,先将其置零 ,使其具有继承性
qianydjuli=juli;
houydjuli=0;
}
function jingtoutouchpoint(value){touchpoint=value;}
function jingtoutimefraction(value){
houzd=houzd 0.002;
houydjuli=houydjuli .002;
if(touchpoint[0]<0.035) { //向左转
jingtourotation[0]=0;jingtourotation[1]=0;jingtourotation[2]=1;