27 thoughts to “Cesium实战(二十二)自定义entity动态纹理”

      1. 可能我没表述清楚,这样说吧,我用箭头图片自定义了一个流动材质,然后在绘制的线中使用这个材质。那这个线的效果就是从起点到终点只有一个箭头。我想要的是这个箭头流动纹理在这个线上均匀分布,类似于图片材质repeat属性,这个需要在着色器上怎么修改呢

  1. npm cesium1.16.8引用方式为模块化引入import{ Cartesian3} from “cesium”; 无法获取Cesium对象,也无法用如下方式设置属性Cesium.PolylineTrailLinkMaterialProperty = PolylineTrailLinkMaterialProperty;
    如何集成呢?求大神指导。谢谢!

  2. 大神您好,创建好entity后又修改meterial,把它重新赋给entity就不行,还是原来的质材,请问如何动态修改meterial呀,代码如下,谢谢大神
    let meterial = new Cesium.PolylineTrailLinkMaterialProperty(cesiumColor, speed, cvs);
    Entity.polyline.meterial=meterial;

    1. PolylineTrailLinkMaterialProperty.prototype.equals 里面的Property(报错的地方) 改成 Cesium.Property;
      调用方式增加了代码
      你改了再试一下

      1. 报错的地方已经按您说的改了,不报错了,我是实时修改material时不起作用,后来发现是material写错了,已解决,谢谢大神

  3. 你好,我把材质设置了一个duration之后赋给了一个wall,又设置了不同的duration之后赋给了另一个wall,但是第二个wall的流动速率跟第一个是一致的,没有改变,我想让两个wall的流动速率不同,请问这个应该怎么解决?

  4. 使用 materialInput.st 可以拿到 0~1 的坐标系,拿 0~实际大小 的坐标系的时候遇到了几个问题想问下:
    1. 0~实际大小的坐标系可以用 gl_FragCoord.xy,但是做出的材质不是固定在几何体上而是会随屏幕的移动而移动,并且改变俯仰角(pitch),材质始终会面向屏幕。
    2. 我用 dFdx() 和 dFdy() 通过换算能够拿到坐标系,材质也不会随屏幕移动或者始终面向屏幕,但是缩放后会非常不清晰,变成类似雪花屏的样子,代码如下
    vec2 get_coord(vec2 st) {
    vec2 dx = dFdx(st);
    vec2 dy = dFdy(st);

    float pixel_size_x = length(dx);
    float pixel_size_y = length(dy);

    return vec2(st.x / pixel_size_x, st.y / pixel_size_y);
    }

    想问下怎么解决这个问题,非常感谢!