Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import * as THREE from "./three.module.js";
- import { OrbitControls } from "./orbitControls.js";
- import { GLTFLoader } from "./GLTFLoader.js";
- import { RGBELoader } from "./RGBELoader.js";
- import { HDRCubeTextureLoader } from "./HDRCubeTextureLoader.js";
- import Utils from "./utils.js";
- window.addEventListener("load", init);
- let scene;
- let camera;
- let controls;
- let renderer;
- let pmremGenerator;
- let hdrCubeRenderTarget;
- function init() {
- renderer = new THREE.WebGLRenderer({ antialias: true });
- renderer.setSize( window.innerWidth, window.innerHeight );
- renderer.toneMapping = THREE.ACESFilmicToneMapping;
- renderer.toneMappingExposure = 0.8;
- renderer.outputEncoding = THREE.sRGBEncoding;
- document.body.appendChild( renderer.domElement );
- scene = new THREE.Scene();
- camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
- controls = new OrbitControls( camera, renderer.domElement );
- controls.enableDamping = true;
- controls.dampingFactor = 0.0875;
- controls.enablePan = true;
- controls.panSpeed = 1.0;
- controls.screenSpacePanning = true;
- camera.position.set( 0, 60, 60 );
- controls.target.set( 0, 40, 0 );
- controls.update();
- pmremGenerator = new THREE.PMREMGenerator( renderer );
- let mesh;
- var loader = new GLTFLoader();
- loader.load("garment.glb",
- function ( gltf ) {
- mesh = gltf.scene.children[0];
- onDownload();
- }
- );
- let diffuse;
- new THREE.TextureLoader().load("diffuse.jpg", function(texture) {
- diffuse = texture;
- diffuse.flipY = false;
- diffuse.encoding = THREE.sRGBEncoding;
- onDownload();
- });
- new RGBELoader()
- .setDataType( THREE.UnsignedByteType ) // alt: FloatType, HalfFloatType
- .load( "env.hdr", function ( texture, textureData ) {
- hdrCubeRenderTarget = pmremGenerator.fromEquirectangular( texture );
- onDownload();
- });
- let cdl = 0;
- function onDownload() {
- cdl++;
- if(cdl === 3) {
- mesh.material = new THREE.MeshPhysicalMaterial({
- color: 0xffffff,
- map: diffuse,
- transparent: true,
- envMap: hdrCubeRenderTarget.texture,
- envMapIntensity: 0.55,
- metalness: 0,
- roughness: 1,
- opacity: 1,
- side: THREE.DoubleSide,
- });
- let planeMesh = new THREE.Mesh(
- new THREE.PlaneBufferGeometry(30, 30),
- new THREE.MeshBasicMaterial({
- map: hdrCubeRenderTarget.texture,
- })
- );
- planeMesh.position.set(0, 10, 0);
- scene.add(planeMesh);
- scene.background = hdrCubeRenderTarget.texture;
- scene.add(mesh);
- }
- }
- animate();
- }
- function animate(now) {
- requestAnimationFrame( animate );
- controls.update();
- renderer.render( scene, camera );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement