export const add3DTiles = async (url: string, viewer: Viewer) => { const tileset1 = await Cesium.Cesium3DTileset.fromUrl(url); const tileset = tileset1; viewer.scene.primitives.add(tileset); tileset.style = new Cesium.Cesium3DTileStyle({ color: 'vec4(0, 0.5, 1.0,1)', }); viewer.zoomTo(tileset1); const customShader = new Cesium.CustomShader({ lightingModel: Cesium.LightingModel.UNLIT, fragmentShaderText: ` void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) { float _baseHeight = 0.0; // 物体的基础高度,需要修改成一个合适的建筑基础高度 float _heightRange = 60.0; // 高亮的范围(_baseHeight ~ _baseHeight + _ heightRange) 默认是 0-60米 float _glowRange = 300.0; // 光环的移动范围(高度) float vtxf_height = fsInput.attributes.positionMC.z-_baseHeight; float vtxf_a11 = fract(czm_frameNumber / 120.0) * 3.14159265 * 2.0; float vtxf_a12 = vtxf_height / _heightRange + sin(vtxf_a11) * 0.1; material.diffuse*= vec3(vtxf_a12, vtxf_a12, vtxf_a12); float vtxf_a13 = fract(czm_frameNumber / 360.0); float vtxf_h = clamp(vtxf_height / _glowRange, 0.0, 1.0); vtxf_a13 = abs(vtxf_a13 - 0.5) * 2.0; float vtxf_diff = step(0.005, abs(vtxf_h - vtxf_a13)); material.diffuse += material.diffuse * (1.0 - vtxf_diff); } `, }); tileset.customShader = customShader; };
正文
Cesium升级后3dtiles自定义着色器
文章版权声明:除非注明,否则均为
譬如朝露_策温技术开发工作室博客原创文章,转载或复制请以超链接形式并注明出处。
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接