手机网站转换小程序,施工企业项目管理中心岗位职责,wordpress 悬浮按钮,ps如何做游戏模板下载网站在3D Web GIS开发中#xff0c;使用GLTF格式的模型可以提高应用的加载速度并提升用户体验。Cesium.js是一个强大的3D地理空间引擎#xff0c;支持GLTF格式的3D模型#xff0c;并且提供丰富的API来处理和优化模型的加载和渲染。本文将系统地介绍如何加载GLTF模型#xff0c;…在3D Web GIS开发中使用GLTF格式的模型可以提高应用的加载速度并提升用户体验。Cesium.js是一个强大的3D地理空间引擎支持GLTF格式的3D模型并且提供丰富的API来处理和优化模型的加载和渲染。本文将系统地介绍如何加载GLTF模型包括从网上下载GLTF模型、将其他3D格式转化为GLTF、以及使用Cesium的API进行优化和交互开发。
GLTF格式简介
GLTFGL Transmission Format是一种3D模型的文件格式专为网络传输和渲染优化。它的优势包括
轻量级相比其他格式GLTF更为轻便适合网络加载。便于解析GLTF使用JSON描述模型数据易于解析和渲染。支持PBRPhysically-Based RenderingGLTF支持物理材质渲染效果适用于真实感渲染。
GLTF有两种主要形式
.gltf: JSON格式的文件资源如纹理、几何体以外部形式引用。.glb: 将所有数据打包在一起的二进制文件更便于网络传输。
从网上获取GLTF模型
免费GLTF模型资源库
Sketchfabhttps://sketchfab.com: 提供大量的3D模型包括GLTF格式。Poly Havenhttps://polyhaven.com: 一个高质量的免费3D模型库。Google Poly: 虽然Google Poly已经关闭但你仍然可以在第三方网站找到备份的模型数据。
下载和使用GLTF模型
在上述平台上选择你想要的模型下载GLTF或GLB文件。如果模型不是GLTF格式则需要通过工具进行格式转换见下文。
Cesium中加载GLTF模型
在Cesium中加载GLTF非常简单Cesium提供了 Cesium.Model.fromGltf 方法可以加载GLTF文件并将其添加到场景中。以下是一个加载GLTF模型的完整示例。
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleCesium 加载 GLTF 模型/titlescript srchttps://cesium.com/downloads/cesiumjs/releases/1.101/Build/Cesium/Cesium.js/scriptlink hrefhttps://cesium.com/downloads/cesiumjs/releases/1.101/Build/Cesium/Widgets/widgets.css relstylesheetstylehtml, body, #cesiumContainer {width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;}/style
/head
bodydiv idcesiumContainer/divscript// 设置 Cesium Ion 的 Access TokenCesium.Ion.defaultAccessToken your_access_token_here;// 创建 Cesium Viewerconst viewer new Cesium.Viewer(cesiumContainer, {terrainProvider: Cesium.createWorldTerrain(), // 加载地形数据imageryProvider: Cesium.createOpenStreetMapImageryProvider(), // 设置地图图层scene3DOnly: true, // 仅加载3D场景优化性能shadows: true, // 开启阴影效果});// 加载GLTF模型const modelPosition Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, 0); // 模型位置经度纬度海拔const model viewer.scene.primitives.add(Cesium.Model.fromGltf({url: https://example.com/model.gltf, // GLTF文件的URLmodelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(modelPosition), // 将模型放置于特定位置scale: 10.0, // 调整模型的大小maximumScale: 20.0, // 最大缩放比例minimumPixelSize: 50 // 模型最小像素大小}));// 设置相机飞行到模型位置viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, 500) // 设置相机的飞行高度});// 监听模型加载完成事件model.readyPromise.then(function (model) {console.log(GLTF 模型已成功加载);}).catch(function (error) {console.error(GLTF 模型加载失败, error);});/script
/body
/htmlCesium.Model.fromGltf: 用于加载GLTF模型url指定GLTF文件的路径modelMatrix确定模型在地球上的位置。Cesium.Cartesian3.fromDegrees: 将地理坐标转换为笛卡尔坐标。flyTo: 将相机飞行到模型位置提供直观的展示效果。readyPromise: 用于处理模型加载完成后的事件。
其他格式转化为GLTF
使用Blender转换模型
Blender是一款免费、开源的3D建模工具可以用于将其他格式的模型如FBX、OBJ等转换为GLTF。以下是Blender中进行转换的步骤
导入文件打开Blender选择 File Import选择所需的格式如OBJ或FBX然后导入你的模型。调整模型确保模型的纹理、材质等信息正确加载。导出GLTF选择 File Export GLTF 2.0你可以选择导出为 .gltf分离的JSON和二进制资源或 .glb单个二进制文件。
Blender提供了细粒度的导出设置如导出动画、纹理等确保你的模型与Cesium兼容。
在线工具
有些在线工具也可以将常见的3D格式转换为GLTF
Cesium 3D Tiling Pipeline: https://cesium.com/learn/3d-tiling/3d-tiling-pipeline/Online Convert: https://www.online-convert.com/ 可以将OBJ、FBX等格式文件在线转换为GLTF。
优化GLTF模型的加载和渲染
在使用Cesium加载GLTF模型时性能是一个需要重点考虑的问题尤其是在加载大规模3D模型时。以下是一些优化技巧
使用GLB格式
GLB格式是GLTF的二进制版本它将所有的资源如几何体、纹理等打包在一个文件中可以减少网络请求次数提升加载速度。
优化模型的几何体
在Blender等3D工具中减少模型的多边形数量优化顶点和面片的分布。使用 “Decimate Modifier” 来降低模型复杂度同时保持外观质量。
使用Cesium的LODLevel of Detail机制
Cesium支持通过多级细节LOD来优化大模型的加载和渲染。可以根据相机与模型的距离动态加载不同分辨率的模型。
model.maximumScale 20; // 当相机距离很近时使用最高分辨率
model.minimumPixelSize 50; // 当相机距离较远时模型缩小为最小像素大小为GLTF模型添加交互事件
在Cesium中可以为GLTF模型添加各种交互事件如点击、悬停等。下面的示例展示了如何检测用户点击GLTF模型的事件
// 创建点击事件
viewer.screenSpaceEventHandler.setInputAction(function (movement) {const pickedObject viewer.scene.pick(movement.position); // 检测点击的对象if (Cesium.defined(pickedObject)) {const model pickedObject.primitive;alert(你点击了模型);}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);scene.pick:
通过用户点击位置检测场景中哪个对象被选中。
primitive: 返回被点击的模型对象你可以进一步操作该模型。
GLTF模型的动画与多级细节LOD
动画效果
GLTF支持骨骼动画和关键帧动画。通过 activeAnimations API可以播放GLTF模型的动画。
model.readyPromise.then(function (model) {// 添加所有动画model.activeAnimations.addAll();console.log(动画开始播放);
});使用LOD提升性能
对于大型模型或复杂的场景使用LOD机制可以提高Cesium的渲染性能。当相机离模型较远时Cesium会渲染较低分辨率的模型。
总结
通过以上的介绍你应该已经掌握了如何在Cesium中加载GLTF模型、从其他格式转换为GLTF、优化加载和渲染性能以及为模型添加交互事件。GLTF作为轻量级的3D模型格式非常适合在Web GIS应用中使用。配合Cesium的API可以轻松实现3D模型的高效渲染和互动展示。 文章转载自: http://www.morning.rbhqz.cn.gov.cn.rbhqz.cn http://www.morning.hphfy.cn.gov.cn.hphfy.cn http://www.morning.rfhm.cn.gov.cn.rfhm.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.mqmxg.cn.gov.cn.mqmxg.cn http://www.morning.rzmsl.cn.gov.cn.rzmsl.cn http://www.morning.mlyq.cn.gov.cn.mlyq.cn http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn http://www.morning.rykgh.cn.gov.cn.rykgh.cn http://www.morning.rcmwl.cn.gov.cn.rcmwl.cn http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn http://www.morning.mqpdl.cn.gov.cn.mqpdl.cn http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn http://www.morning.rgsgk.cn.gov.cn.rgsgk.cn http://www.morning.jjrsk.cn.gov.cn.jjrsk.cn http://www.morning.pljdy.cn.gov.cn.pljdy.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn http://www.morning.brld.cn.gov.cn.brld.cn http://www.morning.clwhf.cn.gov.cn.clwhf.cn http://www.morning.swbhq.cn.gov.cn.swbhq.cn http://www.morning.hgscb.cn.gov.cn.hgscb.cn http://www.morning.mjqms.cn.gov.cn.mjqms.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.sgbss.cn.gov.cn.sgbss.cn http://www.morning.hqwcd.cn.gov.cn.hqwcd.cn http://www.morning.cplym.cn.gov.cn.cplym.cn http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn http://www.morning.fslxc.cn.gov.cn.fslxc.cn http://www.morning.grxbw.cn.gov.cn.grxbw.cn http://www.morning.mkygc.cn.gov.cn.mkygc.cn http://www.morning.lmqw.cn.gov.cn.lmqw.cn http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn http://www.morning.pmdlk.cn.gov.cn.pmdlk.cn http://www.morning.lbzgt.cn.gov.cn.lbzgt.cn http://www.morning.gyxwh.cn.gov.cn.gyxwh.cn http://www.morning.skmzm.cn.gov.cn.skmzm.cn http://www.morning.wqrk.cn.gov.cn.wqrk.cn http://www.morning.jkbqs.cn.gov.cn.jkbqs.cn http://www.morning.ylqpp.cn.gov.cn.ylqpp.cn http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.zhnpj.cn.gov.cn.zhnpj.cn http://www.morning.trhlb.cn.gov.cn.trhlb.cn http://www.morning.rcqyk.cn.gov.cn.rcqyk.cn http://www.morning.dansj.com.gov.cn.dansj.com http://www.morning.ai-wang.cn.gov.cn.ai-wang.cn http://www.morning.xkhxl.cn.gov.cn.xkhxl.cn http://www.morning.snygg.cn.gov.cn.snygg.cn http://www.morning.tkchg.cn.gov.cn.tkchg.cn http://www.morning.ypktc.cn.gov.cn.ypktc.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn http://www.morning.yxwnn.cn.gov.cn.yxwnn.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.ckhpg.cn.gov.cn.ckhpg.cn http://www.morning.jydky.cn.gov.cn.jydky.cn http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn http://www.morning.lrflh.cn.gov.cn.lrflh.cn http://www.morning.khcpx.cn.gov.cn.khcpx.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.wcjgg.cn.gov.cn.wcjgg.cn http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn http://www.morning.ypmqy.cn.gov.cn.ypmqy.cn http://www.morning.xprq.cn.gov.cn.xprq.cn http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn http://www.morning.ypxyl.cn.gov.cn.ypxyl.cn http://www.morning.njnqn.cn.gov.cn.njnqn.cn http://www.morning.plqsz.cn.gov.cn.plqsz.cn http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn http://www.morning.yrpd.cn.gov.cn.yrpd.cn http://www.morning.lqypx.cn.gov.cn.lqypx.cn http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn http://www.morning.skrh.cn.gov.cn.skrh.cn http://www.morning.gnyhc.cn.gov.cn.gnyhc.cn