Three.js base

A base/starter fiddle for Three.js

by spacorum

HTML

<script src="https://rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/stats.js/r17/build/stats.min.js"></script>
<script src="https://threejs.org/examples/js/objects/Water.js"></script>
<script src="https://threejs.org/examples/js/objects/Sky.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

CSS

body {
    padding: 0;
    margin: 0;
}
canvas {
  display: block;
}

JavaScript

var camera, scene, renderer, mesh, material, stats, water;
init();
overrideFunctions();
animate();

function init() {
    // Renderer.
    renderer = new THREE.WebGLRenderer();
    renderer.setPixelRatio(window.devicePixelRatio);
    renderer.setSize(window.innerWidth, window.innerHeight);
    //renderer.autoClear = false;
    
    // Add renderer to page
    document.body.appendChild(renderer.domElement);

    // Create camera.

		camera = new THREE.PerspectiveCamera( 55, window.innerWidth / window.innerHeight, 1, 20000 );
		camera.position.set( 30, 30, 100 );

    // Create scene.
    scene = new THREE.Scene();

    // Create light and add to scene.
  	light = new THREE.DirectionalLight( 0xffffff, 0.8 );
  	scene.add( light );
    
    

    // Water

    var waterGeometry = new THREE.PlaneBufferGeometry( 10000, 10000 );

    water = new THREE.Water(
      waterGeometry,
      {
        textureWidth: 512,
        textureHeight: 512,
        waterNormals: new THREE.TextureLoader().load( 'https://threejs.org/examples/textures/waternormals.jpg', function ( texture ) {

          texture.wrapS = texture.wrapT = THREE.RepeatWrapping;

        } ),
        alpha: 1.0,
        sunDirection: light.position.clone().normalize(),
        sunColor: 0xffffff,
        waterColor: 0x001e0f,
        distortionScale: 3.7,
        fog: scene.fog !== undefined
      }
    );
    water.rotation.x = - Math.PI / 2;
    scene.add( water );
    
    

    // Skybox
    var sky = new THREE.Sky();
    sky.scale.setScalar( 10000 );
    scene.add( sky );

    var uniforms = sky.material.uniforms;

    uniforms[ "turbidity" ].value = 10;
    uniforms[ "rayleigh" ].value = 2;
    uniforms[ "luminance" ].value = 1;
    uniforms[ "mieCoefficient" ].value = 0.005;
    uniforms[ "mieDirectionalG" ].value = 0.8;

    var parameters = {
      distance: 400,
      inclination: 0.49,
      azimuth: 0.205
    };

    var cubeCamera = new THREE.CubeCamera( 1, 20000, 256 );
   ...