123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" />
- <meta name="apple-touch-fullscreen" content="yes" />
- <meta name="apple-mobile-web-app-capable" content="yes" />
- <meta name="apple-mobile-web-app-status-bar-style" content="black" />
- <meta name="format-detection" content="telephone=no" />
- <meta name="x5-fullscreen" content="true" />
- <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
- <!-- 标题及搜索关键字 -->
- <meta name="keywords" content="火星科技,cesium,3D,GIS,marsgis,三维,地球,地图,开发,框架,系统,示例,资料,模型,离线,外包,合肥,安徽,中国" />
- <meta
- name="description"
- content="火星科技 合肥火星 合肥火星科技 合肥火星科技有限公司 leaflet leaflet框架 leaflet开发 cesium cesium开发 cesium框架 三维 地球 模型 gis marsgis 地图离线 地图开发 地图框架 地图外包 框架 开发 外包 地图离线 二维地图 三维地图 全景漫游 地理信息系统 云GIS 三维GIS GIS平台 WebGIS"
- />
- <link rel="shortcut icon" type="image/x-icon" href="" />
- <title>扫描效果 </title>
- <script
- type="text/javascript"
- src="../lib/include-lib.js"
- libpath="../lib/"
- include="jquery,font-awesome,bootstrap,bootstrap-checkbox,layer,haoutil,turf,mars3d"
- ></script>
- <link href="css/style.css" rel="stylesheet" />
- </head>
- <body class="dark">
- <!--加载前进行操作提示,优化用户体验-->
- <div id="mask" class="signmask" onclick="removeMask()"></div>
- <div id="mars3dContainer" class="mars3d-container"></div>
- <div class="infoview">
- <input type="button" class="btn btn-primary" value="原始样式" onclick="setStyleDef()" />
- <input type="button" class="btn btn-primary" value="自定义效果1" onclick="setStyle1()" title="该方式依赖mars3d修改的cesium库" />
- <input type="button" class="btn btn-primary" value="自定义效果2" onclick="setStyle2()" title="该方式不修改Cesium源码" />
- </div>
- <script src="./js/common.js"></script>
- <script type="text/javascript">
- "use script"; //开发环境建议开启严格模式
- var map;
- var tiles3dLayer;
- function initMap(options) {
- //合并属性参数,可覆盖config.json中的对应配置
- var mapOptions = mars3d.Util.merge(options, {
- scene: {
- center: { lat: 31.267519, lng: 121.42728, alt: 2923, heading: 118, pitch: -27 },
- },
- });
- Cesium.ExperimentalFeatures.enableModelExperimental = true;
- //创建三维地球场景
- map = new mars3d.Map("mars3dContainer", mapOptions);
- map.basemap = 2017; //蓝色底图
- tiles3dLayer = new mars3d.layer.TilesetLayer({
- name: "上海市建筑物",
- url: "//data.mars3d.cn/3dtiles/jzw-shanghai/tileset.json",
- maximumScreenSpaceError: 8,
- maximumMemoryUsage: 1024,
- popup: "all",
- });
- map.addLayer(tiles3dLayer);
- }
- function setStyleDef() {
- tiles3dLayer.customShader = undefined;
- }
- function setStyle1() {
- haoutil.msg(`当前效果是:根据视角距离,模型呈现不同颜色`);
- tiles3dLayer.customShader = new Cesium.CustomShader({
- lightingModel: Cesium.LightingModel.UNLIT,
- fragmentShaderText: `
- void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material)
- {
- material.diffuse = vec3(0.0, 0.0, 1.0);
- material.diffuse.g = -fsInput.attributes.positionEC.z / 1.0e4;
- } `,
- });
- }
- function setStyle2() {
- haoutil.msg(`当前效果是:动态渐变+动态光环的特效`);
- tiles3dLayer.customShader = new Cesium.CustomShader({
- lightingModel: Cesium.LightingModel.UNLIT,
- fragmentShaderText: `
- void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material)
- {
- vec4 position = czm_inverseModelView * vec4(fsInput.attributes.positionEC,1); // 位置
- // 注意shader中写浮点数是,一定要带小数点,否则会报错,比如0需要写成0.0,1要写成1.0
- float _baseHeight = 0.0; // 物体的基础高度,需要修改成一个合适的建筑基础高度
- float _heightRange = 60.0; // 高亮的范围(_baseHeight ~ _baseHeight + _heightRange)
- float _glowRange = 100.0; // 光环的移动范围(高度)
- // 建筑基础色
- float mars_height = position.z - _baseHeight;
- float mars_a11 = fract(czm_frameNumber / 120.0) * 3.14159265 * 2.0;
- float mars_a12 = mars_height / _heightRange + sin(mars_a11) * 0.1;
- material.diffuse = vec3(0.0, 0.0, 1.0); // 颜色
- material.diffuse *= vec3(mars_a12);// 渐变
- // 动态光环
- float time = fract(czm_frameNumber / 360.0);
- time = abs(time - 0.5) * 2.0;
- float mars_h = clamp(mars_height / _glowRange, 0.0, 1.0);
- float mars_diff = step(0.005, abs(mars_h - time));
- material.diffuse += material.diffuse * (1.0 - mars_diff);
- } `,
- });
- }
- </script>
- </body>
- </html>
|