cesium 之三维场景展示篇(附源码下载)

前言

cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材。

内容概览

1.基于cesium 实现三维场景展示效果
2.源代码 demo 下载

本篇实现 cesium 三维场景展示,效果图如下:
三维模型.gltf场景展示


image

倾斜摄影场景展示


image
  1. 加载三维模型 gltf
  • cesium 三维模型格式数据转换
    cesium 支持加载三维模型的格式是 .gltf 或者 .glb,一般我们制作三维模型都是从 3dmax 软件,所以需要转换;官网开源有转换工具 obj2gltf,具体的见这里:https://github.com/AnalyticalGraphicsInc/obj2gltf,转换需要安装 node 环境,我这里加载三维模型就是从 obj 转换 gltf 来的;
  • cesium 加载 gltf 展示代码
/*三维模型gltf配置信息*/
MapConfig.Obj3D = {
    position:Cesium.Cartesian3.fromDegrees(111.828682, 21.579571,3000),
    models:[
        {
            id:"3D_gltf",
            name : "测试3D模型",
            position : Cesium.Cartesian3.fromDegrees(111.828682, 21.579571),
            uri :"http://localhost:8180/cesium/3DModel/test/gltf_zapo/Object02.gltf"
        },
        {
            id:"3D_gltf",
            name : "测试3D模型",
            position : Cesium.Cartesian3.fromDegrees(111.828682, 21.579571),
            uri :"http://localhost:8180/cesium/3DModel/test/gltf_zapo/Object03.gltf"
        },
        {
            id:"3D_gltf",
            name : "测试3D模型",
            position : Cesium.Cartesian3.fromDegrees(111.828682, 21.579571),
            uri :"http://localhost:8180/cesium/3DModel/test/gltf_zapo/ZP_DB_04.gltf"
        }]
}

        $("#cesium3DModel").click(function(){
            if(cesium.cesiumViewer.entities.length>0){
                cesium.cesiumViewer.entities.removeAll();//清空所有模型
            }
            cesium.add3DGlft(MapConfig.Obj3D);
        });
    /**
     * 加载GLFT模型
     * @method add3DGlft
     * @param
     * @return
     */
    add3DGlft: function (obj) {
        //加载3dModel
        this.add3DEntityModels(obj.models);
        //跳转位置
        this.flyToPosition(obj.position);
    },
    /**
     * 批量加载3D模型
     * @method add3DEntityModels
     * @param  models 3D模型数组
     * @return
     */
    add3DEntityModels: function (models) {
        if(models && models.length>0){
            for(var i=0;i<models.length;i++){
                var type = null;
                if(models[i].type){
                    type = models[i].type;
                }
                var entity = this.cesiumViewer.entities.add({
                    name : models[i].name,
                    type : type,
                    position : models[i].position,
                    //orientation : orientation,
                    model : {
                        uri : models[i].uri,
                    }
                });              
            }
        }
    }

  1. 加载倾斜摄影场景展示
    我这里 cesium 加载倾斜摄影是用 3DTiles 形式,用 .b3dm 格式的数据:

更多的详情见GIS之家小专栏
文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

GIS之家作品:GIS之家
GIS之家源码咨询:咨询模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 毕业也快三年了,一直都没写过年终总结,趁2016年快结束之际,来谈谈2016一年以来经历的一点感悟吧!我的工作ar...
    gis之家阅读 4,406评论 3 13
  • 思绪良久,尽管姗姗来迟了,还是决定写写2017这一年以来,自己的亲身经历以及感想! 我的工作方面 openlaye...
    gis之家阅读 4,231评论 2 5
  • arcgis api3.x for js转向arcgis api4.x,我也是最近的3-4个月时间的事情,刚好公司...
    gis之家阅读 8,836评论 4 6
  • 上篇实现了基础地图加载以及二三维模式切换;本篇的内容则是图层管理控制,从两个不同角度来实现,分别是直接绑定arcg...
    gis之家阅读 7,813评论 0 0
  • 今天是星期天,补的是星期三的课,我们本来下午的最后一节课是要上体育的。可是上成了语文,语文老师说明天上午的最后一节...
    小斤阅读 2,755评论 0 0

友情链接更多精彩内容