1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| const viewer = new Cesium.Viewer("cesiumContainer", { sceneModePicker: false, homeButton: false, navigationHelpButton: false, baseLayerPicker: false, navigationInstructionsInitiallyVisible: false, animation: false, timeline: false, fullscreenButton: false, selectionIndicator: false, skyBox: false, shouldAnimate: true, geocoder: false, });
viewer.cesiumWidget.creditContainer.style.display = "none"; viewer.scene.debugShowFramesPerSecond = true;
const { canvas, camera, clock, scene } = viewer;
camera.frustum.near = 1.0; scene.debugShowFramesPerSecond = true;
clock.currentTime = Cesium.JulianDate.fromIso8601("2022-08-01T00:00:00Z");
if (!Cesium.PostProcessStageLibrary.isAmbientOcclusionSupported(viewer.scene)) { window.alert( "这个浏览器不支持环境光遮蔽后期处理(post process)。", ); }
const viewModel = { show: true, ambientOcclusionOnly: false, intensity: 3.0, bias: 0.1, lengthCap: 0.26, directionCount: 8, stepCount: 32, };
Cesium.knockout.track(viewModel); const toolbar = document.getElementById("toolbar"); Cesium.knockout.applyBindings(viewModel, toolbar); for (const name in viewModel) { if (viewModel.hasOwnProperty(name)) { Cesium.knockout.getObservable(viewModel, name).subscribe(updatePostProcess); } }
function updatePostProcess() {
const ambientOcclusion = scene.postProcessStages.ambientOcclusion; ambientOcclusion.enabled = Boolean(viewModel.show) || Boolean(viewModel.ambientOcclusionOnly); ambientOcclusion.uniforms.ambientOcclusionOnly = Boolean( viewModel.ambientOcclusionOnly, ); ambientOcclusion.uniforms.intensity = Number(viewModel.intensity); ambientOcclusion.uniforms.bias = Number(viewModel.bias); ambientOcclusion.uniforms.lengthCap = Number(viewModel.lengthCap); ambientOcclusion.uniforms.directionCount = Number(viewModel.directionCount); ambientOcclusion.uniforms.stepCount = Number(viewModel.stepCount); }
updatePostProcess();
camera.position = new Cesium.Cartesian3( 1234127.2294710164, -5086011.666443127, 3633337.0413351045, ); camera.direction = new Cesium.Cartesian3( -0.5310064396211631, -0.30299013818088416, -0.7913464078682514, ); camera.right = new Cesium.Cartesian3( -0.8468592075426076, 0.1574051185945647, 0.507989282604011, );
camera.up = Cesium.Cartesian3.cross( camera.right, camera.direction, new Cesium.Cartesian3(), );
try { const tileset = await Cesium.Cesium3DTileset.fromIonAssetId(2464651); scene.primitives.add(tileset); } catch (error) { console.log(`Error loading tileset: ${error}`); }
|