好文档 - 专业文书写作范文服务资料分享网站

基于Java3D的城市三维景观的网络可视化_陈健

天下 分享 时间: 加入收藏 我要投稿 点赞

基于 Java3D 的城市三维景观的网络可视化

陈健 高井祥

(中国矿业大学环境与测绘学院,江苏 徐州 221008)

[摘要] 在网络环境下实现城市三维景观可视化, 具有重要的研究意义和广泛的应用价值。本文利用 Java3D

技术实现基于 Web 的城市三维景观可视化技术方案,并成功实现了原型系统。实验表明, 在三层 B/S 结构下

采用 Java3D 进行场景建模和交互,是在网络环境下实现城市三维景观可视化的有效途径。 [关键词] WEB; Java3D; 城市三维景观; 网络可视化

[中图分类号]P208 [文献标识码] A [文章编号]1001-8379(2005)04-0156-04 WEB-BASED VISUALIZATION OF 3D SCENE OF CITY BASED ON JAVA3D

CHEN Jian GAO Jin-Xiang

(School of Environment and Spatial Informatics of CUMT, Xuzhou, Jiangsu 221008, China) Abstract: Web-based visualization of 3D scene of city has significance and application evaluation .In this paper, the

author not only raised a technique scheme of using Java3D to realize visualization of 3D scene of city on web, but

also successfully developed an experimental system based on B/S structure .Experiment shows that this technical scheme is feasible.

Key Words: WEB; Java3D; 3D Scene of city; web-based visualization

1 引言

作为数字地球建设中的一个个信息节点,数字 城市的建设将为数字地球的全面展开奠定基础。数 字城市综合运用 GIS 、网络、多媒体和虚拟仿真等 技术,将城市信息管理与服务融合到基于 Internet 网络的数字化系统中,具有三维、多重分辨率空间 信息的特点。

城市三维景观是城市数字化信息的一个重要组 成部分,它将城市地理信息和其他城市信息结合发 布到网络上,并能供远程用户访问。三维场景的构 建及其网络可视化是建立数字城市的基础。 Web 3D 技术在基于互联网展示三维世界领域获

得了广泛的应用。目前已经出现一些技术(规范)如 VRML、View Point、Java3D、Cult3D 等,实现基于 互联网展示房屋、工业产品等三维模型,大大丰富了 互联网应用,展现出网络三维可视化技术广阔的应 用前景。

在目前的 Web 3D 技术中, Java3D 以其动态建 模、高效渲染、交互灵活、安全性高、扩展性强等 优势,尤其适合互联网环境下的三维景观生成与交 互。本文将探讨利用 Java3D 在三层B/S结构下实 现城市三维景观可视化的方法。

图 1 Java3D 场景图示例2 Java3D 的场景图数据结构 Java3D 采用基于场景图(Scene Graph)的编程

模型。Java3D 提供了大量 Java3D 类,开发者可以 通过实例化这些类创建各种 Java3D 对象。这些对象 包括几何体,外观(Geometry)、灯光(Light)、变换 (Transform)、声音(Sound)以及行为(Behavior)等。 Java3D 的场景图中,最底层的节点是 Virtual Universe, Virtual Universe 对象定义了一个虚拟 的三维空间。

Virtual Universe 对象维持了一系列 Locale

对象的列表,一个 Locale 对象可以理解为一个原始 的坐标系,这个坐标系中的所有对象,也就是这个 Locale 对象的子节点,其相对位置都是相对于该 Locale 对象的引用点(局部坐标系的原点)。每一个 Java 3D 程序可以有一个或多个 Locale 节点,但同 一个时刻只能有一个 Locale 节点处于激活状态。 一个简单 Java3D 场景图如图 1。 3 Java3D 三维场景建模基本方法

现实世界中三维空间实体包含多种对象,如地 形、道路、建筑物、树木、水系等。若将这些地理 对象根据其空间分布特性进行划分,可分为两大类: 一类是以在空间上连续分布为特性的对象,如地形、 土壤等。另一类是以离散实体为特性的对象,如建 筑物、树木等,这类对象以独立的个体而存在。在 所有对象当中,最重要的两种对象是地形和建筑物。 下面就这两种对象的 Java3D 建模及三维可视化技 术进行讨论。

3.1 利用 Java3D 进行地形建模

在 Java3D 场景图的视模型中,主要包含了用于 构建三维地形模型和进行场景交互的节点元素:包 括 BranchGroup 节点、TransformGroup 节点、 Shape3D 节点、Behavior 节点等。Shape3D 节点用 于构建三维地形模型,Appearance和Geometry节点 对象分别描述地形模型的几何属性和纹理属性。

Behavior 节点用于控制用户与三维场景的交互:通 过Behavior节点直接作用于TransformGroup节点, 用户可以实现对地形场景的控制,如位置平移、场景 缩放、模型切换等功能。

目前描述地形一般通过数字地面模型(DTM)来实

现,利用 DTM 构建三维地形场景的流程如图 2 所示。 按照上述思想,本文模拟了一组DEM 数据作为实验对 象,试验得到的地形三维可视化线框图如图 3 所示。

图 2 Java3D 地形建模流程

图 3 地形三维可视化 构建 Canvas3D 创建 Behavior 创建 BranchGroup DTM 数据 构建 Shape3D

创建 Behavior 节点 设置 TransformGroup 3.2 利用 Java3D 进行建筑物建模

城市中绝大部分建筑物为规则形体,针对其空 间分布的特点,应用面向对象思想给出一种三维建 模方法。该方法将形状复杂的建筑物分解为几种简 单形状,简化了数据结构。对于规则的建筑物大多 数呈现长方体、柱体、三棱体等的组合外形,因而可 以定义长方体、柱体、三棱体等几何构造体来表达 建筑物对象。

面向对象建模的基本思想是将建筑物划分成几 种基本体元,所谓基本体元就是组成各建筑物的共 同的子结构。建筑物常见的基本体元有以下几种: 圆柱、长方体(正方体、正四棱柱可看作是长方体的 特殊情况)、圆椎、三棱柱等,也有一些不常见的体 元,如三棱锥、球、球冠、圆台、三棱台、正六棱锥、 正六棱台等。对这些体元进行任意组合,经过几何变 换和布尔操作可以生成许多种建筑物的基本形态和 一些常见的建筑部件,进而可以组建成复杂的单体

建筑物,对于任何一种组合,都要按照层次结构分类 建模。

在 Java3D 的工具包中提供了一些创建基本形 体的类如 Box,Cone,Cylinder 等,利用这些类可很 容易的创建构成建筑物的基本体元,对这些基本几 何体进行叠加、组合,进而组建成复杂的建筑物(如 图 4 所示)。

图 4 建筑物三维建模

4 城市三维场景网络可视化 4.1 三维可视化

三维显示实际上是三维模型在二维平面上的投 影。初始化的城市三维模型要经过一系列的变换才 能在屏幕上显示三维效果。这些变换包括两种形式。 一种是几何变换。由变换矩阵来完成。例如通过平 移、缩放、旋转等变换操作,来改变三维图形在屏幕 中的相对位置,将目标放入观察范围内。Java3D 中使 用TransformGroup,Transform3D 类的实例化对象实 现图形的几何变换。另一种变换就是透视变换。透 视选择并裁切场景,形成视景体,并对其进行透视。 视景体是一个空间区域,位于视景体之外的场景将 被裁切掉,在屏幕上显示的就是视景体范围内的场 景。要把三维场景最终显示在窗口上,还需要进行视 口变换。视口是绘制场景的矩形区域。视口变换决 定把场景中的点映射到绘图区的方式。Java3D 通过 实例化View 类,调用类的相应方法来实现透视变换。 4.2 在城市三维场景中漫游

漫游可以简单的理解为在虚拟场景中不断的根

据用户的输入而动态的调整观察点位置、观察方向、 视角等参数,调整过程中场景被不断的渲染从而形 成连续的观察者画面,使浏览者产生在虚拟的场景 中游览的效果。

在虚拟场景中,视点处于虚拟的场景中,观察 效果类似视点对虚拟场景中的物体发出的投射光线 在一个图像板上的投影效果,Java3D 提供了丰富的

View 相关的类,很方便实现多种方式漫游的漫游。 1)使用键盘实现场景漫游:Java3D 提供了 behaviors.keyboard 包用于监听键盘事件产生, KeyNavigatorBehavior 类实现了采用键盘控制视 点的移动。

2)响应鼠标事件的漫游:要实现复杂的交互行 为,这种情况需要自己编写相应的行为类。Java3D 可以支持鼠标、键盘传统的交互设备以外的多种输 入设备。在 Java3D 中,可以通过 Java 的事件体系 捕捉用户的键盘、鼠标等设备,控制观察点的位置 和方向,实现虚拟漫游。

3)替身:在场景中漫游经常提到替身(Avatar)

的概念,替身可以是观察者的化身,也可以是一个 导游,可以将视点、视方向等对象绑定到替身上, Java3D 提供了 Awatar 类,Awatar 的身高用以指定 视点的高度值,同时,替身具有自己的方法,如 Walk(),Fly(),jump(),以及其它方法,替身的行为改 变,将会关联到视对象,从而生成漫游画面。 4.3 城市三维场景中属性查询

当用户在一个虚拟的环境中漫游的时候,或许 还会想知道某虚拟形体的其它相关信息,如某栋建 筑物的名称、所有者、层数、面积等。

在三维的场景中实现对象的属性查询涉及几个 问题:

(1) 属性信息组织与存储。

(2) 在三维场景中对虚拟形体进行拾取,获得 该对象的标识。

(3) 根据对象标识提取及更新属性数据。

首先根据不同的应用,建立虚拟城市中各类虚 拟形体的属性信息。比如,建筑物可以包含下列属

性信息:建筑名称、建筑面积,层数、建成年代等,将这些信息存储在一个数据库表中以便作其它 应用。

数据表的 id 字段定义的是虚拟对象的标识,当 进行属性查询时,用户拾取(Pick)虚拟形体时可以 首先获得该节点对象的类型及名称,然后将其作为 查询的标识。在 Java3D 中,拾取(Pick)技术允许用 户在 3D 空间拾取一个 3D 对象,当用户在屏幕上看 到一个物体,然后移动鼠标到目标位置上并按下鼠 标键时,Java3D 从视点向投影平面上的鼠标点击点 画一条射线,沿射线的方向检测是否有物体与该射 线相交并可返回指定的物体。

要实现属性的查询,Java 需要访问一个存储属 性的 数据库文件 。Java 的数据库连接(Java

基于Java3D的城市三维景观的网络可视化_陈健

基于Java3D的城市三维景观的网络可视化陈健高井祥(中国矿业大学环境与测绘学院,江苏徐州221008)[摘要]在网络环境下实现城市三维景观可视化,具有重要的研究意义和广泛的应用价值。本文利用Java3D技术实现基于Web的城市三维景观可视化技术方案,并成功实现了原型系统。实验表明,
推荐度:
点击下载文档文档为doc格式
1pptl2vzgg7f1wk0kieq
领取福利

微信扫码领取福利

微信扫码分享