[见闻分享]cesium/resium 修改子模型材质 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
devwolf
V2EX    分享发现

[见闻分享]cesium/resium 修改子模型材质

  •  
  •   devwolf 61 天前 735 次点击
    这是一个创建于 61 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开个见闻分享(+咨询)的帖子。

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

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

    让 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 是否合规的,是 https://github.khronos.org/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 批处理改材质颜色了。

    还是自己写代码的方式太"原始"了,感觉我这次很多 ai 捣乱的原因是信息滞后,豆包那边好像是因为吃了太多 csdn,gpt 是经常来回横跳和嘴硬,通义灵码那套 mcp 我后面再看看怎么加工具整(deepseek 感觉不能说我就不提了,ps:本文的这部分总结是很主观和片面的),我直接给 ai 喂 d.ts 能少走很多弯路,我逼着通义灵码看声明文件结果看的积极性还没我高。

    参与创业陪跑后好久没逛 v 站了,差 2 个月满一年,希望这贴别成为"梦开始的地方"。

    sadyx
        1
    sadyx  
       61 天前   1
    几年前写 cesium 的时候就发现它对 glb/gltf 构件单体化不友好,遂用 threejs 代替 cesium 做单体化。在 gis 层面用 cesium ,在 bim 层面用 threejs
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1203 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:28 PVG 01:28 LAX 10:28 JFK 13:28
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86