2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现

上传人:kms****20 文档编号:40420519 上传时间:2018-05-26 格式:DOC 页数:10 大小:38KB
返回 下载 相关 举报
2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现_第1页
第1页 / 共10页
2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现_第2页
第2页 / 共10页
2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现_第3页
第3页 / 共10页
2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现_第4页
第4页 / 共10页
2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现》由会员分享,可在线阅读,更多相关《2012最新基于vrml和javascript的数码摄影虚拟实验系统的设计与实现(10页珍藏版)》请在金锄头文库上搜索。

1、20122012 最新基于最新基于 VRMLVRML 和和 JavaScriptJavaScript 的数码摄影虚拟实验系统的设计的数码摄影虚拟实验系统的设计与实现与实现1 研究思路与开发平台的选择目前,基于网络对实验对象进行三维交互展示的有效处理方法是使用专业的设计软件,如采用 AUTOCAD、3DS MAX 等将实验对象的三维模型设计出来。这种方法建模过程直观形象,但生成的模型和动画不能与用户进行交互,需要将三维模型导出为相关虚拟现实设计软件所需要的格式文件,用虚拟现实设计软件进行三维展示的交互设计,最后将它发布到网站上1。经过多年的发展,虚拟现实技术的实现也派生出多种不同的方法,现在较为

2、流行的有 VRML、Java 3D、CULT3D、X3D 等多种实现方法。它们各自有不同的优缺点。其中,虚拟现实建模语言VRML(Virtual Reality Modeling Language)是一种描述大量对象的属性及相互关系的语言,具有平台无关性、三维交互性、多媒体集成、境界逼真等众多优越的特征,所以选择该软件作为开发平台。虽然 VRML 可以通过直接编程进行语义描述,建立实验对象的三维模型,但这种方法适合建立简单规则的模型。数码单反相机主要由机身和镜头两部分组成。机身上又包括取景窗口、液晶显示屏、曝光模式选择盘、控制拨轮以及各个操作按钮等,结构比较复杂,不宜直接用 VRML 语言进行

3、语义描述。而是利用 3DS MAX 建立整个模型,并赋予材质、色彩、光照,导出 VRML 的格式文件(.*wrl 文件)。因此,选择 3DS MAX 进行建模,再使用 VRML 软件进行交互设计并实现网上发布,建立逼真的交互式三维虚拟实验环境,可以让学生随时通过网络浏览三维场景,并通过人机交互进行仿真实验。2 三维虚拟数码单反相机的设计与实现实验对象的建模是虚拟实验开发过程中最重要的一步,模型的好坏直接影响运行的效果和场景的沉浸度。为了便于在 VRML 浏览器中设计三维数码单反相机的交互,可以真实地模拟实际操作进行镜头的旋转、曝光模式选择盘的转动、控制拨轮和按钮的操作等,在对数码相机进行建模时

4、,将其各部分分别建模,后期组装。将数码单反相机的三维模型建好后,在 3DS MAX 中应用输出插件导出*wrl格式的文件。在运用 3DS MAX 模型导出 VRML 文件后要充分注意优化VRML 程序。优化技术是三维虚拟建模过程中至关重要的一个环节,优化结果的好坏将直接影响三维数码相机的显示速度和交互效果2。3 使用 VRML 语言结合 JavaScript 实现数码单反相机的虚拟实验数码单反相机虚拟实验系统共包括四个实验,分别是:认识数码相机、数码相机的调节模式、数码相机的光圈调节、数码相机快门调节。3.1 认识数码单反相机模块的设计与实现3实验 1 是对数码单反相机的三维展示,主要分为:(

5、1)自由旋转展示。在这种方式下,相机自动在浏览器中旋转,让学习者从不同的角度上观察相机的结构。(2)手动控制展示。在这种方式下,学习者可以自主转动相机,从不同角度细致地观察相机。为了实现相机的自由旋转展示,可以运用时间传感器节点(TimeSensor)和方向插补器节点(OrientationInterpolator)。TimeSensor 节点的作用是创建一个虚拟时钟,可以像时钟一样标记时间的流逝,设置开始动画、结束动画和控制动画的播放速度等属性,并向插补器节点输出时间事件,产生相应的动画效果。OrientationInterpolator 可改变观察方向或者改变形状体的方向。插补器节点使用一

6、组关键时刻和关键值来描述一个动画。关键时刻列表在插补器节点的 key 域中指定,关键值列表在插补器节点的keyvalue 域中指定。浏览器在渲染时将根据这些关键时刻所对应的关键状态在场景中通过线性插值计算技术自动生成连续动画。实现自由旋转展示部分相应代码如下:OrientationInterpolator /创建控制动画的插补器key0 0.5 1/指定关键时刻列表keyValue /指定对应的旋转关键值列表0 1 0 0,0 1 0 3.14,0 1 0 6.28TimeSens/创建控制动画的时间感应器enabledTRUEcycleInterval 30/指定每个变化周期的时间长短ROU

7、TE clock_camera.fraction_changedTO camera_auto_rotation.set_fractionROUTE camera_auto_rotation.value_changed TO camera_all.rotation在 ROUTE 中,将 TimeSensor 的 fraction_changed 出事件路由到插补器的 set_fraction 入事件,每次时间传感器输出一个新的时刻,插补器就会利用输入的时间计算出一个新的旋转值,然后通过其 value_changed 出事件路由到方向插补器节点。为了能从各种角度来展示相机,运用 SphereSen

8、sor 传感器节点,对相机进行了手动的三维展示。SphereSensor 节点用于感知观察者的拖动动作,并且计算旋转角和角度。通过使用它的rotation_changed 域输出变化的参数,对相机整体进行 360上下左右的旋转完成相机的手动展示。代码如下:SphereSensorenabled TRUEROUTE camera_sd.rotation_changed TOcamera_all.rotation对于 VRML 窗口与网页之间的交互主要是通过 JavaScript 和VRML 中的 TouchSensor 节点完成。由于 TouchSensor 节点能感知用户的鼠标事件,一般的鼠标

9、操作通常有 3 种:移动、点击、拖动。本设计主要使用了移动操作,当用户进行移动操作的时候会使TouchSensor 中的 isOver 公共域变为 TRUE,传递出去一个真事件。在网页中用 JavaScript 接收到该事件再运用相应的程序完成相应的操作,然后在 VRML 场景中运用 Onmousemove 感知鼠标的移动事件。VRML 场景中主要代码:TouchsensEnabled TRUE在网页中对 VRML 场景运用了 Onmousemove 感知鼠标的移动事件,当鼠标作用于 VRML 场景时会触发相应的处理事件 javascript 代码,例如当鼠标移动到 LCD 显示屏时,用到了条

10、件判断语句对其进行判断:if(M_e.Nodes(“Viewfinder_button“).Fields(“isOver“)=-1)display_div(2,12);然后进行相应的处理操作。其中 Viewfinder_button 是取景器的触发传感器 TouchSensor 的名称。3.2 数码相机曝光模式的选择模块的设计与实现在实验 2 中,要求能模拟真实的数码相机的操作,允许学习者通过转动曝光模式调节环,选择不同的曝光模式。每一种曝光模式都有各自的特点以及适用的场合。实现这一效果,是在 VRML 中使用CylinderSensor(圆柱传感器)与 Script 节点的结合实现了用户与曝

11、光模式选择盘的交互。CylinderSensor 节点也可以感知一个观察者的拖动动作,并且计算转轴和角度,通过它的 rotation_changed 域(eventOut 出事件)输出。其代码如下:CylinderSensorexposedField SFFloat minAngle 0exposedField SFFloat maxAngle -1exposedField SFBool enabled TRUEexposedField SFFloat diskAngle 0.262exposedField SFFloat offset 0exposedField SFFloat autoof

12、fset TRUEeventOut SFBool isActiveeventOut SFVce3f trackPoint_changedeventOut SFRotation rotation_changed观察者每次改变轨迹点时,autoOffset、offset、maxAngle 和minAngle 域值在一起作用把轨迹点转化成为旋转值,并通过rotation_changed 域(eventOut 出事件)输出。然后通过旋转角度的不同改变 LCD 显示屏上不同的曝光模式画面。同时也向浏览器环境传递不同的旋转角度,浏览器根据不同的旋转角度来显示不同的模式说明。3.3 光圈与快门的调节模块的设

13、计与实现实验 3 和实验 4 分别是针对光圈大小和快门大小进行调节,然后在模拟的场景中进行拍摄,比较不同的光圈值和快门速度对画面成像效果的影响。这样,既让学生掌握了光圈和快门值的调整方法,又让他们理解了光圈值和快门速度与画面成像效果的关系。这两部分实现的方法相似,所以在此一并说明。以快门速度的调整为例,通过设置不同的快门速度,模拟了不同的成像效果。首先通过机身上的调节按钮设置快门速度,如图 1所示,分别设置快门速度为 1/200s 与 1/1000s。然后到模拟的三维场景中进行取景操作。由于不同的快门速度对成像效果的影响主要是体现在动态被摄对象上,所以,在场景中模拟了一辆奔跑的汽车,按下拍摄,

14、即可得到模拟的成像效果,如图 2 所示。具体实现方法如下:if(a=4)M_e.Nodes(“tv_sensor“).Fields(“offset“)=-4.125;M_e.Nodes(“tv_sensor“).Fields(“enabled“)=-1;M_e.Nodes(“start_t4_script“).Fields(“show“)=-1;elseM_e.Nodes(“tv_sensor“).Fields(“enabled“)=0;if(a=1|a=2)M_e.Nodes(“start_t4_script“).Fields(“show“)=0;elseM_e.Nodes(“start_t

15、5_script“).Fields(“show“)=0;document.getElementById(“left_content“).style.display=“none“也就是用 JavaScript 启动了 VRML 中快门传感器和控制放在VRML 中快门传感器的动作。4 网络发布与插件的自动安装VRML 文件可以采用超级链接的方式把 HTML 文件和 VRML 文件链接到一起,这对于三维模型的虚拟展示具有十分重要意义。HTML 文件格式的标准并不支持对 VRML 文档的嵌入,但非标准 HTML 提供EMBED标记可实现 VRML 文档的嵌入。例如下面的语句实现了VRML 文档 cam

16、era.wrl 在 HTML 文件中的嵌入,其中 SRC 域指定关联的 URL, “camera.wrl 是一个 VRML 文件。在网页中要进行对 VRML 的操作只进行上述嵌入是远远不够的,还要通过 javaScript 中的 M_e=camera.Engine,获取对相机 VRML场景的句柄并赋给 M_e。这样,就可以对 VRML 场景中的每一个节点中的每一个域和事件的值进行获取了。为了保证用户机器上能正常播放,需要在用户机器上安装 VRML浏览器。可通过以下代码实现自动安装:虚拟实验是开展网络教学的一个瓶颈,而其中最关键的是没能较好地解决交互性的问题。利用 VRML 技术,结合支持 VRML 的开发工具构建一个虚拟实验环境,并利用 Java 提供的支持 VRML 的开发包,实现了用户与虚拟环境之间的交互,可以满足数码摄影虚拟实验教学的需要。实验常常是一种协作性的活动,合作是实验过程中一个至关重要的环节,因此,要充分利用现代网络技术,增强对虚拟实验的协同操作,进一步体现网上实验的优势4。参考文

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号