I have a three.js scene like the following:
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var geometry = new THREE.BoxGeometry(1,1,1);
var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;
var render = function () {
requestAnimationFrame(render);
cube.rotation.x += 0.1;
cube.rotation.y += 0.1;
renderer.render(scene, camera);
};
render();
Is it possible to make a 2D SnapShot or ScreenShot from a Scene and export it as a JPG Image?
There are a couple of things you will have to do save the frame as jpg image.
Firstly initialize the webgl context like this
preserveDrawingBuffer
flag will help you to get the base64 encoding of the current frame The code for that will be something like thisNow secondly you might want to save the file using a
.jpg
extension, but not all browsers allow you to specify the file name. The best solution I found was in this SO thread.So our script will check if the browser allows it will create a new
anchor
element and set itsdownload
and click it(which will save the file in specified filename) else it will just download the file but the user will have to rename it with a.jpg
extension to open it.Codepen Link