Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as THREE from "/node_modules/three/build/three.module.js";
  2. import { OrbitControls } from '/node_modules/three/examples/jsm/controls/OrbitControls.js';
  3. import { RGBELoader } from '/node_modules/three/examples/jsm/loaders/RGBELoader.js';
  4. import * as dat from './dat.gui.module.js';
  5.  
  6. window.addEventListener("load", init);
  7.  
  8. let scene;
  9. let camera;
  10. let controls;
  11. let renderer;
  12. let pmremGenerator;
  13. let hdrCubeRenderTarget;
  14.  
  15. let mesh;
  16.  
  17. function init() {
  18.     renderer = new THREE.WebGLRenderer({ antialias: true });
  19.     renderer.setSize( window.innerWidth, window.innerHeight );
  20.     renderer.toneMapping = THREE.ACESFilmicToneMapping;
  21.     renderer.toneMappingExposure = 0.8;
  22.     renderer.outputEncoding = THREE.sRGBEncoding;
  23.  
  24.     document.body.appendChild( renderer.domElement );
  25.  
  26.     scene = new THREE.Scene();
  27.     camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
  28.  
  29.     controls = new OrbitControls( camera, renderer.domElement );
  30.     controls.enableDamping = true;
  31.     controls.dampingFactor = 0.0875;
  32.    
  33.     camera.position.set( 0, 0, 60 );
  34.     controls.target.set( 0, 0, 0 );
  35.     controls.update();
  36.  
  37.     pmremGenerator = new THREE.PMREMGenerator( renderer );
  38.     pmremGenerator.compileEquirectangularShader();
  39.  
  40.     new RGBELoader()
  41.     .setDataType( THREE.UnsignedByteType ) // alt: FloatType, HalfFloatType
  42.     .load( "envmaps/env.hdr", function ( texture, textureData ) {
  43.  
  44.         hdrCubeRenderTarget = pmremGenerator.fromEquirectangular( texture );
  45.  
  46.         onDownload();
  47.     });
  48.  
  49.  
  50.     function onDownload() {
  51.  
  52.         mesh = new THREE.Mesh(
  53.             new THREE.SphereBufferGeometry(10, 100, 100),
  54.  
  55.             new THREE.MeshPhysicalMaterial({
  56.                 color: 0xffffff,
  57.                 reflectivity: 0.5,
  58.                 clearcoat: 0,
  59.                 clearcoatRoughness: 0,
  60.                 envMap: hdrCubeRenderTarget.texture,
  61.                 envMapIntensity: 0.625,
  62.                 metalness: 0,
  63.                 roughness: 0,
  64.                 opacity: 1,
  65.                 side: THREE.DoubleSide,
  66.             })
  67.         );
  68.  
  69.         scene.background = new THREE.Color(0xffffff); //hdrCubeRenderTarget.texture; //new THREE.Color(0xffffff);
  70.         scene.add(mesh);
  71.     }
  72.  
  73.  
  74.     initGUI();
  75.     animate();
  76. }
  77.  
  78. function animate(now) {
  79.     requestAnimationFrame( animate );
  80.  
  81.     controls.update();  
  82.  
  83.     renderer.render( scene, camera );
  84. }
  85.  
  86.  
  87. function initGUI() {
  88.     var FizzyText = function() {
  89.         this.reflectivity = 0.5;
  90.         this.roughness = 0;
  91.         this.metalness = 0;
  92.         this.clearcoat = 0;
  93.         this.clearcoatRoughness = 0;
  94.         this.envMapIntensity = 0.625;
  95.     };    
  96.  
  97.  
  98.     var text = new FizzyText();
  99.     var gui = new dat.GUI();
  100.     gui.add(text, 'roughness', 0, 1).onChange(function(value) {
  101.         mesh.material.roughness = value;
  102.     });
  103.     gui.add(text, 'metalness', 0, 1).onChange(function(value) {
  104.         mesh.material.metalness = value;
  105.     });  
  106.     gui.add(text, 'reflectivity', 0, 1).onChange(function(value) {
  107.         mesh.material.reflectivity = value;
  108.     });
  109.     gui.add(text, 'clearcoat', 0, 1).onChange(function(value) {
  110.         mesh.material.clearcoat = value;
  111.     });
  112.     gui.add(text, 'clearcoatRoughness', 0, 1).onChange(function(value) {
  113.         mesh.material.clearcoatRoughness = value;
  114.     });
  115.     gui.add(text, 'envMapIntensity', 0, 5).onChange(function(value) {
  116.         mesh.material.envMapIntensity = value;
  117.     });
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement