Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
102
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"; //'three/examples/jsm/controls/OrbitControls.js';
  3. import { GLTFLoader } from "./GLTFLoader.js"; //'three/examples/jsm/controls/OrbitControls.js';
  4. import { RGBELoader } from "./RGBELoader.js"; //'three/examples/jsm/controls/OrbitControls.js';
  5. import { HDRCubeTextureLoader } from "./HDRCubeTextureLoader.js"; //from './jsm/loaders/HDRCubeTextureLoader.js';
  6. import Utils from "./utils.js"; //from './jsm/loaders/HDRCubeTextureLoader.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.     //controls.update() must be called after any manual changes to the camera's transform
  36.     camera.position.set( 0, 60, 60 );
  37.     controls.target.set( 0, 40, 0 );
  38.     controls.update();
  39.  
  40.  
  41.     pmremGenerator = new THREE.PMREMGenerator( renderer );
  42.  
  43.  
  44.     let mesh;
  45.     var loader = new GLTFLoader();
  46.     loader.load("garment.glb",
  47.         function ( gltf ) {
  48.             mesh = gltf.scene.children[0];
  49.             onDownload();
  50.         }
  51.     );
  52.  
  53.     let diffuse;
  54.     new THREE.TextureLoader().load("diffuse.jpg", function(texture) {
  55.         diffuse = texture;
  56.         diffuse.flipY = false;
  57.         diffuse.encoding = THREE.sRGBEncoding;
  58.         onDownload();
  59.     });
  60.  
  61.  
  62.  
  63.  
  64.     new RGBELoader()
  65.     .setDataType( THREE.UnsignedByteType ) // alt: FloatType, HalfFloatType
  66.     .load( "env.hdr", function ( texture, textureData ) {
  67.  
  68.         hdrCubeRenderTarget = pmremGenerator.fromEquirectangular( texture );
  69.  
  70.         onDownload();
  71.     });
  72.  
  73.  
  74.     let cdl = 0;
  75.     function onDownload() {
  76.         cdl++;
  77.         if(cdl === 3) {
  78.  
  79.  
  80.             mesh.material = new THREE.MeshPhysicalMaterial({
  81.                 color: 0xffffff,
  82.                 map: diffuse,
  83.                 transparent: true,
  84.                 envMap: hdrCubeRenderTarget.texture,
  85.                 envMapIntensity: 0.55,
  86.                 metalness: 0,
  87.                 roughness: 1,
  88.                 // roughnessMap: this.orm,
  89.                 // metalnessMap: this.orm,
  90.                 // aoMap: this.orm,
  91.                 opacity: 1,
  92.                 side: THREE.DoubleSide,
  93.             });
  94.  
  95.  
  96.  
  97.             let planeMesh = new THREE.Mesh(
  98.                 new THREE.PlaneBufferGeometry(30, 30),
  99.                 new THREE.MeshBasicMaterial({
  100.                     map: hdrCubeRenderTarget.texture,
  101.                 })
  102.             );
  103.             planeMesh.position.set(0, 10, 0);
  104.             scene.add(planeMesh);
  105.  
  106.  
  107.  
  108.  
  109.             scene.background = hdrCubeRenderTarget.texture;
  110.             scene.add(mesh);
  111.         }
  112.     }
  113.  
  114.     animate();
  115. }
  116.  
  117. function animate(now) {
  118.     requestAnimationFrame( animate );
  119.  
  120.     controls.update();  
  121.  
  122.     renderer.render( scene, camera );
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement