CesiumJS 中的 glTF 渲染系统以该类为核心,该类为加载和渲染 3D 资产提供了高层次的抽象。该系统支持 glTF 2.0 规范,包括多种压缩、元数据和实例化的扩展。该架构采用模块化的“流水线阶段”设计,将 glTF 组件转换为 GPU 可用的绘制命令。Model

模型架构

该类是3D资产的主要入口,无论是独立文件还是内嵌的图块。它通过场景图来协调加载过程,并管理视觉状态。ModelCesium3DTilesetGltfLoader

模型实体关系

下图展示了高层类与底层渲染原语及发送给 的命令之间的关系。ModelContext



资料来源:packages/engine/Source/Scene/Model/Model.js38 packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js49-108 packages/engine/Source/Renderer/Context.js41-71

渲染流水线阶段

CesiumJS 采用解耦流水线架构处理 glTF 数据。每个配置一个列表ModelRuntimePrimitivepipelineStages packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js98这些阶段负责更新着色器的源代码、统一和顶点属性。

艺名

目的

GeometryPipelineStage

处理基本顶点属性(位置、法线、tex坐标)packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js16

MaterialPipelineStage

处理 glTF PBR(物理基渲染)材料packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js19

FeatureIdPipelineStage

摘录功能包含用于拣选和样式的 IDpackages/engine/Source/Scene/Model/ModelRuntimePrimitive.js15

SkinningPipelineStage

为动画角色应用GPU蒙皮packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js30

DequantizationPipelineStage

用于解压压缩顶点数据的句柄KHR_mesh_quantizationpackages/engine/Source/Scene/Model/ModelRuntimePrimitive.js12

有关具体阶段和绘制命令生成的详细信息,请参见模型流水线

着色器系统

模型着色器(和)通过从活跃流水线阶段拼接的片段动态生成。ModelVS.glslModelFS.glsl

着色器执行流程

下图展示了 glTF 片段着色器内的执行顺序。



资料来源:packages/engine/Source/Shaders/Model/ModelFS.glsl64-155

定制化与专业渲染

glTF 系统可扩展支持用户定义逻辑和专用数据格式:

  • 自定义着色器:用户可以通过 API 向模型流水线注入 GLSL 代码。这允许自定义程序纹理、顶点位移和材质覆盖。详情请参见自定义着色器。CustomShader

  • 高斯Splats:通过扩展支持高保真基于点的渲染。详情请参见高斯散块。KHR_gaussian_splatting

  • 全景:将全景影像和街景服务整合进场景。详情请参见全景和街景

选取与元数据

在 glTF 系统中,拨片由PickingPipelineStage packages/engine/Source/Scene/Model/ModelRuntimePrimitive.js24它会渲染独特的“选色”到PickFramebuffer packages/engine/Source/Scene/PickFramebuffer.js15-32系统还支持 ,允许着色器在EXT_structural_metadatametadataStage packages/engine/Source/Shaders/Model/ModelFS.glsl72-75

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐