diff --git a/public/css/styles.css b/public/css/styles.css index dc9876b..ec63da5 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -83,6 +83,7 @@ hr { bottom: 20px; overflow: hidden; right: 20px; + display: none; } #access-tab img { diff --git a/public/js/capture.js b/public/js/capture.js new file mode 100644 index 0000000..e69de29 diff --git a/public/js/main.js b/public/js/main.js index 42e5fab..31bb4b1 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -13,6 +13,12 @@ let composer let pixelSize = 8 let container_element = document.getElementById('container-index') + + let cFrames = 0; + let isCapturing = false; + const totalCFrames = 600; // Number of frames to capture + const zip = new JSZip(); // Create a new JSZip instance + let captureFrames = false; let containerW = container_element.offsetWidth let containerH = container_element.offsetHeight @@ -28,7 +34,7 @@ SetupRenderer() scene = new THREE.Scene() SetupCamera() - //SetupControls() + SetupControls() composer = new EffectComposer( renderer ); if (window.innerWidth <= 1024) @@ -116,6 +122,9 @@ //texture.offset.x += 0.001; composer.render() //renderer.render(scene, camera) + if (captureFrames && cFrames < totalCFrames) { + captureFrame(); + } } function getContainerDimensions(){ @@ -135,6 +144,48 @@ renderer.setSize(containerW, containerH) }) +// Function to capture the canvas and save it as PNG data in the zip +function captureFrame() { +const canvas = renderer.domElement; +canvas.toBlob((blob) => { + // Add the blob to the ZIP archive + zip.file(`frame-${cFrames}.png`, blob); + cFrames++; + + // If all frames are captured, zip and download + if (cFrames >= totalCFrames) { + zipAndDownload(); + } + }, 'image/png'); +} + +// Function to zip and download the frames +function zipAndDownload() { + zip.generateAsync({ type: 'blob' }).then(function (content) { + // Create a download link for the zip file + const link = document.createElement('a'); + link.href = URL.createObjectURL(content); + link.download = 'frames.zip'; + link.click(); + }); +} + +// Event listener for the spacebar key press +document.addEventListener('keydown', (event) => { + if (event.code === 'Space') { // Check if spacebar is pressed + isCapturing = !isCapturing; // Toggle capturing + + if (isCapturing) { + captureFrames = true + console.log('Capture started...'); + } else { + captureFrames = false + cFrames = 0; // Reset frame counter + console.log('Capture paused...'); + } + } + }); + init() diff --git a/templates/grph.html b/templates/grph.html index 415fe4f..ee2fc14 100644 --- a/templates/grph.html +++ b/templates/grph.html @@ -7,5 +7,8 @@
+ + + {% endblock content %} \ No newline at end of file