【Java开源代码栏目提醒】:以下是网学会员为您推荐的Java开源代码-面向网络的三维战场环境开发技术的研究 - 会议论文,希望本篇文章对您学习有所帮助。
《测绘通报》测绘科学前沿技术论坛
论文集 1 面向网络的三维战场环境开发技术的研究1摘 要:本文根据目前国内外网络三维环境构建的技术现状,参考 GeoVRML、X3D、OpenGL、VRML、
JAVA3D 等三维信息可视化的方法,对用 JOGL 表述三维地理环境信息做了深入细致的研究,为构建基于网络的三维战场环境作了较为深入的研究和实践。
从军事应用的需要和特点出发,本文对 JOGL 在地图学中的应用潜力进行了分析和归纳,给出了基于
JAVA 和 OpenGL 构建网络三维战场环境的建模流程。
解决了若干关键技术,主要包括网络传输、LOD 的 JOGL 实现、大场景数据的双缓冲绘制以及动态调度管理等。
关键词:网络三维、三维战场环境、VRML 、JOGL、
JAVA、
JAVA3D一、引 言 现代作战不仅拓展了战场空间,而且对战场环境信息的保障也提出了更高的要求。
通过对波黑战争、科索沃战争和海湾战争等几场局部战争的分析与总结,人们已经清楚地认识到信息化战争是未来战争发展的基本趋势,其标志是作战力量数字化,即建立数字化部队和数字化部队赖以活动的数字化战场。
从根本上讲,数字化战场环境是战场数字化的基础,实现数字化战场环境是顺应现代战争武器装备和指挥手段发展的要求,是对传统军事测绘保障的创新和变革。
数字化战场环境的实质是将客观的战场环境信息转化为数字信息,其目的是为数字化战场提供基础空间信息,使侦察监测系统、指挥控制系统和武器打击系统基于统一的空间信息基础上发挥精确、快速、灵活的作战效能。
然而,单纯依靠二维平面图进行以上任务规划和推演是相当困难的,指挥人员很难建立准确的三维空间认识,而依靠虚拟战场仿真和网络技术构建的网络三维战场环境平台则能解决上述问题。
二、网络化三维战场环境构建流程及框架 在任何一个 Web 传送中都要有两个关键性环节:浏览器和服务器。
本文所要构建的网络化三维战场环境涉及到三个方面:即用户、应用程序和数据。
从军事应用的需求和特点出发,客户端的设计遵循了简单、易于操作的原则,只要用户安装了
Java 虚拟机,浏览器成为了用户界面;在服务器端,根据系统的功能和特征分为 WEB 服务器、应用服务器和数据库服务器三部分。
根据三维战场环境数据的维数、类型、大小和特点,设计出基于 JOGL 的三维战场环境模型。
依据这四者之间的关系,可
设计出网络三维战场环境 JOGL 模型流程结构图,如图 1 所示。
作者简介:王菲,女,1982 年 9 月,汉族,籍贯:江苏省徐州市,硕士助理工程师,主要研究方向:三维战场环境 仿真 郑炼功,男,1981 年 9 月,汉族,籍贯:甘肃省平凉市,硕士,助理工程师,主要从事网络条件下虚拟 环境相关技术的研究 《测绘通报》测绘科学前沿技术论坛
论文集 2 浏览器1 Web 处理请求 应 用 浏览器2 请求/响应 服务器 服务器 …… 数据库 浏览器n 服务器 数据访问 客户端 服务器端 图1 系统工作流程
系统工作流程是:客户端通过浏览器向 Web 服务器发出用户的各种行为请求,WEB 服务器接受到用户端的请求后,将命令给传递应用服务器,应用服务器对接收到的请求进行处理分析后,根据分析结果从数据库服务器上下载所需的数据文件,生成已加入控制的模型描述图,并将此描述图传给 WEB 服务器,WEB 服务器再回传给客户端,客户端通过浏览器来显示和完成用户的交互要求。
三、网络三维图形引擎的实现 众所周知,DIRECT3D、OpenGL 是开发单机版三维应用程序的首选,但在实现网络三维可视化方面并没有太多的优势;下面将详细讲述在实现网络三维战场可视化方面有着很大优势的VRML 方案和
Java 方案。
3.1 VRML方案 VRML(虚拟现实建模语言)是一种用于建立真实世界场景模型或虚构的三维世界的场景建模语言,是描述虚拟环境中场景的一种标准,利用它可以在 Internet 上建立交互式三维多媒体虚拟境界。
它的基本目标是建立因特网上的交互式三维虚拟环境,其基本特征包括:分布式、交互式、平台无关、三维、多媒体集成、逼真自然等,被称为第二代 Web。
目前,Netscape Navigator 和 Internet Explorer 都已内置了 VRML 浏览器,这从一个侧面表明 VRML 已成为 Internet 上发布 3D 内容的具有普遍性的开放标准。
图 2 为本文利用 VRML实现的三维视景图。
图2 VRML三维视景图示例 《测绘通报》测绘科学前沿技术论坛
论文集 33.2
Java方案目前用
Java 开发三维虚拟战场环境主要有两种途径:(1)
Java3D 方案,分为基于 OpenGL 和基于 DirectX 两种;(2)JavaOpenGL 的
方案,简称 Jogl 方案。
。
它
Java3D 是由 SUN 公司在 1998 年年底正式推出的交互式三维图形应用编程接口(API)来源于各种图形 API 及多种新技术,包含了实现三维交互真实感图形和开发基于 Web 页面的三维应用程序的基本类和接口,用于实现三维动画的生成及多媒体程序、交互程序的编写;它是
Java 语言在三维领域的扩展,因而,它也具备与
Java 相同的平台独立性和良好的网络开发支持。
作为跨平台的
Java 语言,其本质是建立在特定平台 API 和 C 语言基础上的;目前,通过
Java 使用 OpenGL 最好的方法就是使用
Java OpenGL 绑定。
这种绑定利用
Java 技术中的
Java本地接口(
Java Native Interface,简称 JNI)机制调用系统中的 API 函数。
3.2.1
Java3D方案
Java3D 是
Java Media API 中的一部分,可广泛地应用于各种平台,用
Java3D API 开发的 ,可以访问整个
Java 类库,也能与 Internet应用程序和基于 Web 的 3D 小应用
程序(applet)很好地集成。
Java3D API 汲取了已有图形 API 的优点,即
Java3D 的底层图形构造函数不仅综合了底层API(Direcrt3D、OpenGL)最好的绘制思想,而且它的高层图形绘制还综合了基于场景图的思 ,这些都将有助想,同时,它又引入了一些通用的图形环境所未考虑的新概念(如 3D 立体声)于提高用户在虚拟场景的沉浸感。
在开发网络三维战场环境的过程中,
Java 3D 具有以下优点:(1)提供了高层的面向对象的三维图形描述方法。
(2)使用已有硬件加速技术实现了速度的最优化。
(3)基于
Java 技术,适于开发网络条件下的可视化应用程序。
(4)支持多种可在虚拟现实中使用的外部设备。
3.2.2 JavaOpenGL方案
Java 是目前比较流行的真正的面向对象的编程语言,有许多用
Java 去结合 OpenGL 的尝试,下面将对
Java 使用 OpenGL 的一些主要方法进行简要比较说明: ; Magician:它集成了 AWT 和 Swing,拥有清晰的 API 和创新的可组合管线(如 DebugGL)但它不开放源
代码,也不支持新的 I/O 接口,且已停止(没有继续进行)开发。
它是
Java平台新的 OpenGL 接口, Jungle: 集成了 AWT 和 Swing, 支持 OpenGL1.4 和卖方扩展, ,开放源
代码,为新的 I/O 而设计,定义清楚、要求最低的 API,支持可组合管线(如 DebugGL)几乎全部由
Java语言编写 AWT 本地接口,利用 GlueGen 把 WGL 和 GLX 绑定到
Java语言中。
GlueGen:使用 ANTLR 解析 C 语言头文件,生成中间表示形式,可以表示原始类型、函数原型、struct、union 和函数指针,自动生成
Java编程语言和 JNI
代码,提供强大的功能实现了AWT 本地接口到
Java 编程语言的绑定,使用
Java 编程语言代替 C 语言编写 Jungle。
Jungle:现在更名为 JOGL,与
Java游戏推动组织合作,作为 JGI 的 OpenGL 绑定被采用, ,支持 AWT 和 Swing 集成。
开放源
代码(修订的 BSD 许可证协议) 目前,所有前沿的 3D 图形特效都朝着可编程的方向发展,由于 OpenGL 提供卖方和第三方支持,对硬件具有平台无关性;因此,
Java语言、JOGL 接口两者的结合使用,必将提供一个 《测绘通报》测绘科学前沿技术论坛
论文集 4易用的、可移植的和强大的
网络三维开发环境。
3.3 网络三维战场环境的实现 平台无关性是影响网络三维可视化实现的关键因素之一。
目前,处理跨平台
问题通常有两种基本思路:针对不同的平台提供不同的实现或者使用已有的跨平台工具和软件开发语言(如 ;就三维图形绘制而言,这两种方法均可。
Java 等) 但是从整体实现考虑,由于网络三维战场环境本身包含较多模块,又涉及大量网络
通信编程,如果采用不同平台分别实现的方法,开发和维护代价将太大。
Java 作为一个完整的平台解决方案,具有最好的跨平台性能,尽管运行效率略有欠缺,但其性能一直在不断提高中,而且还具有开发效率高,部署方便的特点。
基于以上考虑,网络三维战场环境采用完全基于
Java 的方式来实现,这能够极大降低系统的开发和维护成本。
VRML 语言自身功能目前还不是很强大(如没有形体之间的碰撞检查等功能),与
JAVA 等其它高级语言的连接相对较难掌握;
Java3D 建立在轻量级的窗口控件 Swing 之上,而且着重提供的是 SceneGraph 支持,因此在三维场景中的渲染速度方面远远低于 OpenGL。
OpenGL 作为一种跨平台的图形绘制 API 得到了广泛使用,在 Windows、Linux 和 Unix 系统中都得到了很好的支持,采用 OpenGL 或基于 OpenGL 的图形绘制
软件包是当前跨平台图形绘制的最常见选择。
本文选择了 JavaOpenGL(JOGL)的方案来实现网络三维战场环境的构建。
利用
Java 结合 OpenGL 实现三维引擎的各种技术中,第一个被认可的是
Java 对于 OpenGL ,它得到 Sun(
Java 的的绑定(
Java Bindings for OpenGL,简称 JOGL,最初被称为 Jungle) 和 (OpenGL 的创建者)创建者) SGI Sun 的支持。
公司最初利用
Java 绘制三维图形是通过
Java3D来完成的,并没有关注
Java 结合 OpenGL 来实现的技术;但由于
Java 良好的
开源性,很多
Java爱好者开始个人开发和实践这种结合,并导致了这种结合在网络上的广泛传播和应用;再加上 Sun 准备开始提供官方的
Java网络游戏的逐步兴起, 公司逐渐意识到
Java3D 在性能方面的不足,OpenGL 绑定,2003 年 10 月,Sun 提交了关于
Java OpenGL 绑定的 JSR231(
Java SpecificationRequest)请求,JOGL 的开发逐步走上正轨。
目前,Sun 的游戏开发小组正在开发 JOGL,它是从 Kenneth Russell 和 Christopher Kline 开发的 Jungle 开始起步的。
JOGL 是 OpenGL 的
Java 封装,可以直接进行底层的 OpenGL 开发,可以更好的实现高质量高 fps 的
Java2D、3D 程序;它既有
Java 语言的优点,又兼顾了 OpenGL 在三维图形方面的独特优势,这使得开发网络三维战场环境和创建网络三维模型的工作得以很好的实现。
目前,
Java 程序的性能现在也有了很大提高,良好的
Java 程序完全可以和用 C/C开发的 JOGL 并没有重写已有的成果,三维程序获得几乎一样的性能。
它的底层是用 JNI 直接调用 OpenGL的类库;因此,OpenGL 拥有的图形能力和跨平台等特点也就是 JOGL 所拥有的。
现在 JOGL 的类库在第三方公司已经开发的比较完善,使用起来基本和
Java3D 一样方便。
JOGL API 的核心是 GLEventListener,它是进行 OpenGL 相关绘制
工作的接口,其接口和 GLUT非常相像,如下所示:package Javax.media.OpenGLimport
Java.util.EventListenerpublic abstract interface GLEventListener extends EventListener void init(GLAutoDrawable gLAutoDrawable) void display(GLAutoDrawable gLAutoDrawable) 《测绘通报》测绘科学前沿技术论坛
论文集 5 void reshape(GLAutoDrawable gLAutoDrawable int int1 int int2 int int3 int int4) void displayChanged ( GLAutoDrawable gLAutoDrawable boolean boolean1 booleanboolean2) 其中,init()函数负责 OpenGL 绘图前的各种初始化工作,而每一帧的绘制工作都在 display()方法中进行,reshape()函数在画布、窗口大小发生变化时被调用,displayChanged() 一般不被使用。
函数监控显示深度的改变, 实现 JOGL 绘制程序时用户必须实现 GLEventListener和其规定的接口,GLEventListener 定义了 OpenGL 相关的事件处理函数,但是具体的绘制目标GLCanvas 或 GLJPanel 还需要依赖 GLCapabilities 生成,最后将用户自定义的 GLEventListener加入相应的 GLCanvas 即可实现一个具有 OpenGL 绘制功能的
Java Canvas,如下所示: JFrame GLDrawable GLEventListener GLDrawbleFactory GLCanvas UserGLEventListener 图3 Jogl接口关系示意图GLCapabilities glcapsnew GLCapabilities()GLCanvas glcanvasnew GLCanvas(glcaps) )glcanvas.addGLEventListener(new SecondGLEventListener()GLCanvas、GLEventListener 之间的关系如图 3 所示,其中 GLCanvas 是由 GLDrawableFactory生成的一个具体的 GLDrawable,可以向 GLCavnas 中添加用户自定义的GLEventListener , 它 可 被 包 含 在Frame、JFrame 等容器中使用。
本文采用 JOGL 技术来实现网络三维战场环境的构建,其包括大比例尺场景和小比例尺场景两种,构建的方法也比较多,在多分辨率影像的支持下,本文采用 JOGL 直接来构建小比例尺场景,通过调用 3DS、WRL等格式 的文 件来构 建大 比例尺 场景,根据四叉树原理应用 LOD 技术,实现了场景的无缝拼接和浏览时的自然过渡(如图 4 红虚线框所示) 。
图4 基于Jogl的三维模型效果图四、总结 本文在充分了解目前三维战场环境的构建和网络技术发展的基础上,研究探讨了基于
JAVA和 OpenGL 的网络上高效、实时、便捷的传输,浏览和构建具有交互性能的三维战场环境的一种 《测绘通报》测绘科学前沿技术论坛
论文集 6方法可以满足司令部参谋多人同时
作业、指挥机关多人同时对战场环境进行三维浏览、参谋人员或指挥人员单人单机操作、飞行员对战场观察等多方面的需求,使系统具有广泛的适用性。
该方法主要具有以下几方面的特点: 、根据目前国内外网络三维环境构建的技术现状,参考 GeoVRML、X3D、OpenGL、VRML、
JAVA3D1)等三维信息可视化的方法,对用 JOGL 表述三维地理环境信息做了深入细致的研究,为构建基于网络的三维战场环境作了较为深入的研究和实践。
、从军事应用的需要和特点出发,对 JOGL 在地图学中的应用潜力进行了分析和归纳,给出了2)基于
JAVA 和 OpenGL 构建网络三维战场环境的建模流程。
、解决了若干关键技术。
主要包括网络传输、LOD 的 JOGL 实现、大场景数据的双缓冲绘制以3)及动态调度管理等。
参 考 文 献 :1 魏迎梅等译. 虚拟现实技术(第二版)M. 电子工业出版社.北京 (2005 年出版)2 高俊. 数字化战场的基础建设解放军出版社2004.113 王柏王红熳邹华.分布计算环境北京邮电大学出版社20004 Luis Manuel Borges Gouveia. Visualization and Direct Mainipulation Issues for Human Systems Development.http://citeseer.nj.net.com/375478.html.5 潘明阳. 结合 VRML 和 Web GIS 技术构建数字港大连海事大学学报2001.56 张书亮、闾国年等。
网络地理信息系统M。
科学出版社.北京(2005 年出版).7 游雄. 基于虚拟现实技术的战场环境仿真《测绘学报》2002 年第一期8 王勇谭海刘纪平.利用
Java3D 技术在三层 B/S 结构下实现三维地形可视化J测绘科学2004