cesium 局部加载_Cesium部分代码 - osc_9gohs268的个人空间 - OSCHINA - 中文开源技术交流社区...

该博客介绍了如何在Cesium中实现模型的局部加载,包括清除现有实体、设置模型的位置和朝向,并通过KO(Knockout)库实现数据双向绑定,动态调整模型颜色、透明度、轮廓颜色、轮廓大小等属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建模型

viewer.entities.removeAll();

var position = Cesium.Cartesian3.fromDegrees(

-123.0744619,

44.0503706,

height

);

var heading = Cesium.Math.toRadians(135);

var pitch = 0;

var roll = 0;

var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);

var orientation = Cesium.Transforms.headingPitchRollQuaternion(

position,

hpr

);

entity = viewer.entities.add({

name: url,

position: position,

orientation: orientation,

model: {

uri: url,

minimumPixelSize: 128,

maximumScale: 20000,

color: getColor(viewModel.color, viewModel.alpha),

colorBlendMode: getColorBlendMode(viewModel.colorBlendMode),

colorBlendAmount: parseFloat(viewModel.colorBlendAmount),

silhouetteColor: getColor(

viewModel.silhouetteColor,

viewModel.silhouetteAlpha

),

silhouetteSize: parseFloat(viewModel.silhouetteSize),

},

});

viewer.trackedEntity = entity; //相机盯着某个物体

使用KO进行数据双向绑定

// The viewModel tracks the state of our mini application.

var viewModel = {

color: "Yellow",

colors: ["White", "Red", "Green", "Blue", "Yellow", "Gray"],

alpha: 1.0,

colorBlendMode: "Highlight",

colorBlendModes: ["Highlight", "Replace", "Mix"],

colorBlendAmount: 0.5,

colorBlendAmountEnabled: false,

silhouetteColor: "Red",

silhouetteColors: ["Red", "Green", "Blue", "Yellow", "Gray"],

silhouetteAlpha: 1.0,

silhouetteSize: 2.0,

};

// Convert the viewModel members into knockout observables.

Cesium.knockout.track(viewModel);

// Bind the viewModel to the DOM elements of the UI that call for it.

var toolbar = document.getElementById("toolbar");

Cesium.knockout.applyBindings(viewModel, toolbar);

Cesium.knockout

.getObservable(viewModel, "color")

.subscribe(function (newValue) {

entity.model.color = getColor(newValue, viewModel.alpha);

});

Cesium.knockout

.getObservable(viewModel, "alpha")

.subscribe(function (newValue) {

entity.model.color = getColor(viewModel.color, newValue);

});

Cesium.knockout

.getObservable(viewModel, "colorBlendMode")

.subscribe(function (newValue) {

var colorBlendMode = getColorBlendMode(newValue);

entity.model.colorBlendMode = colorBlendMode;

viewModel.colorBlendAmountEnabled =

colorBlendMode === Cesium.ColorBlendMode.MIX;

});

Cesium.knockout

.getObservable(viewModel, "colorBlendAmount")

.subscribe(function (newValue) {

entity.model.colorBlendAmount = parseFloat(newValue);

});

Cesium.knockout

.getObservable(viewModel, "silhouetteColor")

.subscribe(function (newValue) {

entity.model.silhouetteColor = getColor(

newValue,

viewModel.silhouetteAlpha

);

});

Cesium.knockout

.getObservable(viewModel, "silhouetteAlpha")

.subscribe(function (newValue) {

entity.model.silhouetteColor = getColor(

viewModel.silhouetteColor,

newValue

);

});

Cesium.knockout

.getObservable(viewModel, "silhouetteSize")

.subscribe(function (newValue) {

entity.model.silhouetteSize = parseFloat(newValue);

});

FR:徐海涛(hunk Xu)

QQ技术交流群:386476712

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值