Cesium UnitSquare 测试模型集:用同一块单位方片验证 glTF 全部存储变体与压缩路径

发布时间:2026/9/14 12:13:42
Cesium UnitSquare 测试模型集:用同一块单位方片验证 glTF 全部存储变体与压缩路径 Cesium UnitSquare 测试模型集用同一块单位方片验证 glTF 全部存储变体与压缩路径【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium本文基于 Cesium 仓库中的 UnitSquare 模型目录文档讲解这套位于 Specs/Data/Models/glTF-2.0/unitSquare/ 的测试模型集它用同一个几何体0,0,0)-(1,1,0) 的单位方片生成 14 个覆盖不同 glTF 存储方式、压缩方案与图元模式的.glb文件并配套 3D Tiles 1.1 切片集与 Sandcastle 查看脚本作为 Cesium glTF 渲染管线正确性的标尺模型。读完本文你将理解每个变体文件的技术差异、配套的 tileset 布局方式以及 Cesium 测试套件如何利用这些文件断言各压缩/交错路径的几何一致性。模型集定义一个几何体多种风味根据 README 的定义目录下所有文件描述的都是同一个正方形顶点位置覆盖 (0,0,0) 到 (1,1,0) 的单位方片均携带位置POSITION、法线NORMAL与纹理坐标TEXCOORD属性法线恒为 (0,0,1)纹理坐标取顶点位置的 (x, 1-y) 分量——即 (x,y) 坐标做垂直翻转以匹配纹理 V 轴朝下的习惯纹理一张简单的 128x128 像素占位 PNG 假纹理。这种几何完全一致、仅存储方式不同的设计使得任意两个文件在正确解析后应当得到逐顶点一致的几何结果天然适合做交叉一致性测试。三角形列表GL_TRIANGLES家族11x11 网格unitSquare11x11开头的文件是 11x11 121 个顶点的规则网格构成 200 个三角形以modeGL_TRIANGLES存储。README 列出的完整风味清单如下文件名存储方式unitSquare11x11_plain.glb纯 glTF无压缩无量化所有属性以浮点存储非交错non-interleavedaccessorsunitSquare11x11_plain_interleaved.glb与 plain 相同但数据存储在交错interleavedaccessors 中unitSquare11x11_draco.glbplain 版本的 Draco 压缩版unitSquare11x11_meshopt.glbplain 版本的 meshopt 压缩版unitSquare11x11_quantized.glbplain 文件的量化quantization版本非交错 accessorsunitSquare11x11_quantized_interleaved.glbquantized 版本交错 accessorsunitSquare11x11_unsignedShortTexCoords.glbplain 版本但纹理坐标改用GL_UNSIGNED_SHORTnormalizedaccessor 存储非交错unitSquare11x11_unsignedShortTexCoords_interleaved.glbunsignedShortTexCoords 版本交错 accessorsunitSquare11x11_unsignedShortTexCoords_quantized.glbunsignedShortTexCoords 版本叠加量化非交错unitSquare11x11_unsignedShortTexCoords_quantized_interleaved.glbunsignedShortTexCoords_quantized 版本交错 accessors从这张表可以读出该模型集覆盖的三条正交变化轴压缩无压缩 / Draco / meshoptmeshoptimizer 的 glTF 压缩扩展accessor 布局非交错各属性各自一个 bufferView/ 交错多个属性打包进同一 bufferView按byteStride步长排布属性量化浮点全精度 / 定点量化 / 纹理坐标降为归一化GL_UNSIGNED_SHORT。面向图元模式primitive mode的变体除了三角形列表glTF 还定义了其他图元模式README 为此准备了两个文件unitSquare11x2_triangleStrip.glb11x2 顶点x 方向 11 个、y 方向 2 个以modeGL_TRIANGLE_STRIP存储三角形unitSquare5_triangleFan.glb5 个顶点——(0.5, 0.5) 中心一个加四个角点各一个以modeGL_TRIANGLE_FAN存储。这两个文件用于验证解析器能否正确还原非GL_TRIANGLES模式下的三角形连接关系。面向结构的变体unitSquare_fourPrimitives_plain.glb单位方片作为单个 mesh但由 4 个图元primitive组成每个图元含 3x3 顶点。它用来测试一个 mesh 多个 primitive这类结构在 Cesium 的 Model / ModelPrimitive 映射下的行为配套独立切片集 tileset_unitSquare_fourPrimitives_plain.json。生成方式与量化参数README 还记录了这批文件的产生方式属于可复现的生成信息最基础的 plain 版本由一段基于JglTF的自定义代码片段生成压缩、交错与量化版本由glTF-Transform生成通过 gltf.report 工具链所有量化统一使用参数{ quantizePosition: 14, quantizeNormal: 10 }即位置保留 14 位有效精度、法线保留 10 位。这一细节很重要量化后位置/法线不再是浮点精确值测试断言时必须以容差epsilon比较而非精确相等。配套 3D Tiles 1.1 切片集把全部变体排成 4x4 网格目录中的 tileset.json 是一个 3D Tiles 1.1asset: { version: 1.1 }切片集其结构值得展开root 节点refine: REPLACE整体geometricError为 4096root 自带一个变换矩阵y 轴翻转把方片从水平面翻成竖直面boundingVolume为覆盖整个 4x4 布局的 box12 个子节点分别对应上文的 10 个 11x11 变体加 2 个图元模式变体每个子节点都带一个平移变换沿 x 方向 0/2/4/6、沿 z 方向 0/2/4 组成 4 列 x 3 行排布各自geometricError为 512content.uri指向对应.glb子节点变换中还包含绕 x 轴 -90° 的旋转[1,0,0,0, 0,1,0,0, 0,0,1,0, ...]与 root 的[0,0,-1,0]组合使方片最终朝向相机。从切片集结构看这套 tileset 的主要用途是把所有变体并排渲染在场景中便于肉眼对比各压缩/交错/量化路径的输出是否一致geometricError的 4096 → 512 两级设置也让它顺带验证了 Cesium 的 3D Tiles 分帧加载逻辑。而 tileset_unitSquare_fourPrimitives_plain.json 则是单根节点切片集root 直接携带unitSquare_fourPrimitives_plain.glb作为 contentbox 的 y 半轴极小0.001用于单独检验多 primitive mesh 的渲染。Sandcastle 查看脚本目录下的 Sandcastle.txt 给出在沙盒中加载该切片集的完整代码核心步骤为const viewer new Cesium.Viewer(cesiumContainer); // Create the tileset in the viewer const tileset viewer.scene.primitives.add( await Cesium.Cesium3DTileset.fromUrl( http://localhost:8003/tileset.json, { debugShowBoundingVolume: true, }) ); // Move the tileset to a certain position on the globe, // and scale it up const transform Cesium.Transforms.eastNorthUpToFixedFrame( Cesium.Cartesian3.fromDegrees(-75.152408, 39.946975, 20) ); const scale 15.0; const modelMatrix Cesium.Matrix4.multiplyByUniformScale( transform, scale, new Cesium.Matrix4() ); tileset.modelMatrix modelMatrix; // Zoom to the tileset, with a small offset so that // it is fully visible const offset new Cesium.HeadingPitchRange( Cesium.Math.toRadians(-22.5), Cesium.Math.toRadians(-22.5), 250.0 ); viewer.zoomTo(tileset, offset);要点Cesium3DTileset.fromUrl配合debugShowBoundingVolume: true可视化包围盒用eastNorthUpToFixedFrame把切片集放到地球表面-75.152408°, 39.946975°并放大 15 倍最后zoomTo时附加 -22.5° 的 heading/pitch 偏移保证整排方片完全入镜。按此脚本运行仓库内置开发服务器tileset 的localhost:8003地址对应仓库静态服务端口即可复现 4x3 变体对比场景。测试套件如何消费这套模型这套模型并非仅供人工查看而是 Cesium 引擎 glTF 管线回归测试的主力夹具仓库内三处测试直接引用几何一致性测试packages/engine/Specs/Scene/Model/ModelReaderSpec.js 以./Data/Models/glTF-2.0/unitSquare/为 baseUrl内部定义了SpecVertex/SpecTriangle/SpecIndexedTriangleSet三个辅助类把加载出的模型展平成顶点位置 纹理坐标 三角形的规范形式然后逐一断言plain与interleaved、draco、meshopt、quantized、unsignedShortTexCoords及其量化组合等各文件之间逐顶点等价位置与纹理坐标以 epsilon 容差比较三角形比较允许顶点循环置换。从该文件的测试组织看它的断言矩阵正好覆盖 README 清单中的每一种风味组合是验证 Model 解析器对各类 accessor 布局、压缩扩展处理是否一致的直接证据。切片集 影像测试packages/engine/Specs/Scene/Model/loadTilesetWithImagery.js 专门加载tileset_unitSquare_fourPrimitives_plain.json用于在四 primitive 模型这一特殊结构上叠加影像imagery场景的加载验证。模型原始影像Model primitive imagery测试packages/engine/Specs/Scene/Model/ModelPrimitiveImagerySpec.js 同时引用裸unitSquare_fourPrimitives_plain.glb与上述 tileset 两种入口验证同一内容经由直接加载 glb与经 3D Tiles 加载两条路径时ModelPrimitive 的影像处理行为一致。小结UnitSquare 模型集的价值在于控制变量同一几何、同一法线、同一纹理坐标只改变 glTF 的存储与编码方式交错布局、Draco/meshopt 压缩、定点量化、GL_UNSIGNED_SHORT归一化纹理坐标、GL_TRIANGLE_STRIP/GL_TRIANGLE_FAN图元模式、多 primitive 结构。对贡献者而言改动Model解析、accessor 解码或压缩扩展支持后跑通 ModelReaderSpec.js 就等于同时验证了全部 14 个变体的行为对使用者而言tileset.json 加 Sandcastle.txt 提供了一个开箱即用的视觉对比场景。量化参数{ quantizePosition: 14, quantizeNormal: 10 }也提示了量化测试必须采用容差比较的前提。【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询