1. 从谷歌地球获取倾斜摄影数据的正确姿势很多人第一次接触倾斜摄影三维模型时都会遇到一个头疼的问题怎么把谷歌地球上的精美建筑模型弄到本地来用我刚开始也踩过不少坑后来发现用RenderDoc抓取数据是最稳定的方法。这里分享下我优化过的操作流程比网上常见的教程更可靠。首先需要准备的工具很简单最新版谷歌浏览器、RenderDoc 1.2以上版本、7-Zip解压工具。注意RenderDoc一定要用稳定版我试过几个开发版经常出现崩溃。安装时记得勾选Install for all users否则可能出现权限问题。具体操作时有个关键细节一定要先启动RenderDoc再开浏览器。我遇到过无数次抓取失败的情况后来发现是因为操作顺序不对。启动后按F12打开开发者工具在Network面板找到webgl开头的请求这就是我们要的模型数据。点击Capture Frame按钮时建议把鼠标悬停在目标区域2-3秒这样能确保模型加载完整。2. Blender处理倾斜摄影模型的实战技巧拿到数据后才是真正的挑战开始。用Blender打开fbx文件时90%的人会遇到材质丢失的问题。这不是你的错而是谷歌用的PBR材质需要特殊处理。我的解决方案是先在材质面板删除所有材质球然后重新创建原理化BSDF着色器。模型面数优化是另一个重灾区。倾斜摄影模型通常包含大量冗余三角面直接导入可能导致Blender卡死。这里分享我的处理流程先应用所有修改器使用Decimate修改器ratio设为0.3-0.5手动检查建筑边缘是否变形最后用Shrinkwrap修饰细节记得保存时要用FBX 2018格式这是与3DTiles转换工具兼容性最好的版本。如果模型有多个LOD层级建议每个层级单独导出后面在Cesium中做分级加载会更流畅。3. 3DTiles转换的隐藏参数详解把FBX转成3DTiles看似简单但里面的门道很多。我推荐使用Cesium官方提供的3d-tiles-tools工具链虽然学习曲线陡了点但效果最稳定。转换时这几个参数直接影响最终效果--max-screen-space-error建议设为4-8数值越小精度越高但体积越大--geometric-error按模型尺寸设置50米建筑建议用32--content-compression一定要开能减少30%体积转换过程中最常遇到的问题是纹理丢失。这是因为Windows路径有中文导致的解决方法很简单把所有素材放在全英文路径下且不要有特殊符号。转换完成后用3d-tiles-validator检查下确保没有invalid的瓦片。4. Cesium性能优化实战心得模型发布到Cesium后真正的挑战才开始。我处理过上百个倾斜摄影项目总结出这些性能优化技巧首先是相机参数设置。新手最容易犯的错误是直接照搬官方示例的相机高度实际上应该根据模型尺寸动态计算viewer.camera.flyTo({ destination : Cesium.Cartesian3.fromDegrees(经度, 纬度, 高度), orientation : { heading : 0.0, pitch : -Math.PI/4, roll : 0.0 } });其次是内存管理。大场景加载一定要做分块处理我的经验公式是每块不超过50MB同时加载的区块不超过3个。可以在Cesium的Viewer初始化时加入这些配置viewer.scene.globe.depthTestAgainstTerrain true; viewer.scene.requestRenderMode true; viewer.scene.fog.enabled true;最后说说阴影优化。倾斜摄影在Cesium中投射阴影非常耗性能我的方案是只在建筑物密集区域开启阴影并且把阴影质量降到中等。可以用Cesium.ShadowMap的size参数控制质量2048是个不错的平衡点。