| 87 | var PI_HALF = Math.PI / 2; |
| 88 | |
| 89 | function init() { |
| 90 | |
| 91 | container.style.color = '#fff'; |
| 92 | container.style.font = '13px/20px Arial, sans-serif'; |
| 93 | |
| 94 | var shader, uniforms, material; |
| 95 | w = container.offsetWidth || window.innerWidth; |
| 96 | h = container.offsetHeight || window.innerHeight; |
| 97 | |
| 98 | camera = new THREE.PerspectiveCamera(30, w / h, 1, 10000); |
| 99 | camera.position.z = distance; |
| 100 | |
| 101 | scene = new THREE.Scene(); |
| 102 | |
| 103 | var geometry = new THREE.SphereGeometry(200, 40, 30); |
| 104 | |
| 105 | shader = Shaders['earth']; |
| 106 | uniforms = THREE.UniformsUtils.clone(shader.uniforms); |
| 107 | |
| 108 | uniforms['texture'].value = THREE.ImageUtils.loadTexture(imgDir+'world.jpg'); |
| 109 | |
| 110 | material = new THREE.ShaderMaterial({ |
| 111 | |
| 112 | uniforms: uniforms, |
| 113 | vertexShader: shader.vertexShader, |
| 114 | fragmentShader: shader.fragmentShader |
| 115 | |
| 116 | }); |
| 117 | |
| 118 | mesh = new THREE.Mesh(geometry, material); |
| 119 | mesh.rotation.y = Math.PI; |
| 120 | scene.add(mesh); |
| 121 | |
| 122 | shader = Shaders['atmosphere']; |
| 123 | uniforms = THREE.UniformsUtils.clone(shader.uniforms); |
| 124 | |
| 125 | material = new THREE.ShaderMaterial({ |
| 126 | |
| 127 | uniforms: uniforms, |
| 128 | vertexShader: shader.vertexShader, |
| 129 | fragmentShader: shader.fragmentShader, |
| 130 | side: THREE.BackSide, |
| 131 | blending: THREE.AdditiveBlending, |
| 132 | transparent: true |
| 133 | |
| 134 | }); |
| 135 | |
| 136 | mesh = new THREE.Mesh(geometry, material); |
| 137 | mesh.scale.set( 1.1, 1.1, 1.1 ); |
| 138 | scene.add(mesh); |
| 139 | |
| 140 | geometry = new THREE.BoxGeometry(2.75, 2.75, 1); |
| 141 | geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0,0,-0.5)); |
| 142 | |
| 143 | point = new THREE.Mesh(geometry); |
| 144 | |
| 145 | renderer = new THREE.WebGLRenderer({antialias: true}); |
| 146 | renderer.setSize(w, h); |