cesium 模型方法

// cesium 模型效果整合
/**
 * @description: 背景修改成天空盒(根据时间不同天空盒背景不同)
 * @param {any} viewer :实体
 * @param {Number} longitude :经度
 * @param {Number} latitude :纬度
 * @param {Number} height :高度
 * @param {string} name :名字
 * @param {String} url :模型的文件路径
 * @param {Number} scale :缩放比例
 * @param {Number} minimumPixelSize :模型的最小像素大小
 * @param {Number} maximumScale :模型的最大缩放比例
 */
function addModel(viewer, longitude, latitude, height, name, url, scale, minimumPixelSize, maximumScale, heading, pitch, roll) {
    var position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height); // 模型的位置
    var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, new Cesium.HeadingPitchRoll(
        heading, // 设置这个属性即可(顺时针旋转的角度值)
        pitch,
        roll
    )) // 计算模型的旋转四元数
    viewer.entities.add({
        name: name /* "model_entity" */,
        position: position,
        orientation: orientation,
        model: {
            uri: url, /* "/model/wireless/ty1821.glb", */ // 模型文件的路径
            scale: scale /* 1.0 */, // 模型的缩放比例
            minimumPixelSize: minimumPixelSize /* 64 */, // 模型的最小像素大小
            maximumScale: maximumScale /* 200 */, // 模型的最大缩放比例
        }
    });
}


/**
 * 删除模型
 * @param {Viewer} viewer - Cesium 的 Viewer 实例
 * @param {Entity} entity - 要删除的模型实体对象
 */
function delModel(viewer, entity) {
    if (entity) {
        viewer.entities.remove(entity);
    }
}

/**
 * 获取模型
 * @param {Viewer} viewer - Cesium 的 Viewer 实例
 * @param {String} name - 模型的名称
 * @param {String} type - 模型获取类型,可选值为 'id'、'name'
 * @returns {Entity|Array} - 当 type 为 'id' 时返回单个实体,当 type 为 'name' 时返回模型实体数组
 */
function getModel(viewer, name, type) {
    var modelArray = []; // 存储模型实体的数组
    if (type == 'id') {
        var entity = viewer.entities.getById(name);
        return entity
    } else if (type == 'name') {
        var entities = viewer.entities.values;
        for (var i = 0; i < entities.length; i++) {
            var entity = entities[i];
            if (entity.name === name) {
                modelArray.push(entity); // 将匹配的实体添加到数组中
            }
        }
        return modelArray; // 返回存储模型实体的数组
    }
}

export {
    addModel,
    delModel,
    getModel
};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值