Cesium案例解析——3DTilesPhotogrammetry摄影测量3DTiles数据

Posted charlee44

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cesium案例解析——3DTilesPhotogrammetry摄影测量3DTiles数据相关的知识,希望对你有一定的参考价值。

1. 概述

3D Tiles是用于传输和渲染大规模3D地理空间数据的格式,例如摄影测量,3D建筑,BIM / CAD,实例化特征和点云等。与常规的模型文件格式相比,最大的特点就是包含了分层分户的瓦片,根据可视化需要呈现相应的细节,并且已经被纳入到OGC规范当中。

在Cesium的自带示例3D Tiles Photogrammetry中,展示的摄影测量3DTiles数据是通过Cesium Ion上托管的,只需要相应的编号就可以了。实际生产中的3DTiles数据可以通过像ContextCapture这样的三维建模软件得到,然后通过Cesium本地加载。

2. 案例

html页面3DTilesPhotogrammetry.html代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport"
        content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
    <meta name="description" content="A sample photogrammetry dataset rendered with 3D Tiles.">
    <meta name="cesium-sandcastle-labels" content="Beginner, Tutorials, Showcases">
    <title>Cesium Demo</title>
    <script type="text/javascript" src="../Build/Cesium/Cesium.js"></script>
    <style>
        @import url(../Build/Cesium/Widgets/widgets.css);

        html,
        body {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
            font-family: sans-serif;
            background: #000;
        }

        .fullSize {
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            border: none;
            width: 100%;
            height: 100%;
        }
    </style>
</head>

<body>
    <div id="cesiumContainer" class="fullSize"></div>
    <script src="3DTilesPhotogrammetry.js"></script>
</body>

</html>

主要的javascript代码3DTilesPhotogrammetry.js如下:

'use strict';

var viewer = new Cesium.Viewer('cesiumContainer', {
    terrainProvider: Cesium.createWorldTerrain()
});

var tileset = new Cesium.Cesium3DTileset({
    url: "../dayanta/tileset.json"
});

viewer.scene.primitives.add(tileset);
viewer.zoomTo(tileset);

可以看到这里通过3DTiles数据路径,创建了一个Cesium.Cesium3DTileset对象。但与加载glTF模型不同,加载3DTiles需要将其加入到场景类(viewer.scene)的图元集合对象(primitives)中去。图元类(Cesium.Primitive)也就是场景中的几何图形,Cesium应该是将3DTiles作为图元展示在场景中。

3. 结果

最终运行结果如下所示,展示了西安大雁塔景区的模型:

技术图片

以上是关于Cesium案例解析——3DTilesPhotogrammetry摄影测量3DTiles数据的主要内容,如果未能解决你的问题,请参考以下文章

Cesium案例解析——ImageryLayers影像图层

Cesium案例解析——3DTilesInspector监视器

Cesium案例解析——3DTilesPhotogrammetry摄影测量3DTiles数据

Cesium 本地部署案例

Cesium源码解析一(terrain文件的加载解析与渲染全过程梳理)

Cesium高度解析