• 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 {
                 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;
                 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. 结果

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

    3DTilesPhotogrammetry

  • 相关阅读:
    教你如何剖析源码
    Java 简介
    java 入门-helloWorld
    linux yum 命令
    Linux vi/vim
    Linux 磁盘管理
    Linux 用户和用户组管理
    Linux 文件与目录管理
    Linux 文件基本属性
    Linux安装Mysql
  • 原文地址:https://www.cnblogs.com/charlee44/p/12312619.html
Copyright © 2020-2023  润新知