基于Ja3D的动力微环境监控系统

点赞:13217 浏览:56743 近期更新时间:2024-04-07 作者:网友分享原创网站原创

摘 要:本研究利用了三维编程领域的Ja3D技术和解析XML的StAX技术,实现了机房3D图像的生成,并实现了对此3D图像进行平移、旋转、缩放的功能除此之外我们还可以查看机房中每个机柜的状态,并当机柜状态超出临界值时给出报警提示,从而以达到动力微环境监控的目的.

关 键 词:虚拟现实;Ja3D;XMLStAX;计算机图形学III

中图分类号:TP273文献标识码:A文章编号:1007-9599(2011)24-0000-02

Ja3D-basedDynamicMicro-environmentalMonitoringSystem

WeiTengjiao1,DaiQing2

(1.JiningNo.1School,Wulanchabu012000,China,2.BeijingZentionTechnologyCo.,Ltd.,Beijing100025,China)

Abstract:InthisStudy,weusethetechnologyofJa3Dwhichisusedin3DprogrammingdomainandthetechnologyofStAXwhichisusedinXMLanalysingdomaintoachievethepurposeofmonitoringtheengineroom.Here,Wecanmakea3Dpictureoftheengineroomandtranslate,rotateorzoomit.Besides,Wecanexaminethestatusofcabis.AndWhenacabi'sstatusoutrunthethresholdlimitvalue,thereisaalarminthe3Dpicture.

基于Ja3D的动力微环境监控系统参考属性评定
有关论文范文主题研究: 关于立方体的论文范文资料 大学生适用: 学位论文、本科论文
相关参考文献下载数量: 48 写作解决问题: 如何怎么撰写
毕业论文开题报告: 论文任务书、论文设计 职称论文适用: 职称评定、初级职称
所属大学生专业类别: 如何怎么撰写 论文题目推荐度: 优秀选题

Keywords:VirtualReality,Ja3D,XMLStAX,ComputerGraphicsIII

一、引言

机房,是现代科技发展的一类产物,其中运行着大量的设备.每个设备都有自己的功用,设备的状态直接影响着机房的运行状况,如果设备出现故障,轻则机房运转不流畅,重则将带来诸如爆炸、火灾等严重的后果.Ja3D是SUN公司于1998年年底随Ja1.2(Ja2)的推出而正式推出的.

二、需求分析

在此之前已有一个机房管理软件,其运行效果如图1所示:

图1机房管理软件运行效果图

这个机房管理软件的功能是由Flash实现的,它生成了界面,但界面中的所有图像都是基于屏幕坐标贴上去的,是个伪3D的程序.现在则要由Ja3D编程来实现原来由Flash实现的所有功能,实现一个真3D的程序.目前需要实现功能的有:

(1)生成机房3D界面

(2)使此管理软件中的图像能够放大、缩小、旋转,以方便操作者进行观察

(3)使此管理软件能够从怎么写作器上读取机柜设备的数据

(4)当某个机柜的状态超出临界值时,给出报警提示

三、系统设计

一套完整的动力微环境监控系统的框架结构如图2所示:


图2动力微环境监控系统结构框架

由图中可以看出,动力微环境监控系统主要由客户端、怎么写作器、传感器和实际机器这四个模块构成.

(一)机房界面设计

因为从平面图中看不到每个物体的高度,所以我们参照原Flash图,手动定义一个合适的高度即可.我们定义机柜、空调、配电柜的高度为1米,墙的高度为2米.

(二)机房坐标规范

我们定义二维平面机房的左上角方向上外墙的墙角为坐标系的原点,以此为基础,来生成3D图像.

(三)界面的平移、旋转与缩放设计

要求能够对3D机房结构图进行整体的平移、旋转和缩放,使管理者能够从不同的视角来观察机房的各个方面.

(四)机柜报警设计

当机柜的某项参数的超出正常的临界值时给出报警,报警方式为将对应的机柜颜色变为红色.

(五)从怎么写作器上读取数据的设计

使用StAX解析技术,从怎么写作器给出的URL上读取对应的状态数据并用图形界面显示出来,由此来查看机房设备的状态.

四、系统的实现

重点难点实现

1.立方体的生成.其实在Ja3D中封装了立方体类Box或ColorCube,但在实际探索Ja3D的过程中发现使用Ja3D自带的立方体非常不方便:它在进行材质贴图的时候,并不是为立方体的每个面分别进行贴图,而是像一张印有图案的方巾,将立方体全体包住,无法实现每个面都拥有不同贴图的目的.

所以,我们创建了DrawRectangle类,目的是画出立方体单独的一个面:顶面(top)、底面(buttom)、左面(left)、右面(right)、前面(front)、后面(back).然后又创建了AssembleCube类,将所生成的六个面组合成一个立方体.单独一个立方体的局部场景图如图4所示:

图4单独立方体局部场景图

在DrawRectangle类中有如下属性及方法:

属性:intvCount//矩形的4个顶点

Point3f[]vert//三个点分别代表矩形左下角点在Ja3D坐标系中的坐标

QuadArrayrectangle//矩形

方法:voidDrawRectangle()//DrawRectangle类的构造方法

voidsetPointOne()//设置矩形的第一个坐标的绝对坐标

voidsetPointTwo()//设置矩形的第二个坐标的绝对坐标

voidsetPointThree()//设置矩形的第三个坐标的绝对坐标

voidsetPointFour()//设置矩形的第四个坐标的绝对坐标

voiddrawRectangle()//为矩形设置顶点坐标和材质及外观属性

voidsetRectangleTexture(Texturetexture)//将矩形的材质设置为参数

texture所代表的材质

在AssembleCube类中有如下属性及方法:

属性:DrawRectanglebutton,top,left,right,front,back//立方体的六个面

方法:AssembleCube()//AssembleCube类的构造方法

voidsetPoints(floatx,floaty,floatz,floatlength,floatwide,floatheight)//

为立方体设置顶点坐标,x,y,z是立方体前左下角顶点坐标;length延x轴方向,

wide延z轴方向,height延y轴方向;根据右手定则除底部以顺时针,其余当面对那个面时按逆时针的方向设置

voiddrawCube(TranormGrouptg)//将生成的各个矩形组合起来,形成一个立方体1.2、初始观察点的设置

为了解决这个问题,我想到了两种方法:一个是修改内容分支部分,将整个这个场景图中的物体进行几何旋转变换;另一个是通过改变场景图的视图分支部分来对场景图进行变换.使用几何变换对场景图进行整体旋转固然可以,但是旋转的角度完全需要由感受与尝试决定,比较麻烦.而视图分支图正是为了整体改变场景图的视图内容而设计的.所以,我决定用改变视图内容的方法来对初始观察点进行变换.

Point3deye等于newPoint3d(x1,y1,z1);//设置观察者眼睛位置

Point3dcenter等于newPoint3d(x2,y2,z2);//设置观察方向指向的点

Vector3dvup等于newVector3d(x3,y3,z3);//设置垂直于观察平面的方向

Tranorm3Dt等于newTranorm3D();//几何变换

t.lookAt(eye,center,vup);

t.invert();

五、不足与改进

本研究暂时只实现了需求分析中的几个基本功能,而实际上真正的环境监控系统的需求还有很多.另外,还希望能够为此监控系统扩充功能,比如让管理员手动增加或删除设备,以保证当机房需要更新布局和设备时,监控系统可随时模拟出图形与实际机房一致,而不需要程序员编程添加.