Cesium官方教程9(有错误)

var viewer = new Cesium.Viewer('cesiumContainer');

//不透明的盒子,启用背面裁剪,深度检测,不需要混合
var appearance = new Cesium.PerInstanceColorAppearance({
    translucent : false,   //半透明
    closed : true          //闭合
});

//与上面的设置等价
var anotherAppearance = new Cesium.PerInstanceColorAppearance({
    renderState : {
        depthTest : {
            enabled : true
        },
        cull : {
            enabled : true,
            face : Cesium.CullFace.BACK
        }
    
    }
});

var entityPlane = viewer.entities.add({
    model : {
        uri : 'http://localhost:8080/apps/SampleData/models/CesiumAir/Cesium_Air.gltf',
        minimumPixelSize : 64
    },
    position : Cesium.Cartesian3.fromDegrees(-112.110693, 36.1, 1000.0)
});
viewer.trackedEntity  =entityPlane;
//计算当前时间点飞机模型的位置矩阵
function computeModelMatrix(entity, time){    
    var position = Cesium.Property.getValueOrUndefined(entity.position, time, new Cesium.Cartesian3());
    if( !Cesium.defined(position)){
        return undefined;
    }
    //alert(position);
    var orientation = Cesium.Property.getValueOrUndefined(entity.orientation, time, new Cesium.Quaternion());
    var modelMatrix;
    if(!Cesium.defined(orientation)){
        modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position,undefined, new Cesium.Matrix4());       
       
   }
    else{
        modelMatrix = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromQuaternion(orientation, new Cesium.Matrix3()), position, new Cesium.Matrix4()) ;
        
    }
    return modelMatrix;
          
   // return entity.computeModelMatrix(time, new Cesium.Matrix4());
    
   
}
//粒子放在飞机引擎上产生,平移矩阵
function computeEmitterModelMatrix(){
    var hpr = Cesium.HeadingPitchRoll.fromDegrees(0.0, 0.0, 0.0, new Cesium.HeadingPitchRoll());
    var trs = new Cesium.TranslationRotationScale();
    trs.translation = Cesium.Cartesian3.fromElements(0, 0, 0, new Cesium.Cartesian3());
    trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr, new Cesium.Quaternion());
    return Cesium.Matrix4.fromTranslationRotationScale(trs, new Cesium.Matrix4());
}


//加上重力
var gravityScratch = new Cesium.Cartesian3();
function applyGravity( p, dt ){
    //计算每个粒子的向上向量
    var position = p.position;
    var positionA = Cesium.Cartesian3.normalize(position, new Cesium.Cartesian3());
    Cesium.Cartesian3.multiplyByScalar(positionA, 5, positionA);
    p.position = Cesium.Cartesian3.add(p.position,positionA, p.position);
}

//基本粒子系统
var particleSystem = viewer.scene.primitives.add(new Cesium.ParticleSystem({
    //粒子图片
    image : 'http://localhost:8080/apps/SampleData/fire.png',
    //粒子大小
    startScale : 1.0,
    endScale : 4.0,
    particleLife : 1.0,
    //速度
    speed : 5.0,
    imageSize : new Cesium.Cartesian2(20.0,20.0),
    emissionRate : 5.0,
    rate : 5.0,
    //颜色
    startColor : Cesium.Color.RED.withAlpha(0.7),
    endColor : Cesium.Color.YELLOW.withAlpha(0.3),
    //粒子行为
    //发射器参数
    emitter : new Cesium.ConeEmitter(Cesium.Math.toRadians(30.0)),
    //粒子系统的局部坐标系内变换粒子发射器
    emitterModelMatrix : computeEmitterModelMatrix(),
    //粒子系统参数
    //粒子系统从模型坐标系转到世界坐标系
    modelMatrix : computeModelMatrix(entityPlane, Cesium.JulianDate.now()),
    lifetime : 16.0,
    loop : false,
    //重力加速度
    forces : [applyGravity]
    
}));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值