Babylon三维扩展指南 - 技术介绍

Babylon简介

BabylonJs是微软旗下的三维开源游戏引擎,官网链接 http://www.babylonjs.com/,目前还处在快速发展中。

Babylon基于Html5,支持灯光、相机操作、丰富的材质和纹理、动画、粒子系统、物理引擎,支持glTF、obj、stl等模型格式,拥有出色的表现效果, 可以使用shader系统进行材质的扩展,非常适合于表现微观的细节场景;Babylon使用TypeScript开发,提供了强大的面向对象开发接口。

下面是官网的典型演示截图:



融合Babylon的方法

GIS擅长管理海量宏观数据,基本场景是三维数字地球。随着行业应用深入BIM、旅游、水利、监控等,宏观与微观的结合成为重要需求。 Drawsee earth通过与Babylon这样的游戏引擎进行深度技术融合,整合了双方的优势。

著名开源引擎Cesium 和 Three.js,由于两者在坐标体系,基本概念上存在较大差异,一些开发者试图将两者结合,但是过程比较复杂,融合度也不高。 参考Cesium官网博客 Integrating Cesium with Three.js

而朝夕科技拥有自主底层技术的webgis平台,同样基于TypeScript开发,可以从系统层面做较多的改进,使得Drawsee Earth适应Babylon相关概念,只需对Babylon源代码做很少的调整, 就可以融合二者的显示和操作。同时能够随着Babylon的发展不断更新版本,目前采用的是稳定版本3.2.0。

Drawsee Earth 2.0 已经做到的融合功能包括:

1. 把Babylon场景作为图层直接在三维地球中绘制,包括所有Babylon原生API的能力,可以动态变换地球坐标位置

2. 对于Drawsee创建的地球坐标对象,可以赋予Babylon材质来绘制,增强表现力

3. Drawsee和Babylon扩展两个jslib,既可以配合使用,也可以各自完全独立按照原生API使用

4. 对于Babylon对象的选择操作等,采用Drawsee的事件方式,统一应用开发

5. 对于Vector3, Matrix等两个系统中类似的数据对象,提供方便的相互转换函数

6. 对于Babylon数据,提供压缩分片工具,提高大数据的并发下载速度


在线演练

朝夕在线演练中增加了专门的Babylon示例,绝大部分Babylon Playground的代码,只要去除相机操作部分, 就可以直接粘贴进去使用


后续版本展望

对于单机或者CS架构的三维GIS平台,得益于大量C、C++开源游戏引擎,实现下面这样典型的水利应用场景并不算困难。这里包括了海量数据、精细模型、 水面效果、大坝流水粒子系统、微观动态花草树木等。

作为发展中的webgis平台,Drawsee Earth已经实现其中的一些效果,还需要继续利用游戏技术的扩展能力,补充各种特效,达到部署简单、效果逼真、管理扎实、运行稳定的目标。