Shadow Lights

three.js orbitControls

by steveow

HTML

<script src="http://threejs.org/build/three.min.js"></script>
<script src="http://threejs.org/examples/js/controls/OrbitControls.js"></script>

CSS

body {
    background-color: #000;
    margin: 0px;
    overflow: hidden;
}

JavaScript

//... based on a JS Fiddle by WestLangley (no good in Win7 Firefox)
var camera, scene, renderer;
var cubes = [];
var light, colorVal = '000000' //...drop the '0x' '0x000000'; //SW... to make them global
var jj = 0x000001;
var stepCount;
var rrr=0,ggg=0,bbb=0;
var lpos_x=-60,lpos_y=20, lpos_z=100;

init();
animate();

function init() {

    scene = new THREE.Scene();
    scene.add(new THREE.AmbientLight(0x212223));

    for (var i = 0; i < 10; i++) {
        var cubeGeometry = new THREE.CubeGeometry(1, 1.5, 1);
        var cubeMaterial = new THREE.MeshLambertMaterial({
            color: 0x1ec876
        });
        var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
        cube.position.set(i * 1.2, 0, 0.5);
        cube.castShadow = true;
        scene.add(cube);

        cubes.push(cube);
    }

    camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000); // CHANGED
    camera.position.x = 0; // CHANGED
    camera.position.y = 0; // CHANGED
    camera.position.z = 100; // CHANGED
    //    camera.lookAt(cubes[5].position);
    //    scene.add(camera); // not required

    var terrainGeo = new THREE.PlaneGeometry(150, 150);
    var terrainMaterial = new THREE.MeshLambertMaterial({
        color:  0x1ec876
    });
    var terrain = new THREE.Mesh(terrainGeo, terrainMaterial);
    terrain.position.set (0,0,-10); // CHANGED
    terrain.receiveShadow = true;
    scene.add(terrain);

    light = new THREE.DirectionalLight(0xffffff, 1);
    light.castShadow = true;
    light.shadowCameraVisible = true;
    light.shadowCameraNear = 20;//sw 100;
    light.shadowCameraFar = 200;
    light.shadowCameraLeft = -20; // CHANGED
    light.shadowCameraRight = 20; // CHANGED
    light.shadowCameraTop = 20; // CHANGED
    light.shadowCameraBottom = -20; // CHANGED
        
    //light.position.set(-60, 20, 100); // CHANGED
    light.position.set(lpos_x, lpos_y, lpos_z); 
    
    scene.add(light);
    scene.add(new...