@rtzh/engine
v0.0.11
Published
CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.
Readme
@rtzh/engine
⚠️ 本项目是基于 CesiumJS 的
@cesium/engine22.1.0 包修改而来的定制版本。原始项目来源:CesiumGS/cesium
License
Apache 2.0. CesiumJS is free for both commercial and non-commercial use.
变更日志
功能新增(Features)
模型及3D图块线框显示功能
- 在
Model类中新增showWireframe、hideWireframe和toggleWireframe方法,实现模型的线框渲染切换 - 在
Cesium3DTileset类中新增对应的线框显示方法,支持对整个3D图块集切换线框模式 - 支持设置线框颜色及颜色混合模式
- 支持链式调用以方便设置和切换线框状态
- 对WebGL1环境添加提示,需启用
enableDebugWireframe才能生效
基于重心坐标的线框调试模式支持
- 在
Model和Cesium3DTileset中新增debugWireframeMode属性,支持"lines"和"barycentric"两种模式切换 - 新增
debugWireframeColor、debugWireframeFillAlpha、debugWireframeLineWidth和debugWireframeOverlay属性,丰富线框渲染配置 - 实现基于重心坐标的线框渲染管线,添加
BarycentricWireframePipelineStage - 修改顶点着色器(
ModelVS.glsl)和片段着色器(ModelFS.glsl)以支持重心线框效果及叠加选项 - 在
WireframePipelineStage中增加对 barycentric 模式的跳过逻辑,避免重复渲染和冲突 - 在
Model3DTileContent中同步新线框调试属性,保证瓦片模型线框一致性 - 兼容WebGL1和WebGL2环境,lines模式需启用
enableDebugWireframe,barycentric模式无需
线框扫描线和发光效果支持
- 在
Model和Cesium3DTileset中添加effects参数支持扫描线和发光配置 - 实现扫描线方向、速度和发光强度的计算逻辑
- 根据扫描线方向计算扫描范围和模型高度范围
- 在
Model3DTileContent中传递相关有线框效果参数 - 修改片段着色器(
ModelFS.glsl)添加扫描线高亮和发光效果的计算与混合 - 修改顶点着色器(
ModelVS.glsl)传递模型世界坐标,支持扫描线效果
点光源照明支持
- 新增
PointLight类描述点光源属性及构造方法 - 在
Scene中添加点光数组以支持额外光照 UniformState中添加点光相关状态及自动uniform支持LightingPipelineStage新增点光相关宏定义和光照计算逻辑Model增加点光变化检测并触发绘制命令重建- 实现点光位置、颜色及范围等数据上传至GPU uniform数组
- 维护点光数量限制为8并确保对应uniform数组长度匹配
- 优化点光范围衰减和平滑过渡计算保障渲染效果
- 在
AutomaticUniforms.js中新增自动uniform以支持点光源数据传递到GLSL着色器 - 在
LightingStageFS.glsl中实现点光源光照计算代码,支持范围衰减和距离衰减 - 在
FrameState中新增pointLights字段以传递点光源信息
Bug修复(Fixes)
- 优化 Model 的调试线框属性设置逻辑
- 修正
debugWireframeColor赋值时避免无效克隆和重复设置 - 添加
debugWireframeFillAlpha赋值的重复值检测以减少无谓重绘 - 在
Model3DTileContent中仅当debugWireframe开启时赋值相关调试线框属性 - 移除未启用
debugWireframe时对model.color的无效赋值 - 统一默认的
_debugWireframeScanAxis为Cartesian3(0, 0, 1)实例
- 修正
重构(Refactors)
- 优化多个模块的代码结构和逻辑
- 修正 Model 加载中 Feature ID 属性的类名称
- 移除调试扫描线相关的多余高度变量和优化着色器逻辑
