Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
768
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import './css/style.styl'
  2.  
  3. import './css/reset.styl'
  4. import OrbitControls from 'threejs-orbit-controls';
  5. import * as THREE from 'three'
  6. import { BloomEffect, EffectComposer, EffectPass, RenderPass } from "postprocessing";
  7.  
  8. import Px from './images/space/px.jpg'
  9. import Py from './images/space/py.jpg'
  10. import Pz from './images/space/pz.jpg'
  11. import Nx from './images/space/nx.jpg'
  12. import Ny from './images/space/ny.jpg'
  13. import Nz from './images/space/nz.jpg'
  14.  
  15. /**
  16.  * Textures
  17.  */
  18. const cubeTextureLoader = new THREE.CubeTextureLoader()
  19.  
  20. const textureCube = cubeTextureLoader.load( [
  21.     Px, Nx,
  22.     Py, Ny,
  23.     Pz, Nz
  24. ] );
  25.  
  26. /**
  27.  * Scene
  28.  */
  29. const scene = new THREE.Scene({background: textureCube})
  30.  
  31. var cubeShader = THREE.ShaderLib[ "cube" ];
  32.                 var cubeMaterial = new THREE.ShaderMaterial( {
  33.                     fragmentShader: cubeShader.fragmentShader,
  34.                     vertexShader: cubeShader.vertexShader,
  35.                     uniforms: cubeShader.uniforms,
  36.                     depthWrite: false,
  37.                     side: THREE.BackSide
  38.                 } );
  39.                 cubeMaterial.uniforms[ "tCube" ].value = textureCube;
  40.                 Object.defineProperty( cubeMaterial, 'map', {
  41.                     get: function () {
  42.                         return this.uniforms.tCube.value;
  43.                     }
  44.                 } );
  45.                 // Skybox
  46.                 const cubeMesh = new THREE.Mesh( new THREE.BoxBufferGeometry( 100, 100, 100 ), cubeMaterial );
  47.                 scene.add( cubeMesh );
  48. /**
  49.  * Sizes
  50.  */
  51. const sizes = {}
  52. sizes.width = window.innerWidth
  53. sizes.height = window.innerHeight
  54.  
  55. window.addEventListener('resize', () => {
  56.     // Update sizes
  57.     sizes.width = window.innerWidth
  58.     sizes.height = window.innerHeight
  59.  
  60.     // Update camera``
  61.     camera.aspect = sizes.width / sizes.height
  62.     camera.updateProjectionMatrix()
  63.  
  64.     // Update
  65.     renderer.setSize(sizes.width, sizes.height)
  66. })
  67.  
  68.  
  69. /**
  70.  * Cursor
  71.  */
  72. const cursor = new THREE.Vector2();
  73.  
  74. window.addEventListener('mousemove', (_event) => {
  75.     cursor.x = (event.clientX / window.innerWidth) * 2 - 1;
  76.     cursor.y = - (event.clientY / window.innerHeight) * 2 + 1;
  77. })
  78.  
  79. /* Lumière */
  80.  
  81. const ambientLight = new THREE.AmbientLight(0x8e44ad, 0.5)
  82. scene.add(ambientLight)
  83.  
  84. const sunLight = new THREE.DirectionalLight(0xffcccc, 1.2)
  85. sunLight.position.x = 1
  86. sunLight.position.y = 1
  87. sunLight.position.z = 10
  88. scene.add(sunLight)
  89.  
  90.  
  91. /**
  92.  * Camera
  93.  */
  94. const camera = new THREE.PerspectiveCamera(75, sizes.width / sizes.height)
  95.  
  96. camera.position.z = 5
  97. scene.add(camera)
  98.  
  99. let belt = {}
  100. belt.geometry = new THREE.Geometry()
  101. for (let i = 0; i < 5000; i++) {
  102.     const vertice = new THREE.Vector3()
  103.  
  104.     const angle = Math.random() * Math.PI * 2
  105.     const distance = 1.5 + Math.random() * 1.5
  106.  
  107.     vertice.x = Math.random() * 100 - 100 / 2
  108.     vertice.y = Math.random() * 100 - 100 / 2
  109.     vertice.z = Math.random() * 100 - 100 / 2
  110.  
  111.     belt.geometry.vertices.push(vertice)
  112. }
  113.  
  114. belt.material = new THREE.PointsMaterial({
  115.     size: 0.01,
  116.     //sizeAttenuation: false,
  117.     transparent: true
  118. })
  119. belt.points = new THREE.Points(belt.geometry, belt.material)
  120. scene.add(belt.points)
  121.  
  122.  
  123. let geometry = new THREE.SphereBufferGeometry(1, 4, 4);
  124. let material;
  125. let i, mesh;
  126.  
  127. for(i = 0; i < 100; ++i) {
  128.  
  129.     material = new THREE.MeshPhongMaterial({
  130.         color: 0xffffff * Math.random(),
  131.         flatShading: true
  132.     });
  133.  
  134.     mesh = new THREE.Mesh(geometry, material);
  135.     mesh.position.set(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5).normalize();
  136.     mesh.position.multiplyScalar(Math.random() * 4);
  137.     mesh.rotation.set(Math.random() * 2, Math.random() * 2, Math.random() * 2);
  138.     mesh.scale.multiplyScalar(Math.random() * 0.5);
  139.     scene.add(mesh);
  140.  
  141. }
  142.  
  143. const renderer = new THREE.WebGLRenderer()
  144. renderer.setSize(sizes.width, sizes.height)
  145. document.body.appendChild(renderer.domElement)
  146.  
  147. const composer = new EffectComposer(renderer)
  148. var bloomEffect = new BloomEffect();
  149. const effectPass = new EffectPass(camera, bloomEffect);
  150. effectPass.renderToScreen = true;
  151.  
  152. composer.addPass(effectPass);
  153. effectPass.renderToScreen = true
  154. /* Controls */
  155.  
  156. var controls = new OrbitControls( camera, renderer.domElemen );
  157. controls.maxDistance = 50;
  158. controls.minDistance = 0;
  159.  
  160. /**
  161.  * Loop
  162.  */
  163. const loop = () => {
  164.     window.requestAnimationFrame(loop)
  165.  
  166.     //camera.position.x = cursor.x * 3
  167.     //camera.position.y = - cursor.y * 3
  168.     camera.lookAt(new THREE.Vector3())
  169.     camera.updateMatrixWorld();
  170.  
  171.     controls.update();
  172.  
  173.     // Renderer
  174.     //renderer.render(scene, camera)
  175.     composer.render();
  176. }
  177. loop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement