02-statistics.html


<!DOCTYPE html>
<html>
<head>
    <title>three.js webgl - statistics</title>
    <meta charset="utf-8">
    <script src="../frameworks/three.js"></script>
    <script src="../frameworks/stats.min.js"></script>
    <style>
        body {
            margin: 0;
            overflow: hidden;
        }
    </style>
    <script>

    var renderer;
    var scene;
    var camera;
    var clock;
    var stats;

    var objects = [];
    var rotationSpeed = 0.005;
    var numberToAdd = 2000;

    function init() {

        scene = new THREE.Scene();

        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);

        renderer = new THREE.WebGLRenderer();
        renderer.setClearColor(0x000000, 1.0);
        renderer.setSize(window.innerWidth, window.innerHeight);

        camera.position.x = 50;
        camera.position.y = 50;
        camera.position.z = 50;
        camera.lookAt(scene.position);

        document.body.appendChild(renderer.domElement);

        for (var i = 0; i < numberToAdd; i++) {
                        addCube();
        }

        stats = createStats();
        document.body.appendChild(stats.domElement);
            clock = new THREE.Clock();
            window.addEventListener( 'resize', onWindowResize, false );
        render();
    }


    function addCube() {
        var cubeGeometry = new THREE.BoxGeometry(4 * Math.random(), 4 * Math.random(), 4 * Math.random());
        var cubeMaterial = new THREE.MeshNormalMaterial({opacity: 0.5, transparent: true});
        cubeMaterial.transparent = true;

        var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
        cube.position.set(100 * Math.random() - 50, 0, 100 * Math.random() - 50);
        scene.add(cube);

        objects.push(cube);
    }

    function render() {
        renderer.render(scene, camera);

        var x = camera.position.x;
        var z = camera.position.z;

        camera.position.x = x * Math.cos(rotationSpeed) + z * Math.sin(rotationSpeed);
        camera.position.z = z * Math.cos(rotationSpeed) - x * Math.sin(rotationSpeed);

        camera.lookAt(scene.position);

        requestAnimationFrame(render);

        stats.update();
    }

    function createStats() {
        var stats = new Stats();
        stats.setMode(0); // 0: fps, 1: ms, 2: mb, 3+: custom

        return stats;
    }
    
    function onWindowResize() {

        windowHalfX = window.innerWidth / 2;
        windowHalfY = window.innerHeight / 2;

        camera.aspect = window.innerWidth / window.innerHeight;
        camera.updateProjectionMatrix();

        renderer.setSize( window.innerWidth, window.innerHeight );

    }

    window.addEventListener("DOMContentLoaded", function(event) {
            init();
    });

    </script>
</head>
<body>

</body>
</html>