Advertisement
Guest User

Untitled

a guest
Sep 26th, 2019
681
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5.     <meta charset="UTF-8">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8.     <title>Document</title>
  9.     <link rel="stylesheet" href="css/main.css">
  10. </head>
  11.  
  12. <body>
  13.     <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/102/three.js"></script>
  14.     <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.2/TweenMax.min.js"></script>
  15.  
  16.     <script type="module">
  17.  
  18.         import { OrbitControls } from './node_modules/three/examples/jsm/controls/OrbitControls.js';
  19.         import { FBXLoader } from './node_modules/three/examples/jsm/loaders/FBXLoader.js';
  20.         import { Reflector } from './node_modules/three/examples/jsm/objects/Reflector.js';
  21.  
  22.         //scene
  23.         var scene = new THREE.Scene();
  24.  
  25.         //materials
  26.         var textureLoader = new THREE.TextureLoader();
  27.  
  28.         var woodDiff = textureLoader.load("./textures/wood/albedo.png");
  29.         var woodNormal = textureLoader.load('textures/wood/normal.png');
  30.         var woodMetal = textureLoader.load('textures/wood/metallic.png');
  31.         var woodRoughness = textureLoader.load('textures/wood/roughness.png');
  32.  
  33.         var wood = new THREE.MeshPhysicalMaterial(
  34.             {
  35.                 color: 0xFFFFE0,
  36.                 map: woodDiff,
  37.                 normalMap: woodNormal,
  38.                 metalnessMap: woodMetal,
  39.                 roughnessMap: woodRoughness
  40.             }
  41.         )
  42.  
  43.         var mirrorGeometry = new THREE.CircleGeometry(200, 200);
  44.         var groundMirror = new Reflector(mirrorGeometry, {
  45.             clipBias: 0.05,
  46.             textureWidth: window.innerWidth * window.devicePixelRatio,
  47.             textureHeight: window.innerHeight * window.devicePixelRatio,
  48.             color: 0x777777,
  49.             recursion: 1
  50.         });
  51.  
  52.         groundMirror.position.y = -0.2;
  53.         groundMirror.rotateX(- Math.PI / 2);
  54.         groundMirror.receiveShadows = true;
  55.         scene.add(groundMirror);
  56.  
  57.         //lights
  58.         var keyLight = new THREE.DirectionalLight(0x404040);
  59.         keyLight.position.set(5, 5, 0);
  60.         scene.add(keyLight);
  61.  
  62.         var secondLight = new THREE.DirectionalLight(0x404040);
  63.         secondLight.position.set(-5, -5, 0);
  64.         scene.add(secondLight);
  65.  
  66.         var thirdLight = new THREE.DirectionalLight(0x404040);
  67.         thirdLight.position.set(0, 2, -2);
  68.         scene.add(thirdLight);
  69.  
  70.         //camera
  71.         let perspectiveCamera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.001, 2000);
  72.         perspectiveCamera.position.set(50, 100, -160);
  73.         scene.add(perspectiveCamera);
  74.  
  75.         //renderer creation
  76.         var renderer = new THREE.WebGLRenderer({ antialias: true });
  77.         renderer.setPixelRatio(window.devicePixelRatio);
  78.         renderer.setSize(window.innerWidth, window.innerHeight);
  79.         renderer.setClearColor("#777777");
  80.         renderer.gammaOutput = true;
  81.         renderer.shadowMap.enabled = true;
  82.         document.body.appendChild(renderer.domElement);
  83.  
  84.         //objects
  85.         var loader = new FBXLoader();
  86.         loader.load('meshes/Croissant.fbx', function (object) {
  87.             object.traverse(function (child) {
  88.                 if (child.isMesh) {
  89.                     child.material = wood;
  90.                 }
  91.             });
  92.  
  93.             object.castShadows = true;
  94.             scene.add(object);
  95.         },
  96.             function (xhr) {
  97.                 console.log((xhr.loaded / xhr.total) * 100 + '% loaded.');
  98.             }
  99.         );
  100.  
  101.         //orbit controls
  102.         let controls = new OrbitControls(perspectiveCamera, renderer.domElement);
  103.         controls.target.set(0, 0, -1);
  104.         controls.update();
  105.  
  106.         //Resize event
  107.         window.addEventListener('resize', () => {
  108.             renderer.setSize(window.innerWidth, window.innerHeight);
  109.             perspectiveCamera.aspect = window.innerWidth / window.innerHeight;
  110.             perspectiveCamera.updateProjectionMatrix();
  111.         });
  112.  
  113.         // //render updated viewport
  114.         var update = function () {
  115.             requestAnimationFrame(update);
  116.             perspectiveCamera.updateMatrixWorld();
  117.             renderer.render(scene, perspectiveCamera);
  118.         };
  119.         update();
  120.     </script>
  121. </body>
  122.  
  123. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement