Cesium 通过scaleByDistance设置远小近大的广告牌图形视觉效果
通过设置Cesium.BillboardGraphics.ConstructorOptions的 scaleByDistance( Billboard和Label的属性) 来实现根据摄像机的距离改变实体的scale(缩放比)
Cesium.BillboardGraphics.ConstructorOptions
NearFarScalar
NearFarScalar接受参数
Cesium.NearFarScalar (near:摄像机范围的下限,nearValue:摄像机范围下限的值,far:摄像机范围的上限,farValue:摄像机范围上限的值)
比如:scaleByDistance: new Cesium.NearFarScalar(2000, 1, 8000, 0),
含义就是在摄像头和Billboard之间的距离在2000-8000之间的时候,Billboard的Scale比例按照1->0之间的插值来缩放。当摄像头和Billboard之间距离小于2000的时候,就按照2000时候的值1处理(这里如果不是1,而是0.5,那小于2000时候的比例就是0.5了)。而当大于8000的时候,就会按照0(其实就是8000对应的比例值)缩放。
原文链接:https://blog.csdn.net/weitaming1/article/details/93881534
下面是根据cesium官方实例里面找来的一组scaleByDistance的值,e2表示10的2次方
scaleByDistance: new Cesium.NearFarScalar(1.5e2, 2.0, 1.5e7, 0.5)
let obj = {
show: true, // default
pixelOffset: new Cesium.Cartesian2(0, 0), // default: (0, 0)
eyeOffset: new Cesium.Cartesian3(0.0, 0.0, 0.0), // default
horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // default
verticalOrigin: Cesium.VerticalOrigin.CENTER, // default: CENTER
scale: 1.0, // default: 1.0
color: Cesium.Color.WHITE, // default: WHITE LIME
alignedAxis: Cesium.Cartesian3.ZERO, // default
scaleByDistance: new Cesium.NearFarScalar(1.5e2, 2.0, 1.5e7, 0.5),
width: 38, // default: undefined
height: 38, // default: undefined
depthTestAgainstTerrain: false
};
//图片配置
obj.image = `images/xxx.png`;
let billboard = new Cesium.BillboardGraphics(obj);
let entity = new Cesium.Entity({
position: Cesium.Cartesian3.fromDegrees(lon, lat, 23000),
billboard: billboard,
id: '9527'
});
this.viewer.entities.add(entity);