6.3.1 基于Java3D的三维表达
1.概念
Java 3D API(Java Three-Dimensional Application Programming Interface)(张杰,1999)是SUN公司于1999年3月首次发布的用于编写网络3D图像的小应用程序接口,不是普通的图像系统,而是一种可使设计者快速编写应用程序的面向对象的程序设计语言。它为用户在Internet上开发、创建、渲染和操作三维几何体,灵活地描述了大型虚拟世界,为实现基于Web的3D图形显示提供了新技术。
Java 3D是Java API中JavaMedia组件的一个部分,是在现有的图像API和最新的三维图形技术基础上发展起来的,能有效地应用于各种平台。Java Applet和Java 3D一起可以实现嵌在Web页面上的动态的、实时的、交互性的三维虚拟场景。由于目前世界上用得最多的两大浏览器(IE浏览器和Netcape浏览器)都不支持Java 2,所以用户在浏览小应用程序时,必须先下载安装Java 2和Java 3D插件。Java 3D API是OpenGL或Directx 3D的高级图形接口,它跟OpenGL的差别就像C语言跟汇编语言的差别一样,OpenGL是底层的图形库,而Java 3D是OpenGL的高级图形函数接口。采用Java 3D实现三维虚拟场景比OpenGL要容易,而且它借鉴了VRML 2.0的一些特性,提供了碰撞检验,还可以直接调用VRML 2.0格式和OBJ格式的三维图形文件,通过处理,间接调用DWG、DXF、3DS格式的三维图形文件。这些格式的三维形体可以非常方便地应用在Java 3D程序中,进而提高Java 3D程序的编程效率。另一方面,Java和Java 3D可以编写出交互性很强的三维虚拟世界,Java 3D本身提供了一些交互功能。除此之外,还可以利用Java语言编写用户界面、计算飞行路线等交互功能。利用Java和Java 3D编写的应用程序可以很方便地操作数据库,而数据库操作和管理是网络时代最基本的要求。
2.场景图数据结构
Java 3D是在OpenGL、DirectX等标准三维图形语言的基础上发展起来的,因而Java 3D的数据结构和OpenGL一样,采用的是场景图(scene graphic structure)的数据结构。Java 3D的场景图是DAG(directed-acyclic graph),即具有方向性的不对称图形(图6-10)。场景中有许多线和线的交会点,交会点称为节点(node),不管什么节点,它都是Java 3D类的实例,节点之间的线表示实例之间的关系。
Java 3D场景图最底层(根部)的节点是Virtual Universe,每一个场景图只能有一个Virtual Universe。在Virtual Universe上面,就是Locale节点,每个程序可以有一个或多个Locale,但同时只能有一个Locale处于显示状态。每一个Locale上面拥有一个到多个BranchGroup节点,这取决于用户的需要。要想建立三维应用环境,必须建立所需要的形体(shape),给出形体的外观(appearance)及几何信息(geometry),再把它们摆放在合适的位置,这些形体及其摆放位置都建立在BranchGroup节点上,摆放位置通过另一个节点TransformGroup来设定。另外,在安放好三维形体之后,还需要设定具体的观察位置,由视平台(view platform)来管理视线的信息,它也是建立在TransformGroup节点之上的。
Java 3D的场景图根据Java语言的特点,增加了一些新的内容,更易于实时处理及显示特殊的三维效果,更加方便最新的三维图形加速技术的应用。Java 3D API汲取了底层图形API最好的绘制思想,而且它的高层图形绘制还综合了基于场景图的思想,同时,它参考了VRML(virtual reality model language,虚拟现实模型语言)的一些优良特性,引进了一些通用的图形化境所未考虑的新概念(如3D立体声、碰撞检验),这样更有助于提高用户在虚拟场景的沉浸感。
图6-10 Java 3D场景图
3.三维图形API
Java 3D API是SUN公司在1998年年底正式推出的,是Java语言在三维图形领域的扩展,用于实现三维图形显示和基于Web的3D小应用程序的Java编程接口。它具备了从网络编程到三维几何图形编程等各方面的功能,为用户在Internet上创建和操作三维几何图形、描述宽大的虚拟世界提供了新的技术。Java 3D作为Java的3D图形包,具有Java语言的一些优点,如:完整的跨平台特性,良好的网络环境的开发等。因此,利用Java 3D API可以开发出Internet上的三维图形应用系统。
这一开放性的3D图形编程接口可用于多种场合,包括游戏与教育软件开发、数据可视化、机械计算机辅助设计/工程(MCAD/MCAE)、数字内容创建等。Sun的3D技术已经成为领先的跨平台的3D可视化工具,用于网络化企业在开展企业间合作时使用。
另一方面,Java 3D API提出了一种新的视模型概念。目前用于开发三维图形软件的3D API(OpenGL、Direct3D)都是基于摄像机模型的思想,即通过调整摄像机的参数来控制场景中的显示对象,而Java 3D则提出了一种新的基于视平台的视模型和输入设备模型的技术实现方案,即通过改变视平台的位置、方向来浏览整个虚拟场景。它不仅提供了建造和操作三维几何物体的高层构造函数,而且利用这些构造函数还可以建造复杂程度各异的虚拟场景,这些虚拟场景大到宇宙天体,小到微观粒子。Java 3D是JavaMedia API中的一部分,可广泛地应用于各种平台,而且用Java 3D API开发的应用程序和基于Web的3D小应用程序(Applet),还可以访问整个Java类,且可以与Internet很好地集成,即如果在浏览器中安装了Java 3D的浏览插件,在网上也可浏览Java 3D所创建的虚拟场景。
4.在网络GIS应用
GeoSurf三维模块的功能如下:数据转换和数据功能;数据转换为新版GeoSurf内部三维矢量、DEM格式;GEOSTAR 4.0基于Oracle的影像数据库格式;GEOSTAR 4.0基于Oracle的DEM数据库格式;GIF、JPEG格式;三维图形功能:放大、缩小、漫游;显示DEM,DEM+影像,DEM+三维矢量,DEM+影像+三维矢量,假纹理+三维矢量;固定点,沿线三维飞行,鼠标牵引三维飞行,键盘牵引;光源设置、背景设置、视场角设置、景深设置;属性查询;分析;体积量算、面积(投影面积、表面面积)量算、距离量算(直线、表面);坡度、坡向;剖面;通视分析;淹没分析。目前已经在数码校园(图6-11)和数码城市(图6-12)中得到了初步的验证。
图6-11 因特网上的数码校园
图6-12 因特网上的数码城市
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。