当前位置: 首页 > news >正文

cesium/resium 修改子模型材质

我是 www.v2ex.com/t/1151549 的作者,在csdn这边补全一些更多的信息

相关工具

主项目插件版本: "cesium": "^1.131.0",、"resium": "^1.19.0-beta.1"、"three": "^0.178.0"、"react": "^19.1.0"、"3d-tiles-renderer": "^0.4.13"

用ai写的给glb的顶点属性增加_BATCHID的脚本的插件依赖: "@gltf-transform/core": "^4.2.1","@gltf-transform/extensions": "^4.2.1"

npm版的非官方的那个3d-tiles-tools的版本: 1.0.0

官方3d-tiles-tools源码的版本"name": "3d-tiles-tools","version": "0.5.0",

失败的glb模型路线

最近有单子搞 web3d ,有个明确的需求是对"一个由多个模型组成的大模型"进行子模型级别的交互并更改材质颜色。这个需求原本和团队里人聊的很嗨,感觉实现很容易,实际上我(+ai )硬磨了 3 天半后,发现 resium 的 Entiy 、Model 都不行,感觉卡的够久了,就不再试试 Primitive 了,开始回头复盘哪里出了问题——blender 导出的 glb 模型,resium 倒是能拿到 node ,但很多都是不公开的变量,虽然 console 能打印,但我这边调研的定论是"cesium 不能对 glb 模型进行 node 级别的材质颜色修改",赋值能赋值成功,scene 重渲染就是不生效。

我这边为了防止自己对 ai 诱导型提问,豆包、通义灵码、gpt 三个混着用,第三天才想起来重新提问了大方向,明确了下一个调研方向.b3dm 的 3dtiles 。

3dtiles和.b3dm

让 gpt 写 @gltf-transform/core 的脚本失败率好高,总之基于 @gltf-transform/core 整了个脚本(这个是成功的),给 glb 的每个顶点属性加上"_BATCHID"。 用 3d-tiles-tools analyze (不是 cesium 官方的那个 3d-tiles-tools, 这里的是个 npm 包)验证了一下这个修改后的 glb 确实有了_BATCHID,下一步是把这个有 batchid 的 glb 做成有 batchTable 和 featureTable 的的.b3dm 。我尝试了一天一夜最终放弃了“让 ai 基于 @gltf-transform 去写上述要求的 glb 转.b3dm 方法”。下载了 cesium 官方的 3d-tiles-tools 源码, 用 src/tilesets/tileFormats/TileFormats 的 createB3dmTileDataFromGlb 方法搞了个脚本,成功做出了符合要求的.b3dm 。这个.b3dm 我 analyze 出来后的 xxx.batchTable.json 、xxx.featureTable.json 都是有正确的值的。对了,有个在线分析 glb 是否合规的,是 glTF Validator ,再加上官方的 3d-tiles-tools 能确保 ai 不会捣乱出非法的 glb 、.b3dm (走了很多弯路,我真信了 ai 给我搓了个验证脚本,迭代了半天然后放弃了)。tileset.json 的话,我这波调研是能跑就行,用 3d-tiles-tools 随便生成了一个,坐标什么的我自己在 resium 里用代码矫正。最终,我用 resium 的 Cesium3DTileset 接入这个 3dtiles 后,成功 pick 到了一个 Cesium3DTileFeature 对象,pickedObject.getProperty('name')也有值了,可以通过 tile 的 Cesium3DTileStyle 批处理改材质颜色了。

http://www.xdnf.cn/news/1280593.html

相关文章:

  • 第5节 大模型分布式推理通信优化与硬件协同
  • typecho博客设置浏览器标签页图标icon
  • 标准io(1)
  • MySQL中GROUP_CONCAT函数的使用详解
  • 机器翻译:一文掌握序列到序列(Seq2Seq)模型(包括手写Seq2Seq模型)
  • ssh 远程连接加密算法报错
  • MyBatis执行器与ORM特性深度解析
  • 十二、Linux Shell脚本:正则表达式
  • 导入CSV文件到MySQL
  • 打破内网枷锁!TRAE SOLO + cpolar 让AI开发告别“孤岛困境”
  • 腾讯 iOA 测评 | 横向移动检测、病毒查杀、外设管控、部署性能
  • 浏览器CEFSharp+X86+win7 之 测试抖音小店订单抓取(八)
  • 运动规划实战案例 | 基于多源流场(Flow Field)的路径规划(附ROS C++/Python实现)
  • Nmap 渗透测试弹药库:精准扫描与隐蔽渗透技术手册
  • Qt串口通信设计指南:通信层架构与实践
  • [go] 命令模式
  • 【软考架构】主流数据持久化技术框架
  • android 换肤框架详解1-换肤逻辑基本
  • 2025第十六届蓝桥杯大赛青少组省赛C++真题(初级组和中级组)
  • 数学建模——灰色预测(GM11)
  • 北京JAVA基础面试30天打卡07
  • HTTPS的应用层协议
  • react+vite-plugin-react-router-generator自动化生成路由
  • 安全等级认证系列 | 星环ArgoDB获CC EAL2安全认证,数据安全实力获国际认可
  • Linux入门DAY21
  • 用 Python 绘制企业年度财务可视化报告 —— 从 Excel 到 9 种图表全覆盖
  • 读《精益数据分析》:媒体内容平台全链路梳理
  • 低延迟RTSP|RTMP视频链路在AI驱动无人机与机器人操控中的架构实践与性能优化
  • TRS(总收益互换)系统架构设计:多市场交易的技术实现分析
  • 每日五个pyecharts可视化图表-line:从入门到精通 (3)