Lightとは  †
- 光源
- DirectionalLight? 無限遠方からの平行光線
- AmbientLight? 環境光
- HemisphereLightLight? Scene を囲う半球 (空) からの光
var light = HemisphereLight(skyColorHex, groundColorHex, intensity);
scene.add(light); 
- PointLight? 点光源
var light = THREE.PointLight ( hex, intensity, distance );
light.position.set(x,y,z);
scene.add(light); - hex : 色 (0xffffff)
- intensity : 強さ
- distance : 光の届く距離
 
- SpotLight? スポットライト
var light = THREE.SpotLight ( hex, intensity, distance, angle, exponent );
light.position.set(x,y,z); // 光源
light.target.position.set(x,y,z); // 照らす位置
scene.add(light); - hex : 色 (0xffffff)
- intensity : 強さ
- distance : 光の届く距離
- angle : 光の広がり (max Math.PI/2)
- exponent : 減衰率
 
サンプル (オレンジの点光源と、白のスポットライト)  †
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>Hilbert 3D Cube</title>
    <style>
        div {
            border : 1px solid;
        }
    </style>
</head>
<body>
    <div id="webgl_view"></div>
    
    <script type="text/javascript" src="three.js" charset="utf-8"></script>
    <script type="text/javascript" src="Hilbert.js" charset="utf-8"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    <script>
 
var height = 400;
var width  = 600;
 
var container = $('#webgl_view');
container.css({
    height :  height + "px",
    width  : width + "px"});
function cource(t) {
    return {
        x : 10.0 * Math.cos(t),
        y : 2.0 * Math.sin(t),
        z : 10.0 * Math.sin(t * 2),
        dx : -10.0 * Math.sin(t),
        dy : 2.0 * Math.cos(t),
        dz : 10.0 * Math.cos(t * 2),
    };
}
// (1) 立方体
 
// 形状
var cubeGeometry = new THREE.CubeGeometry(1,1,1);
// テクスチャを作成
var texture = new THREE.Texture(hilbert(100, 100, 3, 'black', 'white'));
texture.needsUpdate = true;
// 色
var cubeMaterial = new THREE.MeshPhongMaterial({
    map : texture,
    fog: true
});
var cubeArray = new Array();
var lightArray = new Array();
var cnt = 0;
for (var t = 0; t < 2 * Math.PI; t += 0.1) {
    cnt += 1;
    
    var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
    
    var position = cource(t);
    
    cube.position.x = position.x;
    cube.position.y = position.y;
    cube.position.z = position.z;
    
    cube.rotation.y = Math.atan(position.x/position.z);
    
    cubeArray.push(cube);
    
    if (0 == cnt % 7) {
        var light = new THREE.PointLight( 0xff9933, 2, 5);  
        light.position.set(position.x * 1.1, position.y + 2.0, position.z * 1.1);
        lightArray.push(light);
    }    
}
var spotLight = new THREE.SpotLight( 0xffffff, 3, 10, Math.PI / 8 );
// (4) Scene
var scene = new THREE.Scene();
for (var cnt = 0 ; cnt < cubeArray.length; cnt++ ) {
    scene.add(cubeArray[cnt]);
}
for (var cnt = 0 ; cnt < lightArray.length; cnt++ ) {
    scene.add(lightArray[cnt]);
}
scene.add(spotLight);
scene.fog = new THREE.FogExp2(0x000020, 0.1);
// (5) Camera (視野角, アスペクト比(縦横比), 描画対象(最小距離), 描画対象(最大距離)
var camera = new THREE.PerspectiveCamera(90, width/height, 0.1, 100);
 
// (6) WebGL Renderer
var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
renderer.setClearColor(0x000000);
renderer.clear(true);
 
container.append(renderer.domElement);
 
// (7) Animation (Rotate)
function animation() {
    var time = (new Date()).getTime();
    
    var position = cource(time / 5000);
    camera.position.x = position.x;
    camera.position.y = position.y + 1.0;
    camera.position.z = position.z;
    camera.lookAt(new THREE.Vector3(position.dx, position.dy, position.dz));
    
    spotLight.position.set(position.x, position.y + 1.0, position.z);
    spotLight.target.position.set(position.x + position.dx, position.y + position.dy + 1.5, position.z + position.dz);
    
    renderer.render(scene, camera);
     
    requestAnimationFrame(animation);
}
 
animation();
    </script>
</body>
</html>
HTML