首页 / Cesium / 使用示例
浏览模型节点
一个模型内部往往由很多节点组成。示例用带命名的三层楼板模型,按名字找回节点并逐层高亮, 这是做构件查询、楼层切换的基础。
源码与运行效果
这个示例在做什么
GLB 的 nodes 数组里写了三个节点,名字分别是
level-1、level-2、level-3,各自绑定一个楼板网格。
模型加载完成后,model.getNode('level-2') 就能取到这个节点对象;
名字写错时返回 undefined,示例里据此显示「未找到」。
高亮盒子是一个普通实体,位置随当前楼层的高度改变。
真实项目里节点往往自带变换,这时读 node.matrix 与模型的
modelMatrix 相乘,就能得到节点的世界坐标,比这里的「按楼层高度估算」更准确。
关键接口
| 接口 | 作用 |
|---|---|
model.getNode(name) | 按节点名取 ModelNode,名称来自 glTF 的 nodes[].name |
node.matrix | 节点相对父节点的局部变换矩阵 |
ConstantPositionProperty | 运行时替换实体位置,避免重建实体 |
model.modelMatrix | 模型的整体变换,与节点矩阵配合可算出世界坐标 |
可以直接改的地方
| 位置 | 改什么 | 效果 |
|---|---|---|
floorsGlb(16, 4, 12, 3, …) | 楼层数改成 6 | 节点数量与高亮循环一起变多 |
names 数组 | 写一个不存在的名字 | 提示「未找到」,验证名称匹配逻辑 |
setTimeout(tick, 1600) | 改成 600 | 切换更快 |
#4d9bff | 换成其他颜色 | 高亮色 |
替代说明:官方示例使用带完整节点层级的 ion 模型。这里用三节点 GLB 复现节点查询的过程,
getNode 的用法与官方一致;若节点上有动画,可继续用 node.matrix 驱动。