Advertisement
Cyxo

JS

Dec 29th, 2015
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //initial setup of scene qualities
  2. var scene = new THREE.Scene();
  3. var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);    
  4. var renderer = new THREE.WebGLRenderer({ alpha: true });
  5. renderer.setSize(window.innerWidth-4, window.innerHeight-4);
  6. document.getElementById("container").appendChild(renderer.domElement);
  7.  
  8. /*
  9. global THREE
  10. global AudioContext
  11. global requestAnimationFrame
  12. */
  13.  
  14. //audio
  15. var player = document.getElementById('player');
  16. window.AudioContext = window.AudioContext || window.webkitAudioContext;
  17. var context = new AudioContext();
  18. var source = context.createMediaElementSource(player);
  19. var analyser = context.createAnalyser();
  20. source.connect(analyser);
  21. analyser.connect(context.destination);
  22. // we could configure the analyser: e.g. analyser.fftSize (for further infos read the spec)
  23.  
  24. // frequencyBinCount tells you how many values you'll receive from the analyser
  25. var frequencyData = new Uint8Array(analyser.frequencyBinCount);
  26.  
  27. //for controls
  28. var yrot = 0;
  29. var it = 0;
  30.  
  31. //make cube
  32. var magicnumber = 48;
  33. var geometry = new THREE.PlaneGeometry(magicnumber,magicnumber,24,24);
  34. // var material = new THREE.ShaderMaterial( {
  35. //     vertexShader: document.getElementById( 'vertexShader' ).textContent,
  36. //     fragmentShader: document.getElementById( 'fragmentShader' ).textContent
  37. // } );
  38. //var material = new THREE.MeshNormalMaterial();
  39. var material = new THREE.MeshLambertMaterial( { color: 0x009522, shading: THREE.FlatShading, vertexColors: THREE.VertexColors } );
  40. var group = new THREE.Object3D();  
  41. var plane = new THREE.Mesh(geometry, material);
  42. group.add(plane);
  43. plane.position.x = 0;
  44. plane.position.y = 0;
  45. plane.position.z = 0;
  46. plane.rotation.x = -Math.PI/2;
  47. var verts = geometry.vertices;
  48. geometry.dynamic = true;
  49. scene.add(group);
  50.  
  51. //set camera position and direction
  52. camera.position.z = -30;
  53. camera.position.y = 15;
  54. var origin = new THREE.Vector3( 0, 0, 0 );
  55.  
  56. // create a sun
  57. var pointLight = new THREE.PointLight(0xFFFFFF,1,500,5);
  58. var sungeo = new THREE.SphereGeometry(1,10,10);
  59. var sunmat = new THREE.MeshBasicMaterial({color:0xffffff});
  60. var sun = new THREE.Mesh(sungeo, sunmat);
  61. var lightg = new THREE.Object3D();
  62. lightg.add(pointLight);
  63. lightg.add(sun);
  64. lightg.position.x = 0;
  65. lightg.position.y = 0;
  66. lightg.position.z = 0;
  67. scene.add(lightg);
  68.  
  69. // create a moon
  70. var moonLight = new THREE.PointLight(0x8888FF,0.85,150);
  71. var moongeo = new THREE.SphereGeometry(1,10,10);
  72. var moonmat = new THREE.MeshBasicMaterial({color:0xaaaaff});
  73. var moon = new THREE.Mesh(moongeo, moonmat);
  74. var moong = new THREE.Object3D();
  75. moong.add(moonLight);
  76. moong.add(moon);
  77. moong.position.x = 0;
  78. moong.position.y = 0;
  79. moong.position.z = 0;
  80. scene.add(moong);
  81.  
  82. var al = new THREE.AmbientLight(0x222223);
  83. scene.add(al);
  84.  
  85. ///////////////////////////////////////////functions
  86.  
  87. function wobble(){
  88.     analyser.getByteFrequencyData(frequencyData);
  89.     for(var i=0; i < verts.length; i++){
  90.         verts[i].z = frequencyData[i] / 25;
  91.     }
  92.     geometry.verticesNeedUpdate = true;
  93.     geometry.colorsNeedUpdate = true;
  94. }
  95.  
  96.  
  97.        
  98.  
  99.  
  100. //////////////////////////////////////////
  101.  
  102. function render() {
  103.     requestAnimationFrame(render);
  104.     renderer.render(scene, camera);
  105.    
  106.     yrot += 0.005;
  107.     camera.position.x = -30*Math.cos(yrot);
  108.     camera.position.z = -30*Math.sin(yrot);
  109.     camera.lookAt(origin);
  110.    
  111.     it = player.currentTime/9.5;
  112.     lightg.position.x = 30*Math.sin(it);
  113.     lightg.position.y = 20*Math.cos(it);
  114.     moong.position.x = -30*Math.sin(it);
  115.     moong.position.y = -20*Math.cos(it);
  116.    
  117.     wobble();
  118.    
  119.     $('#skyday').css({opacity: .5 + Math.sin(it + Math.PI/2)/2});
  120.     $('#skynight').css({opacity: .5-Math.sin(it + Math.PI/2)/2});
  121. }
  122.  
  123. render();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement