layui.use(['form', 'slider'], function () {
|
var form = layui.form;
|
var slider = layui.slider;
|
var viewer = parent.sgworld._Viewer;
|
var Cesium = parent.Cesium;
|
|
var ambientSetting = parent.window.ambientSetting;
|
var ambientOcclusionModel, bloomModel, depthOfFieldModel;
|
if (ambientSetting && ambientSetting.ambientOcclusionModel) {
|
ambientOcclusionModel = ambientSetting.ambientOcclusionModel;
|
} else {
|
ambientOcclusionModel = {
|
show: false,
|
ambientOcclusionOnly: false,
|
intensity: 5.0,
|
bias: 0.2,
|
lengthCap: 1,
|
stepSize: 0,
|
blurStepSize: 3
|
};
|
}
|
|
if (ambientSetting && ambientSetting.bloomModel) {
|
bloomModel = ambientSetting.bloomModel;
|
} else {
|
bloomModel = {
|
show: false,
|
glowOnly: false,
|
contrast: 100,
|
brightness: 0.2,
|
delta: 1,
|
sigma: 1,
|
stepSize: 0
|
};
|
}
|
|
var depthOfField;
|
if (ambientSetting && ambientSetting.depthOfFieldModel) {
|
depthOfFieldModel = ambientSetting.depthOfFieldModel;
|
depthOfField = depthOfFieldModel.depthOfField;
|
} else {
|
depthOfFieldModel = {
|
show: true,
|
focalDistance: 87,
|
delta: 1,
|
sigma: 3.78,
|
stepSize: 2.46,
|
depthOfField: undefined
|
};
|
}
|
|
var ambientOcclusion = viewer.scene.postProcessStages.ambientOcclusion;
|
if (ambientOcclusionModel.show) {
|
$('#AmbientOcclusion').attr('checked', 'checked');
|
form.render();
|
}
|
form.on('checkbox(AmbientOcclusion)', function (data) {
|
ambientOcclusionModel.show = this.checked;
|
updateAmbientOcclusionProcess();
|
});
|
|
if (ambientOcclusionModel.ambientOcclusionOnly) {
|
$('#AmbientOcclusionOnly').attr('checked', 'checked');
|
form.render();
|
}
|
form.on('checkbox(AmbientOcclusionOnly)', function (data) {
|
ambientOcclusionModel.ambientOcclusionOnly = this.checked;
|
updateAmbientOcclusionProcess();
|
});
|
|
slider.render({
|
elem: '#slideTest1',
|
theme: '#1E9FFF', //主题色
|
min: 1,
|
max: 10,
|
value: ambientOcclusionModel.intensity,
|
change: function (value) {
|
ambientOcclusionModel.intensity = value;
|
updateAmbientOcclusionProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest2',
|
theme: '#1E9FFF', //主题色
|
min: 0,
|
max: 100,
|
value: ambientOcclusionModel.bias * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
ambientOcclusionModel.bias = value;
|
updateAmbientOcclusionProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest3',
|
theme: '#1E9FFF', //主题色
|
min: 100,
|
max: 1000,
|
value: ambientOcclusionModel.lengthCap * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
ambientOcclusionModel.lengthCap = value;
|
updateAmbientOcclusionProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest4',
|
theme: '#1E9FFF', //主题色
|
min: 0,
|
max: 100,
|
value: ambientOcclusionModel.stepSize * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
ambientOcclusionModel.stepSize = value;
|
updateAmbientOcclusionProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest5',
|
theme: '#1E9FFF', //主题色
|
min: 0,
|
max: 400,
|
value: ambientOcclusionModel.blurStepSize * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
ambientOcclusionModel.blurStepSize = value;
|
updateAmbientOcclusionProcess();
|
}
|
});
|
|
var bloom = viewer.scene.postProcessStages.bloom;
|
if (bloomModel.show) {
|
$('#Bloom').attr('checked', 'checked');
|
form.render();
|
}
|
form.on('checkbox(Bloom)', function (data) {
|
bloomModel.show = this.checked;
|
updateBloomProcess();
|
});
|
// form.on('checkbox(GlowOnly)', function (data) {
|
// bloomModel.glowOnly = this.checked;
|
// updateBloomProcess();
|
// });
|
slider.render({
|
elem: '#slideTest6',
|
theme: '#1E9FFF', //主题色
|
min: 0,
|
max: 255.0,
|
value: bloomModel.contrast,
|
change: function (value) {
|
bloomModel.contrast = value;
|
updateBloomProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest7',
|
theme: '#1E9FFF', //主题色
|
min: -100,
|
max: 100,
|
value: bloomModel.brightness * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
bloomModel.brightness = value;
|
updateBloomProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest8',
|
theme: '#1E9FFF', //主题色
|
min: 100,
|
max: 500,
|
value: bloomModel.delta * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
bloomModel.delta = value;
|
updateBloomProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest9',
|
theme: '#1E9FFF', //主题色
|
min: 100,
|
max: 1000,
|
value: bloomModel.sigma * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
bloomModel.sigma = value;
|
updateBloomProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest10',
|
theme: '#1E9FFF', //主题色
|
min: 0,
|
max: 700,
|
value: bloomModel.stepSize * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
bloomModel.stepSize = value;
|
updateBloomProcess();
|
}
|
});
|
|
if (!depthOfField) {
|
depthOfField = viewer.scene.postProcessStages.add(Cesium.PostProcessStageLibrary.createDepthOfFieldStage());
|
depthOfFieldModel.depthOfField = depthOfField;
|
}
|
if (depthOfFieldModel.show) {
|
$('#DepthOfField').attr('checked', 'checked');
|
form.render();
|
}
|
form.on('checkbox(DepthOfField)', function (data) {
|
depthOfFieldModel.show = this.checked;
|
updateDepthFieldProcess();
|
});
|
slider.render({
|
elem: '#slideTest11',
|
theme: '#1E9FFF', //主题色
|
min: 0.0,
|
max: 500.0,
|
value: depthOfFieldModel.focalDistance,
|
change: function (value) {
|
depthOfFieldModel.focalDistance = value;
|
updateDepthFieldProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest12',
|
theme: '#1E9FFF', //主题色
|
min: 10,
|
max: 200,
|
value: depthOfFieldModel.delta * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
depthOfFieldModel.delta = value;
|
updateDepthFieldProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest13',
|
theme: '#1E9FFF', //主题色
|
min: 50,
|
max: 500,
|
value: depthOfFieldModel.sigma * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
depthOfFieldModel.sigma = value;
|
updateDepthFieldProcess();
|
}
|
});
|
slider.render({
|
elem: '#slideTest14',
|
theme: '#1E9FFF', //主题色
|
min: 0,
|
max: 700,
|
value: depthOfFieldModel.stepSize * 100,
|
setTips: function (value) { //自定义提示文本
|
return value / 100;
|
},
|
change: function (value) {
|
depthOfFieldModel.stepSize = value;
|
updateDepthFieldProcess();
|
}
|
});
|
|
function updateAmbientOcclusionProcess() {
|
ambientOcclusion.enabled = Boolean(ambientOcclusionModel.show) || Boolean(ambientOcclusionModel.ambientOcclusionOnly);
|
ambientOcclusion.uniforms.ambientOcclusionOnly = Boolean(ambientOcclusionModel.ambientOcclusionOnly);
|
ambientOcclusion.uniforms.intensity = Number(ambientOcclusionModel.intensity);
|
ambientOcclusion.uniforms.bias = Number(ambientOcclusionModel.bias);
|
ambientOcclusion.uniforms.lengthCap = Number(ambientOcclusionModel.lengthCap);
|
ambientOcclusion.uniforms.stepSize = Number(ambientOcclusionModel.stepSize);
|
ambientOcclusion.uniforms.blurStepSize = Number(ambientOcclusionModel.blurStepSize);
|
}
|
|
function updateBloomProcess() {
|
bloom.enabled = Boolean(bloomModel.show);
|
bloom.uniforms.glowOnly = Boolean(bloomModel.glowOnly);
|
bloom.uniforms.contrast = Number(bloomModel.contrast);
|
bloom.uniforms.brightness = Number(bloomModel.brightness);
|
bloom.uniforms.delta = Number(bloomModel.delta);
|
bloom.uniforms.sigma = Number(bloomModel.sigma);
|
bloom.uniforms.stepSize = Number(bloomModel.stepSize);
|
}
|
|
function updateDepthFieldProcess() {
|
depthOfField.enabled = Boolean(depthOfFieldModel.show);
|
depthOfField.uniforms.focalDistance = Number(depthOfFieldModel.focalDistance);
|
depthOfField.uniforms.delta = Number(depthOfFieldModel.delta);
|
depthOfField.uniforms.sigma = Number(depthOfFieldModel.sigma);
|
depthOfField.uniforms.stepSize = Number(depthOfFieldModel.stepSize);
|
}
|
|
//环境光调节窗口点关闭事件
|
function onbeforeunload_handler() {
|
var $title = $(window.parent.document).find('.layui-layer-title');
|
if ($title.length > 0) {
|
$title.each(function (i, item) {
|
if (item.innerHTML === "环境光调节") {
|
var closeButton = $(item).parent().find('.layui-layer-close');
|
closeButton.click(function () {
|
var newSet = {
|
'ambientOcclusionModel': ambientOcclusionModel,
|
'bloomModel': bloomModel,
|
'depthOfFieldModel': depthOfFieldModel
|
};
|
parent.window.ambientSetting = newSet
|
});
|
}
|
})
|
}
|
}
|
|
updateAmbientOcclusionProcess();
|
updateBloomProcess();
|
updateDepthFieldProcess();
|
|
onbeforeunload_handler();
|
});
|