PROWAREtech
ThreeJS: Cover Background with Image without Stretching
How to set the background image to cover the scene without stretching it; how to make the background responsive for mobile apps using THREE.js.
This javascript function will properly crop the background image to make it cover the entire scene without distortion or stretching.
See related: Move camera to make objects fill screen.
function setBackground(scene, backgroundImageWidth, backgroundImageHeight) {
var windowSize = function(withScrollBar) {
var wid = 0;
var hei = 0;
if (typeof window.innerWidth != "undefined") {
wid = window.innerWidth;
hei = window.innerHeight;
}
else {
if (document.documentElement.clientWidth == 0) {
wid = document.body.clientWidth;
hei = document.body.clientHeight;
}
else {
wid = document.documentElement.clientWidth;
hei = document.documentElement.clientHeight;
}
}
return { width: wid - (withScrollBar ? (wid - document.body.offsetWidth + 1) : 0), height: hei };
};
if (scene.background) {
var size = windowSize(true);
var factor = (backgroundImageWidth / backgroundImageHeight) / (size.width / size.height);
scene.background.offset.x = factor > 1 ? (1 - 1 / factor) / 2 : 0;
scene.background.offset.y = factor > 1 ? 0 : (1 - factor) / 2;
scene.background.repeat.x = factor > 1 ? 1 / factor : 1;
scene.background.repeat.y = factor > 1 ? 1 : factor;
}
}
Example usage:
var img = new Image();
img.onload = function () {
scene.background = new THREE.TextureLoader().load(img.src);
setBackground(scene, img.width, img.height);
};
img.src = "background.jpg";
This code assumes that the canvas is the size of the window, so don't forget to call setBackground()
when the browser window is resized. This will also work for when users rotate their mobile device or smartphone.
Here is a full working example:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cover Background with Image</title>
<style>
body {
height: 100vh;
padding: 0;
margin: 0;
}
canvas {
position: fixed;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100vh;
}
</style>
</head>
<body>
<canvas></canvas>
<script src="/js/three.min.js"></script>
<script type="text/javascript">
(function () {
var canvas = document.getElementsByTagName("canvas")[0];
// NOTE: the width and height of the canvas
var size = {
getWidth: function(){return canvas.offsetWidth;},
getHeight: function(){return canvas.offsetHeight;}
};
var windowSize = function(withScrollBar) {
var wid = 0;
var hei = 0;
if (typeof window.innerWidth != "undefined") {
wid = window.innerWidth;
hei = window.innerHeight;
}
else {
if (document.documentElement.clientWidth == 0) {
wid = document.body.clientWidth;
hei = document.body.clientHeight;
}
else {
wid = document.documentElement.clientWidth;
hei = document.documentElement.clientHeight;
}
}
return { width: wid - (withScrollBar ? (wid - document.body.offsetWidth + 1) : 0), height: hei };
};
var setBackground = function (scene, backgroundImageWidth, backgroundImageHeight) {
if (scene.background) {
var factor = (backgroundImageWidth / backgroundImageHeight) / (size.getWidth() / size.getHeight());
scene.background.offset.x = factor > 1 ? (1 - 1 / factor) / 2 : 0;
scene.background.offset.y = factor > 1 ? 0 : (1 - factor) / 2;
scene.background.repeat.x = factor > 1 ? 1 / factor : 1;
scene.background.repeat.y = factor > 1 ? 1 : factor;
}
};
// NOTE: backimg can be a url to an image
var backimg = "data:image/jpeg;base64,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";
// NOTE: create the scene to place objects in
var scene = new THREE.Scene();
scene.matrixWorldAutoUpdate = true;
var img = new Image();
img.onload = function () {
scene.background = new THREE.TextureLoader().load(backimg);
setBackground(scene, img.width, img.height);
};
img.src = backimg;
var cameraNear = 1, cameraFar = 500;
var camera = new THREE.PerspectiveCamera(75, size.getWidth() / size.getHeight(), cameraNear, cameraFar);
var renderer = new THREE.WebGLRenderer({
canvas: canvas,
antialias: true,
});
var resize = function () {
canvas.style.width = windowSize(true).width + "px";
canvas.style.height = windowSize().height + "px";
if(scene.background) {
setBackground(scene, img.width, img.height);
}
camera.aspect = size.getWidth() / size.getHeight();
camera.updateProjectionMatrix();
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(size.getWidth(), size.getHeight());
};
resize();
window.addEventListener("resize", resize);
var animate = function () {
renderer.render(scene, camera);
requestAnimationFrame(animate);
};
animate();
})();
</script>
</body>
</html>
Comment