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(); });