工程模型进入三维 GIS 后,最常见的误解是“只要几何在,细节就还在”。实际上,硬边、轮廓线、虚线、点尺寸、纹理比例和共面标注都承载设计语义。失去这些信息后,模型仍能旋转,却可能不再适合审查、施工沟通或资产核对。Cesium 2026 年 7 月发布的 CAD 风格扩展,正把这类表达写进 glTF 与 3D Tiles 2.0 的数据和渲染链。
可核查事实
-
Cesium 于 2026 年 7 月 9 日发布 CAD 风格工作流扩展公告,并说明它们面向 glTF 与 3D Tiles 2.0。
-
官方列出的 CAD 表达需求包括清晰硬边与轮廓、精确宽度与虚线样式的线、带语义大小的点、缩放时保持比例的纹理,以及带深度和遮罩规则的平面填充。
-
CesiumJS 支持加载和渲染 CAD 风格边;
EXT_mesh_primitive_restart与EXT_mesh_primitive_edge_visibility用于把边几何嵌入设计模型 tileset。 -
边可被编码为
hidden、silhouette、hard和repeated hard;其中轮廓边仅在相邻三角形一面朝向相机、另一面背向相机时绘制。 -
边扩展支持独立于三角面材质的边材质与
lineStrings;CesiumJS 采用专门边渲染 pass,并用 feature ID 与深度比较降低 z-fighting。 -
BENTLEY_materials_line_style的宽度以屏幕像素定义,虚线 pattern 是 16 位无符号整数;点样式的 diameter 也以 CSS 像素定义。 -
EXT_textureInfo_constant_lod让 CesiumJS 动态生成纹理坐标以大致维持屏幕上的 texel-to-pixel 比例,并平滑混合邻近 LOD。 -
BENTLEY_materials_planar_fill提供wireframeFill、backgroundFill、behind等填充行为;公告称其 CesiumJS 支持尚在推进。
核心机制:表达语义随模型一起交付
普通网格只交付三角形与材质,CAD 风格扩展则补上“这条线为什么画、应如何画”。边可见性决定哪些边属于隐藏、轮廓或硬边;线样式决定宽度和虚线;填充属性处理共面文字、剖面和底色。这样,客户端不必猜测某条线是否是模型边界、标注还是普通纹理。
但这种能力要求数据生产方使用对应扩展。公告也提示恒定 LOD 纹理要采用可无缝平铺的纹理,并按真实模型尺度、重复频率、偏移与观察距离写入参数。没有这些作者侧约束,浏览器端再好的渲染也无法还原意图。
GIS 场景:工程审查而非单纯漫游
在市政、机场、厂区或建筑数字孪生中,可把 CAD 线条视为信息层:硬边辅助识别构件边界,虚线区分不同工程状态,点尺寸标示测量或控制点,平面填充确保标注不会被墙体遮住。室外 GIS 底图与三维设计模型叠加时,这些语义能减少“模型看似正确、实际读错”的风险。
上线前应在固定相机、距离和浏览器组合下比较:表面加边、仅边、缩放后的线宽、虚线节奏、点直径、纹理比例,以及共面文字和填充的前后关系。不要只比较截图;同时读取 tileset 所带扩展、材质和 feature ID,确认表达来自数据而非临时前端补丁。
技术路径
-
在导出链登记 glTF/3D Tiles 版本及启用的边、线、点、纹理、填充扩展。
-
用典型构件建立黄金场景:硬边、轮廓边、隐藏边、虚线、控制点、重复纹理和共面标注各至少一例。
-
对不同缩放级别和相机角度回归线宽、纹理比例与轮廓条件;屏幕像素语义不应用世界坐标阈值替代。
-
对有填充的共面元素检查深度排序和 z-fighting,并把尚未支持的扩展列为明确回退项。
-
将渲染差异绑定模型版本、扩展版本、CesiumJS 版本和 GPU/浏览器组合,升级时重新验收。
检查清单
-
模型是否实际携带所需 glTF 扩展,而非只在样式层模拟?
-
hidden、silhouette、hard边在不同相机角度是否符合预期? -
线宽、虚线、点直径在缩放时是否仍表达同一语义?
-
恒定 LOD 纹理是否无缝,且真实尺度与观察距离参数已登记?
-
共面文字、填充与边是否出现 z-fighting;尚未支持的功能是否有回退?
风险边界
公告中的“已支持”与“即将支持”必须分开验收,尤其平面填充在文中仍属 forthcoming。屏幕像素宽度可保持视觉稳定,却不等于工程测量精度。数据导出、浏览器、GPU 和 CesiumJS 版本均可能改变结果,高影响工程判断仍需回到权威设计数据与人工审查。
结论
三维 GIS 的工程可读性不只靠三角面数量。把边、线、点、纹理与填充作为数据合同和回归对象,才能让 3D Tiles 模型从可漫游资产变成可审查的数字孪生。