Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as THREE from "./three.module.js";
  2. import { OrbitControls } from "./orbitControls.js";
  3. import { GLTFLoader } from "./GLTFLoader.js";
  4. import { RGBELoader } from "./RGBELoader.js";
  5. import { HDRCubeTextureLoader } from "./HDRCubeTextureLoader.js";
  6. import Utils from "./utils.js";
  7.  
  8. window.addEventListener("load", init);
  9.  
  10. let scene;
  11. let camera;
  12. let controls;
  13. let renderer;
  14. let pmremGenerator;
  15. let hdrCubeRenderTarget;
  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.     document.body.appendChild( renderer.domElement );
  24.  
  25.     scene = new THREE.Scene();
  26.     camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
  27.  
  28.     controls = new OrbitControls( camera, renderer.domElement );
  29.     controls.enableDamping = true;
  30.     controls.dampingFactor = 0.0875;
  31.     controls.enablePan = true;
  32.     controls.panSpeed = 1.0;
  33.     controls.screenSpacePanning = true;
  34.    
  35.     camera.position.set( 0, 60, 60 );
  36.     controls.target.set( 0, 40, 0 );
  37.     controls.update();
  38.  
  39.  
  40.     pmremGenerator = new THREE.PMREMGenerator( renderer );
  41.  
  42.  
  43.     let mesh;
  44.     var loader = new GLTFLoader();
  45.     loader.load("garment.glb",
  46.         function ( gltf ) {
  47.             mesh = gltf.scene.children[0];
  48.             onDownload();
  49.         }
  50.     );
  51.  
  52.     let diffuse;
  53.     new THREE.TextureLoader().load("diffuse.jpg", function(texture) {
  54.         diffuse = texture;
  55.         diffuse.flipY = false;
  56.         diffuse.encoding = THREE.sRGBEncoding;
  57.         onDownload();
  58.     });
  59.  
  60.  
  61.  
  62.  
  63.     new RGBELoader()
  64.     .setDataType( THREE.UnsignedByteType ) // alt: FloatType, HalfFloatType
  65.     .load( "env.hdr", function ( texture, textureData ) {
  66.  
  67.         hdrCubeRenderTarget = pmremGenerator.fromEquirectangular( texture );
  68.  
  69.         onDownload();
  70.     });
  71.  
  72.  
  73.     let cdl = 0;
  74.     function onDownload() {
  75.         cdl++;
  76.         if(cdl === 3) {
  77.  
  78.  
  79.             mesh.material = new THREE.MeshPhysicalMaterial({
  80.                 color: 0xffffff,
  81.                 map: diffuse,
  82.                 transparent: true,
  83.                 envMap: hdrCubeRenderTarget.texture,
  84.                 envMapIntensity: 0.55,
  85.                 metalness: 0,
  86.                 roughness: 1,
  87.                 opacity: 1,
  88.                 side: THREE.DoubleSide,
  89.             });
  90.  
  91.  
  92.  
  93.             let planeMesh = new THREE.Mesh(
  94.                 new THREE.PlaneBufferGeometry(30, 30),
  95.                 new THREE.MeshBasicMaterial({
  96.                     map: hdrCubeRenderTarget.texture,
  97.                 })
  98.             );
  99.             planeMesh.position.set(0, 10, 0);
  100.             scene.add(planeMesh);
  101.  
  102.  
  103.  
  104.  
  105.             scene.background = hdrCubeRenderTarget.texture;
  106.             scene.add(mesh);
  107.         }
  108.     }
  109.  
  110.     animate();
  111. }
  112.  
  113. function animate(now) {
  114.     requestAnimationFrame( animate );
  115.  
  116.     controls.update();  
  117.  
  118.     renderer.render( scene, camera );
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement