公司建设网站制作centos wordpress伪静态
公司建设网站制作,centos wordpress伪静态,南昌集团制作网站设计,做网网站公司在实际项目中#xff0c;我们经常需要加载大规模的三维场景数据#xff0c;比如城市建筑模型、地形数据等。3D Tiles 是 Cesium 提出的开放标准#xff0c;用于高效地流式传输和渲染大量 3D 内容。今天就来学习一下如何在 mapvthree 中使用 3D Tiles。了解 3D Tiles
3D Tile…在实际项目中我们经常需要加载大规模的三维场景数据比如城市建筑模型、地形数据等。3D Tiles 是 Cesium 提出的开放标准用于高效地流式传输和渲染大量 3D 内容。今天就来学习一下如何在 mapvthree 中使用 3D Tiles。了解 3D Tiles3D Tiles 是一种用于流式传输和渲染大量 3D 内容的开放标准具有以下特点层次化结构使用空间层次结构组织数据支持细节层次LOD流式传输按需加载只加载视野内的数据高性能通过剔除、LOD 等技术优化渲染性能标准化开放标准支持多种数据格式我的理解3D Tiles 就像是一个智能的三维场景管理系统能够根据相机位置和视角自动决定加载哪些数据以及加载到哪个细节层次。第一步从 URL 加载 3D Tiles最简单的方式是从 URL 加载 3D Tiles 数据。基本使用import*asmapvthreefrombaidumap/mapv-three;constcontainerdocument.getElementById(container);constenginenewmapvthree.Engine(container,{map:{center:[105.931,29.349,280],range:2000,pitch:75,provider:null,},});// 从 URL 加载 3D Tilesconsttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,}));我的发现只需要提供tileset.json的 URL引擎会自动加载整个 3D Tiles 数据集。我的理解tileset.json是 3D Tiles 的入口文件定义了整个数据集的层次结构引擎会根据相机位置自动加载需要的瓦片支持多种 3D Tiles 格式b3dm、i3dm、pnts 等第二步从 Cesium Ion 加载如果数据存储在 Cesium Ion 上可以使用 asset ID 加载。使用 fromAssetId// 从 Cesium Ion asset ID 加载consttilesetawaitmapvthree.Default3DTiles.fromAssetId(assetId,{errorTarget:16,});engine.add(tileset);我的发现fromAssetId是静态方法返回一个 Promise需要等待加载完成。我的理解需要先配置 Cesium Ion AccessTokenasset ID 是 Cesium Ion 中资源的唯一标识可以使用配置参数来优化加载和渲染第三步性能优化配置3D Tiles 提供了很多性能优化参数合理配置可以显著提升渲染性能。errorTarget屏幕空间误差errorTarget控制屏幕空间误差目标值影响 LOD 的切换时机。consttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,errorTarget:16,// 默认值数值越小细节越多性能开销越大}));我的理解数值越小显示的细节越多但性能开销越大数值越大显示的细节越少但性能更好需要根据场景和性能要求调整cullRequestsWhileMoving移动时剔除cullRequestsWhileMoving控制相机移动时是否剔除请求可以提升移动时的性能。consttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,cullRequestsWhileMoving:true,// 移动时剔除请求提升性能}));我的发现开启后相机快速移动时不会加载新瓦片等移动停止后再加载可以避免不必要的网络请求。cullWithChildrenBounds使用子节点边界剔除cullWithChildrenBounds控制是否使用子节点边界进行剔除可以更精确地判断是否需要加载子节点。consttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,cullWithChildrenBounds:true,// 使用子节点边界进行剔除}));我的理解开启后会使用子节点的边界框来判断是否需要加载可以更精确地剔除不可见的节点。loadSiblings加载兄弟节点loadSiblings控制是否加载兄弟节点可以预加载相邻的瓦片。consttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,loadSiblings:true,// 加载兄弟节点预加载相邻瓦片}));我的发现开启后会预加载相邻的瓦片当相机移动到相邻区域时数据已经准备好了可以提升用户体验。其他性能参数还有一些高级性能参数consttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,// 缓存配置cacheBytes:512*1024*1024,// 缓存大小字节// 动态屏幕空间误差dynamicScreenSpaceError:true,dynamicScreenSpaceErrorDensity:0.00278,dynamicScreenSpaceErrorHeightFalloff:0.25,// 注视点渲染Foveated RenderingfoveatedScreenSpaceError:true,foveatedConeSize:0.1,foveatedMinimumScreenSpaceErrorRelaxation:2.0,// 其他配置forceUnlit:false,// 强制无光照模式progressiveResolutionHeightFraction:0.3,}));我的理解这些参数主要用于高级优化一般使用默认值即可除非有特殊的性能需求。第四步运行时调整参数可以在运行时动态调整参数实时优化性能。consttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,errorTarget:16,}));// 运行时调整参数tileset.errorTarget8;// 提高细节tileset.cullRequestsWhileMovingtrue;// 开启移动剔除tileset.loadSiblingstrue;// 开启兄弟节点加载我的发现可以根据场景需求动态调整参数比如在性能不足时降低errorTarget在需要流畅移动时开启cullRequestsWhileMoving。第五步完整示例我想写一个完整的示例把学到的都用上import*asmapvthreefrombaidumap/mapv-three;constcontainerdocument.getElementById(container);constenginenewmapvthree.Engine(container,{map:{center:[105.931,29.349,280],range:2000,pitch:75,provider:null,},});// 从 URL 加载 3D Tiles配置性能参数consttilesetengine.add(newmapvthree.Default3DTiles({url:data/3dtiles/tileset.json,errorTarget:16,cullRequestsWhileMoving:true,cullWithChildrenBounds:true,loadSiblings:true,}));我的感受掌握了这些配置就可以根据实际需求优化 3D Tiles 的加载和渲染性能了第六步踩过的坑作为一个初学者我踩了不少坑记录下来避免再犯坑 13D Tiles 不显示原因URL 路径错误或者 tileset.json 文件不存在。解决检查 URL 路径是否正确确认 tileset.json 文件存在且可访问检查浏览器控制台是否有错误信息坑 2加载很慢原因数据量大或者网络慢或者性能参数配置不当。解决检查网络连接调整errorTarget参数降低细节要求开启cullRequestsWhileMoving优化移动性能检查数据是否过大考虑使用 LOD 优化坑 3内存占用过高原因缓存设置过大或者加载了太多瓦片。解决调整cacheBytes参数限制缓存大小降低errorTarget减少加载的瓦片数量开启cullWithChildrenBounds精确剔除坑 4相机移动卡顿原因移动时加载了太多新瓦片或者性能参数配置不当。解决开启cullRequestsWhileMoving移动时暂停加载开启loadSiblings预加载相邻瓦片调整errorTarget降低细节要求坑 5Cesium Ion 加载失败原因没有配置 Cesium Ion AccessToken或者 asset ID 错误。解决确保配置了 Cesium Ion AccessToken检查 asset ID 是否正确确认 asset ID 对应的资源存在且有访问权限我的学习总结经过这一天的学习我掌握了从 URL 加载使用new Default3DTiles({ url })从 URL 加载从 Cesium Ion 加载使用Default3DTiles.fromAssetId()从 Cesium Ion 加载性能优化理解errorTarget、cullRequestsWhileMoving等参数的作用运行时调整可以在运行时动态调整参数我的感受3D Tiles 功能很强大但配置参数也比较多。关键是要理解每个参数的作用然后根据实际需求进行优化。性能优化是一个平衡的过程需要在细节和性能之间找到平衡点下一步计划学习更多 3D Tiles 的高级功能尝试创建自定义的 3D Tiles 数据做一个完整的大规模场景展示项目学习笔记就到这里啦作为一个初学者我觉得 3D Tiles 功能很强大但配置参数也比较多。关键是要理解每个参数的作用然后根据实际需求进行优化。希望我的笔记能帮到其他初学者大家一起加油