Solar System

Three.js + Orbit + Shadows

by steveow

HTML

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

<div id="container"><br /><br /><br /><br /><br />Generating world...</div>

CSS

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

JavaScript

var container;//, stats;
			var camera, controls, scene, renderer;
			var texture;
			var clock = new THREE.Clock();
			var helper;
			var raycaster = new THREE.Raycaster();
			var mouse = new THREE.Vector2();
						
			F_init();
			F_animate();
			
			function F_init() 
			{
				container = document.getElementById( 'container' );
				camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 20000 );
				scene = new THREE.Scene();
				
				controls = new THREE.OrbitControls(camera);
				controls.center.set( 0.0, 100.0, 0.0 );
				controls.userPanSpeed = 100;
				//controls.center.y = 0;
				camera.position.y =  controls.center.y + 2000;
				camera.position.set(-2000,0,0);
			
				xxx = F_Make_Moons();
			
			function F_Make_Moons()
			{
				//... technical ref for shadows...
				//... https://msdn.microsoft.com/en-us/library/windows/desktop/ee416324%28v=vs.85%29.aspx
				
				
				//... LIGHTS
				
				var light2 = new THREE.AmbientLight(0x444444);//... for lighting the Sun and other MeshBasicMaterial meshes.
				scene.add(light2);
				
				//... PointLight
				//  http://threejs.org/docs/#Reference/Lights/PointLight
				var light3 = new THREE.PointLight( 0xffffff, 10, 150000,1);// 5000, 1 );
				
				light3.castShadow = true;
				light3.shadow.camera.near = 1;
				light3.shadow.camera.far = 5000;
				light3.shadow.camera.fov = 90;
				// light3.shadowCameraVisible = true;
				light3.shadow.bias = 0.001;
				

				scene.add( light3 );			
			
				// SPHERES

				
				var sphereGeom = new THREE.SphereGeometry( 40, 32, 16 );

        var SunMaterial = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
				this.Sun01 = new THREE.Mesh( sphereGeom.clone(), SunMaterial );
				Sun01.position.set(-500, 0, 220);
				
				scene.add( Sun01 );
				//Sun01.castShadow = false;
				//Sun01.receiveShadow = false;
				
				light3.position.set( Sun01.position.x, Sun01.position.y , Sun01.position.z);
				
        var moonMaterial = new...