Cesium 加载本地3DTiles

本文介绍了如何在浏览器中使用新API`showDirectoryPicker`获取本地文件夹,递归遍历文件结构,并结合Cesium库实现3DTileset的加载。同时,对Cesium源码进行改造,以处理特定版本的初始化问题,动态构造资源地址。
摘要由CSDN通过智能技术生成

在线预览

1. 使用浏览器新的api showDirectoryPicker

浏览器端使用showDirectoryPicker获取本地一个文件夹,遍历获取所有文件夹及文件的描述信息

const showLocalLoadPanel = () => {
            let gui = new dat.GUI();
            let items = gui.addFolder('加载数据文件');
            let commonUpload = async (callback) => {
                const res = await showDirectoryPicker();
                const fileList = [];
                // 递归获取文件结构
                const detalAction = async (obj) => {
                    let res = {};
                    if (obj.entries) {
                        const dirs = obj.entries();
                        for await (const entry of dirs) {
                            res[entry[0]] = entry[1].entries ? { type: 'directory', children: await detalAction(entry[1]) } : { type: 'file', fileHandle: entry[1] };
                        }
                    }
                    return res;
                }
                const files = await detalAction(res);
                const rootFile = await files['tileset.json'].fileHandle.getFile()
                callback(URL.createObjectURL(rootFile), files);
            };
            items.add({
                '3dtilset': () => {
                    commonUpload((url, files) => {
                        Cesium.Cesium3DTileset.fromUrl(new Cesium.Resource({ url, files })).then((tile) ={
                            tileset = viewer.scene.primitives.add(tile);
                            viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.0, -0.3, 0.0));
                        })
                    })
                }
            }, '3dtilset');
        }

2. 改造Cesium源码 Resource

在1.108版本的源码有效,109的会提示draco_decoder.wasm初始化失败;修改resource源码,注入前面解析得到的文件目录树结构,在请求资源时重新构造该资源的地址

结果
local 3dtiles .gif

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值