导览
- 什么是DTS,流程
- 应用场景,服务行业
- 上手体验,优劣势
- 使用体会等
上手
最近在工作中接触到了高渲染项目,其中用到的渲染引擎就是DTS平台,笔者也有一些心得体会,下面和大家分享下。
DTS平台是一套服务于三维场景的解决方案,包含Engine、Explorer、Cloud和SDK等模块。Engine支持将多种格式的地理数据转换为3DT(3D Twins Scenes Database);Explorer支持创建工程文件,设置坐标系,管理数据和场景展示等;Cloud可以渲染工程,并将渲染内容通过视频流提供web客户端使用;SDK则是前端同渲染服务器交互通信的封装库。简单来说,对于一个高渲染项目,我们需要将地形影像、DEM、倾斜模型、BIM模型等通过Engine转换为3DT格式,然后在Explorer中创建项目,导入前面转换出来的3DT数据,通过Cloud渲染工程,推送视频流,然后前端通过SDK开发系统,基于推送的视频流实现各种功能 。
DTS主要服务ToG行业,适用于各类大屏可视化项目,满足客户汇报需要。
SDK库推荐通过script引入,准备好视频流容器。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DTS DEMO</title>
<!-- 引入SDK库 -->
<script src="/lib/ac.min.js"></script>
</head>
<body>
<div id="player" style="width:800px;height:500px"></div>
<script>...</script>
</body>
</html>
初始化视频流,加载场景,绑定地图事件等。
// 初始化视频流
const host = ''
const iid = ''
const options = {
domId: 'player',
iid, // 指定流
apiOptions: {
onReady: () => {
// 一般执行重置场景、视角定位等操作
__g.reset(1)
// 此处坐标系需要同工程坐标系保持一致,此处选用EPSG:4547
__g.camera.set(505610.585585, 2494064.020000, 100, 0, 0, 2)
},
onLog: (msg) => {},
onEvent: (e) => {
// 绑定LeftMouseButtonClick、camera相关事件和Tools相关事件等
},
},
ui: {
startupInfo: true, // 是否现实页面加载详细信息
statusButton: true, // 是否显示状态按钮
},
events: {
onVideoLoaded: () => {}, // 视频流加载成功回调
onConnectClose: () => {}, // 连接断开回调
},
}
const acPlayer = new DigitalTwinPlayer(host, options)
接下来就可以开发功能了,图层、标绘、日照、漫游、分析和测量等功能都可以通过SDK快速开发。
优点:
- 可视化效果独一挡,下面是精修模型的效果
- 简单需求SDK够用,调API都能实现
- 客户端要求不高,相当于是播放视频
缺点:
- 性能开销巨大,渲染服务器配置要求高
- 网络要求高,操作会有延迟
- 文档讲的不清楚,内部实现黑盒,难以排查问题
- 通用性差,从非高渲染项目迁移成本高,很多数据都需要经过坐标、格式转换才能应用(对于地理坐标系支持较差,很多数据都只支持投影坐标系,且要和工程坐标系保持一致)
- 拓展性不足,对于高度定制化的效果缺少实现途径
思考
首先,这是一套国产三维地图渲染引擎,相比于Cesium、或者2.5D地图,多了一种选择。 成本高昂与交互延迟限制了这套解决方案的使用场景,基本只能应用于局域网环境的可视化项目,而这契合了大部分政府项目的核心需求,因此也能在市场上占有一席之地。
我愿称之为不那么Web的三维场景解决方案。 以上。