I just want one volume in “viewer.scene.primitives”, so when I update the volume, I need to remove the last volume, and then cesium crashed like:
codes are below:
function CesiumViewer({ volume }) {
const viewerRef = useRef(null);useEffect(() => { const viewer = viewerRef.current; if (!viewer || !volume) { return; } if(viewer.scene.primitives.get(0)){ viewer.scene.primitives.remove(viewer.scene.primitives.get(0)); } viewer.scene.primitives.add(volume); }, [volume]); useEffect(() => { const viewer = new Cesium.Viewer("cesiumContainer", { baseLayer: Cesium.ImageryLayer.fromProviderAsync( Cesium.TileMapServiceImageryProvider.fromUrl( Cesium.buildModuleUrl("Assets/Textures/NaturalEarthII") ) ), infoBox: false, geocoder: false, homeButton: false, sceneModePicker: false, baseLayerPicker: false, navigationHelpButton: false, animation: false, timeline: false, fullscreenButton: false, vrButton: false, selectionIndicator: true, shadows: true, shouldAnimate: true, scene3DOnly: true, contextOptions: { requestWebgl2: true, //using WEBGL2.0 webgl: { alpha: true } } }); viewer._cesiumWidget._creditContainer.style.display = "none"; viewer.scene.logarithmicDepthBuffer = true; //viewer.scene.debugShowFramesPerSecond = true; viewer.scene.fxaa = true; viewer.scene.postProcessStages.fxaa.enabled = true; viewer.scene.screenSpaceCameraController.tiltEventTypes = [ Cesium.CameraEventType.LEFT_DRAG, ]; viewer.scene.screenSpaceCameraController.zoomEventTypes = [ Cesium.CameraEventType.MIDDLE_DRAG, Cesium.CameraEventType.WHEEL, Cesium.CameraEventType.PINCH, ]; viewer.scene.screenSpaceCameraController.rotateEventTypes = [ Cesium.CameraEventType.RIGHT_DRAG, ]; viewerRef.current = viewer; }, []); return <div id="cesiumContainer" ></div>;
}