| 176 | var PI_HALF = Math.PI / 2; |
| 177 | |
| 178 | function init() { |
| 179 | |
| 180 | container.style.color = '#fff'; |
| 181 | container.style.font = '13px/20px Arial, sans-serif'; |
| 182 | |
| 183 | var shader, uniforms, material; |
| 184 | w = container.offsetWidth || window.innerWidth; |
| 185 | h = container.offsetHeight || window.innerHeight; |
| 186 | |
| 187 | camera = new THREE.PerspectiveCamera(30, w / h, 1, 10000); |
| 188 | camera.position.z = distance; |
| 189 | |
| 190 | scene = new THREE.Scene(); |
| 191 | |
| 192 | var geometry = new THREE.SphereGeometry(200, 40, 30); |
| 193 | |
| 194 | shader = Shaders['earth']; |
| 195 | uniforms = THREE.UniformsUtils.clone(shader.uniforms); |
| 196 | |
| 197 | uniforms['texture'].value = THREE.ImageUtils.loadTexture(imgDir+'world.jpg'); |
| 198 | |
| 199 | material = new THREE.ShaderMaterial({ |
| 200 | |
| 201 | uniforms: uniforms, |
| 202 | vertexShader: shader.vertexShader, |
| 203 | fragmentShader: shader.fragmentShader |
| 204 | |
| 205 | }); |
| 206 | |
| 207 | mesh = new THREE.Mesh(geometry, material); |
| 208 | mesh.rotation.y = Math.PI; |
| 209 | scene.add(mesh); |
| 210 | |
| 211 | shader = Shaders['atmosphere']; |
| 212 | uniforms = THREE.UniformsUtils.clone(shader.uniforms); |
| 213 | |
| 214 | material = new THREE.ShaderMaterial({ |
| 215 | |
| 216 | uniforms: uniforms, |
| 217 | vertexShader: shader.vertexShader, |
| 218 | fragmentShader: shader.fragmentShader, |
| 219 | side: THREE.BackSide, |
| 220 | blending: THREE.AdditiveBlending, |
| 221 | transparent: true |
| 222 | |
| 223 | }); |
| 224 | |
| 225 | mesh = new THREE.Mesh(geometry, material); |
| 226 | mesh.scale.set( 1.1, 1.1, 1.1 ); |
| 227 | scene.add(mesh); |
| 228 | |
| 229 | geometry = new THREE.BoxGeometry(2.75, 2.75, 1); |
| 230 | geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0,0,-0.5)); |
| 231 | |
| 232 | point = new THREE.Mesh(geometry); |
| 233 | |
| 234 | renderer = new THREE.WebGLRenderer({antialias: true}); |
| 235 | renderer.setSize(w, h); |