Search code examples
javascriptimagethree.jsbackgroundset

three.js set background image


How to create a static background image?

For default background:

scene = new THREE.Scene();

// ...

renderer = new THREE.WebGLRenderer( { antialias: false } );
renderer.setClearColor( scene.fog.color, 1 );

How to set a image for scene.fog, or set opacity for clearcolor?


Solution

  • thank you ))

    I found yet another solution:

    <!DOCTYPE html>
    <head>
        <title>three.js webgl - orbit controls</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
        <style>
            body {
                color: #000;
                font-family:Monospace;
                font-size:13px;
                text-align:center;
                font-weight: bold;
                background-image:url(./foto.jpg);
    
                margin: 0px;
                overflow: hidden;
            }
    
            #info {
                color:#000;
                position: absolute;
                top: 0px; width: 100%;
                padding: 5px;
    
            }
    
            a {
                color: red;
            }
        </style>
    </head>
    
    <body>
        <div id="container"></div>
        <div id="info">
    
            <a href="http://threejs.org" target="_blank">three.js</a> 
        </div>
    
        <script src="./three.min.js"></script>
        <script src="js/loaders/OBJLoader.js"></script>
        <script src="js/controls/OrbitControls.js"></script>
    
        <script src="js/Detector.js"></script>
        <script src="js/libs/stats.min.js"></script>
        <!--используем для вывода информации fps-->
    
        <script>
            if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
            var container, stats;
            var camera, controls, scene, renderer;
            var cross;
    
            init();
            animate();
    
            function init() {       
    
                camera = new THREE.PerspectiveCamera( 90, window.innerWidth / window.innerHeight, 0.1, 2000 );
                camera.position.z = 100;
                controls = new THREE.OrbitControls( camera );
                controls.addEventListener( 'change', render );
                scene = new THREE.Scene();
    
                var manager = new THREE.LoadingManager();
                manager.onProgress = function ( item, loaded, total ) {
    
                    console.log( item, loaded, total );
    
                };
    
                var texture = new THREE.Texture();
                var loader = new THREE.ImageLoader( manager );
                loader.load( './kos.jpg', function ( image ) {
    
                    texture.image = image;
                    texture.needsUpdate = true;
    
                } );
    
                // model
    
                var loader = new THREE.OBJLoader( manager );
                loader.load( './skull.obj', function ( object ) {
                    object.traverse( function ( child ) {
                        if ( child instanceof THREE.Mesh ) {
                            child.material.map = texture;
                        }
                    } );
                    object.position.y = 10;
                    scene.add( object );
                } );
    
    
                // lights
    
                light = new THREE.DirectionalLight( 0xffffff );
                light.position.set( 1, 1, 1 );
                scene.add( light );
    
                light = new THREE.DirectionalLight( 0xffffff  );
                light.position.set( -1, -1, -1 );
                scene.add( light );
    
                light = new THREE.AmbientLight( 0xffffff );
                scene.add( light );
    
    
                renderer = new THREE.WebGLRenderer( { antialias: false } );
                 renderer.setSize(window.innerWidth, window.innerHeight);
                document.body.appendChild(renderer.domElement);
    
                container = document.getElementById( 'container' );
                container.appendChild( renderer.domElement );
                stats = new Stats();
                stats.domElement.style.position = 'absolute';
                stats.domElement.style.top = '0px';
                stats.domElement.style.zIndex = 100;
                container.appendChild( stats.domElement );
                window.addEventListener( 'resize', onWindowResize, false );
            }
    
    
            function onWindowResize() {
                camera.aspect = window.innerWidth / window.innerHeight;
                camera.updateProjectionMatrix();
                renderer.setSize( window.innerWidth, window.innerHeight );
                render();
    
            }
    
            function animate() {
                requestAnimationFrame( animate );
                controls.update();
    
            }
    
            function render() {
    
                renderer.render( scene, camera );
                stats.update();
            }
    
    
        </script>
    
    </body>