地虎降天龙
地虎降天龙 图形社区官方人员
也许宇宙中最反直觉的真理是,你给别人的越多,你得到的也越多。

注册于 2年前

回答
77
文章
13
关注者
10

看了下,应用的垂直领域挺深的,因为没看到框架 也没看到代码,不太能知道什么问题,等看看有没有大佬有方向

您好 您这个是浏览器上的报错哈。 和命令行报错无关哈

研究的也不是很深,尝试着看剖析问题看看,有翻了之前的文章看了下:
Fabric 材质 上
Fabric 材质 下
本来想尝试看看 repeat的回调的函数,结果发现没有好的解决方案。
只能尝试更改默认的着色器代码:

let appear = new Cesium.MaterialAppearance({
                flat :true ,
                material: new Cesium.Material({
                        translucent:false,
                        fabric : {
                            type :`Image`,
                            uniforms : {
                                image:`./static/images/symbol/0301.png`
                            }
                        },
                    }),
                vertexShaderSource://重点更改顶点着色器
                    `
                        // GLSL 300 语法,顶点着色器
                        in vec3 position3DHigh;
                        in vec3 position3DLow;
                        in vec3 normal;
                        in vec2 st;
                        in float batchId;
                        out vec3 v_positionEC;
                        out vec3 v_normalEC;
                        out vec2 v_st;
                        void main() {
                          vec4 p = czm_computePosition();
                          v_positionEC = (czm_modelViewRelativeToEye * p).xyz;      // position in eye coordinates
                          v_normalEC = czm_normal * normal;                         // normal in eye coordinates
                          v_st = st;
                          gl_Position = czm_modelViewProjectionRelativeToEye * p;
                        }
                    `
                });
//appear.fragmentShaderSource 片元着色器
//appear.vertexShaderSource 顶点着色器
        
let primitive = new Cesium.Primitive({
    geometryInstances: instances,
    appearance: appear
});

下面是说明:
image.png

点坐标效果和线效果 都是基于cesium的规范要求 定制化+着色器写的。详情见项目 ts源码

能否有职位和公司简介,联系方式
方便开发者了解详情,好让他们联系到您
谢谢😃

从您的代码看,应该是平移之前缺少了 获取模型 - 中心点的正东正北,和地表法线的方向的过度参数

Cesium.Transforms.eastNorthUpToFixedFrame(center);

详见cesium获取某个位置垂直于当前地表的垂直坐标系

cesium里面的坐标系、相互转换关系以及平移问题

看了下,目前百度地图的个性化地图编辑器已经升级了,不能用之前csdn的提供的方法了https://blog.csdn.net/qq_27816785/article/details/110920672
其瓦片数据加密了image.png
地图上的标识信息也隔离开 baidu的JSAPI自行处理了
image.png
故目前没有现成的方法,追踪此问题,有解决方案后再更新此贴吧

昨天和冰哥简单聊到了这个,问题解决的过程:
1、mac电脑上,chrome和Firefox浏览器都存在这个问题,而自带的safari浏览器不存在这个问题
2、其实显示的 是截取的中间一部分:
image.png
3、判断是,不同环境的不同浏览器 对应的 gl_PointSize 最大值不一样导致的
4、于是把片源着色器进行了如下缩放,显示正常了

        #ifdef GL_ES
        precision mediump float;
        #endif
        uniform vec2 u_resolution;
        void main(){
                vec2 p = (gl_FragCoord.xy * 2.0 - u_resolution) / min(u_resolution.x, u_resolution.y)*0.5;
                vec3 color1=vec3(0.);
                vec3 color2=vec3(0.);
                vec3 color3=vec3(0.);
                if(distance(vec2(0.,0.02),vec2(p.xy))<=.04)
                {
                    color1=vec3(.0,.0,1.);
                }
                if(distance(vec2(-.02,-.02),vec2(p.xy))<=.04)
                {
                    color2=vec3(1.,.0,0.);
                }
                if(distance(vec2(.02,-.02),vec2(p.xy))<=.04)
                {
                    color3=vec3(.0,1.,0.);
                }
                vec3 color=vec3(0.,0.,0.)+color1 + color2 + color3;
                gl_FragColor=vec4(color,1.);
        }

发布
问题