import * as THREE from 'three'; import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js'; import { GUI } from 'three/addons/libs/lil-gui.module.min.js'; const scene = new THREE.Scene(); const sizes = { width: window.innerWidth, height: window.innerHeight, } //console.log(sizes.width + "x" + sizes.height); //RENDERER const renderer = new THREE.WebGLRenderer({antialias:true}); renderer.setSize( sizes.width, sizes.height ); renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = 1.5; renderer.outputColorSpace = THREE.SRGBColorSpace; renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFShadowMap; document.body.appendChild( renderer.domElement ); //CAMERA const camera = new THREE.PerspectiveCamera( 65, sizes.width / sizes.height, 0.1, 1000 ); camera.position.x = 0; camera.position.y = 2; camera.position.z = 7.5; const controls = new OrbitControls( camera, renderer.domElement ); controls.enableDamping = true; controls.dampingFactor = 0.05; // Friction controls.screenSpacePanning = false; // Vertical panning along screen controls.update(); //RESIZING function handleResize(){ sizes.width = window.innerWidth; sizes.height = window.innerHeight; camera.aspect = sizes.width/sizes.height; camera.updateProjectionMatrix(); renderer.setSize( sizes.width, sizes.height ); renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); } window.addEventListener("resize", handleResize); //MODEL LOADER let core_logo_mesh; const loader = new GLTFLoader(); loader.load( 'models/MBS-2408 Oreophryne anulata.glb', function ( glb ) { core_logo_mesh = glb.scene; scene.add( glb.scene ); }, undefined, function ( error ) { console.error( error ); } ); //ENVIRONMENT const env_loader = new UltraHDRLoader(); const env_texture = await env_loader.loadAsync( 'assets/studio_small_08_4k.jpg' ); env_texture.mapping = THREE.EquirectangularReflectionMapping; scene.background = new THREE.Color(0xe6e6e6); // scene.background = env_texture; // scene.backgroundBlurriness = 0.5; scene.environment = env_texture; // console.log(scene.environment); //LIGHTS const ambient_light = new THREE.AmbientLight( 0xFFFFFF , 0.1); // soft white light scene.add( ambient_light ); const sun = new THREE.DirectionalLight( 0xFFFFFF, 0.5); sun.castShadow = true; scene.add( sun ); // const helper = new THREE.DirectionalLightHelper( sun, 5 ); // scene.add( helper ); //EFFECTS PASS // const composer = new EffectComposer( renderer ); // const renderPass = new RenderPass(scene, camera); // composer.addPass(renderPass); // const bloomPass = new UnrealBloomPass( // new THREE.Vector2(sizes.width, sizes.height), // 0.35, // strength // 1, // radius // 1 // threshold // ); // composer.addPass(bloomPass); renderer.setAnimationLoop( animate ); function animate( time ) { //cube.rotation.x = time / 2000; //cube.rotation.y = time / 1000; controls.update(); //core_logo_mesh.rotation.y = time / 1000; renderer.render( scene, camera ); //console.log(camera.position); // if (core_logo_mesh){ // core_logo_mesh.rotation.y = time / 1500; // } //composer.render(); }