jfs

Three.js viewer

jfs
Jul 11th, 2021 (edited)
684
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. console.clear();
  2.  
  3. let scene = new THREE.Scene();
  4. scene.background = new THREE.Color(0xdddddd);
  5.  
  6. let hlight = new THREE.AmbientLight(0x404040,100);
  7. scene.add(hlight);
  8.  
  9. let fillLight = new THREE.DirectionalLight(new THREE.Color('hsl(240, 100%, 75%)'), 0.75);
  10. fillLight.position.set(100, 0, 100);
  11. scene.add(fillLight);
  12.  
  13. let backLight = new THREE.DirectionalLight(0xffffff, 1.0);
  14. backLight.position.set(100, 0, -100).normalize();
  15. scene.add(backLight);
  16.  
  17. let axesHelper = new THREE.AxesHelper(5);
  18. scene.add(axesHelper);
  19.  
  20. var renderer = new THREE.WebGLRenderer({antialias:true});
  21. renderer.setSize(window.innerWidth, window.innerHeight);
  22.  
  23. let viewer = document.getElementById('3dViewer');
  24. viewer.appendChild(renderer.domElement);
  25. viewer.children[2].id = '3dCanvas';
  26.  
  27. let camera = new THREE.PerspectiveCamera(40, window.innerwidth/window.innerHeight, 1, 5000);
  28. camera.position.z = 100;
  29.  
  30. let controls = new THREE.OrbitControls(camera, renderer.domElement);
  31. // controls.enableDamping = true;
  32. // controls.dampingFactor = 0.25;
  33. controls.enableZoom = true;
  34.  
  35. const manager = new THREE.LoadingManager();
  36.  
  37. var viewerAlert = document.getElementById('viewerAlert');
  38. var viewerFiles = document.getElementById('viewerFiles');
  39. var countFiles  = document.getElementById('countFiles');
  40.  
  41. manager.onStart = function(url, itemsLoaded, itemsTotal){
  42.     viewerFiles.textContent = 'Started loading file: ' + url + '.\nLoaded.';
  43.     countFiles.textContent = itemsLoaded + ' of ' + itemsTotal + ' files.';
  44. };
  45.  
  46. manager.onLoad = function(){
  47.     viewerFiles.textContent = 'Loading complete!';
  48.     countFiles.textContent = '';
  49.  
  50.     setTimeout(() => {
  51.         viewerAlert.classList.add('fade-out');
  52.         viewerAlert.addEventListener('transitionend', function(){
  53.             viewerAlert.classList.replace('fade-out', 'hidden');
  54.         });
  55.     }, 800);
  56. };
  57.  
  58. manager.onProgress = function(url, itemsLoaded, itemsTotal){
  59.     viewerFiles.textContent = 'Loading file: ' + url + '.\nLoaded.';
  60.     countFiles.textContent = itemsLoaded + ' of ' + itemsTotal + ' files.';
  61. };
  62.  
  63. manager.onError = function(url){
  64.     viewerFiles.textContent = 'There was an error loading ' + url;
  65.     countFiles.textContent = '';
  66. };
  67.  
  68. var mtlLoader = new THREE.MTLLoader(manager);
  69. mtlLoader.setPath('./assets/models/');
  70. mtlLoader.load('weingut-mueller_weinkarton.mtl', function( materials ) {
  71.     materials.preload();
  72.  
  73.     var objLoader = new THREE.OBJLoader(manager);
  74.     objLoader.setMaterials( materials );
  75.     objLoader.setPath('./assets/models/');
  76.     objLoader.load( 'weingut-mueller_weinkarton.obj',
  77.         function(obj){
  78.             obj.position.set(0, 0, 0);
  79.  
  80.             const box = new THREE.BoxHelper( obj, 0xffff00 );
  81.  
  82.             scene.add(box);
  83.         },
  84.         function(xhr){
  85.         },
  86.         function(error){
  87.             console.error('An error occured!' + error);
  88.         }
  89.     );
  90. });
  91.  
  92. window.addEventListener('resize', function(){
  93.     let width  = window.innerWidth;
  94.     let height = window.innerHeight;
  95.  
  96.     renderer.setSize(width, height);
  97.     camera.aspect = width / height;
  98.     camera.updateProjectionMatrix();
  99. });
  100.  
  101. renderer.render(scene, camera, controls);
  102.  
  103. function animate(){
  104.     requestAnimationFrame(animate);
  105.     controls.update();
  106. }
  107.  
  108. animate();
Add Comment
Please, Sign In to add comment