-
TIL-2024.03.15 - 3js - 3D 공간 만들기> Frontend/ThreeJS 2024. 3. 17. 18:03
목표:
- Cube Map Texture를 활용한 3차원 공간 표현
1.1) Texture Loader
1.2) Cube Texture Loader - 360도 Panorama Texture를 활용한 3차원 공간 표현
- envMap
Cube Map Texture를 활용한 3차원 공간 표현:
1. Texture Loader/* 1. Cube Map Texture 를 활용한 3차원 공간 - 1. TextureLoader */ /* OrbitControls */ const control = new OrbitControls(camera, renderer.domElement); control.minDistance = 5; control.maxDistance = 100; /* Texture Loader */ const textureLoader = new THREE.TextureLoader().setPath("assets/textures/Yokohama/"); const images = [ "posx.jpg", "negx.jpg", "posy.jpg", "negy.jpg", "posz.jpg", "negz.jpg", ]; /*Geometry - Box Geometry*/ const boxGeomtry = new THREE.BoxGeometry(5000, 5000, 5000); const boxMaterials = images.map(image => new THREE.MeshBasicMaterial({ map: textureLoader.load(image), side: THREE.BackSide, })) const skybox = new THREE.Mesh(boxGeomtry, boxMaterials); scene.add(skybox);
2. Texture Loader
/* 2. Cube Map Texture 를 활용한 3차원 공간 - 2. CubeTextureLoader*/ /* OrbitControls */ const control = new OrbitControls(camera, renderer.domElement); control.minDistance = 5; control.maxDistance = 100; /* Texture Loader */ const cubeTextureLoader = new THREE.CubeTextureLoader().setPath("assets/textures/Yokohama/"); const images = [ "posx.jpg", "negx.jpg", "posy.jpg", "negy.jpg", "posz.jpg", "negz.jpg", ]; const cubeTexture = cubeTextureLoader.load(images); scene.background = cubeTexture;
360도 Panorama Texture를 활용한 3차원 공간 표현:
/* 3. Panorama Texture 를 활용한 3차원 공간 */ /* OrbitControls */ const control = new OrbitControls(camera, renderer.domElement); control.enableZoom = false; control.enableDamping = true; control.autoRotate = true; control.autoRotate = 0.1; /* TexutreLoader with EquirectangularRefractionMapping */ const textureLoader = new THREE.TextureLoader(); const texture = textureLoader.load("assets/textures/village.jpeg"); // texture.mapping = THREE.EquirectangularRefractionMapping; // 굴절 효과를 시뮬레이션하는 유형의 텍스처 매핑 texture.mapping = THREE.EquirectangularReflectionMapping; // 반사 효과를 시뮬레이션하는 유형의 텍스처 매핑 scene.background = texture;
envMap:
// /* Sphere Geomtry */ const sphereGeomtry = new THREE.SphereGeometry(30, 50, 50); const spehereMaterial = new THREE.MeshBasicMaterial({ envMap: texture, reflectivity: 0.9, }); const sphere = new THREE.Mesh(sphereGeomtry, spehereMaterial); scene.add(sphere); // /* GUI */ gui.add(texture, "mapping", { Reflaction: THREE.EquirectangularRefractionMapping, Reflection: THREE.EquirectangularReflectionMapping }).onChange((event) => { spehereMaterial.needsUpdate = true; }); gui.add(spehereMaterial, "reflectivity").min(0).max(1).step(0.01); gui.add(spehereMaterial, "refractionRatio").min(0).max(1).step(0.01);
'> Frontend > ThreeJS' 카테고리의 다른 글
TIL-2024.03.17 - 3js - 3D 케릭터 만들기 - 2. Raycaster (0) 2024.03.18 TIL-2024.03.16 - 3js - 3D 케릭터 만들기 - 1 (0) 2024.03.18 TIL-2024.03.14 - 3js - Interactive Card - 1. 카드 모형 만들기 (0) 2024.03.14 TIL-2024.03.12 - 3js - Fonts - 3 (0) 2024.03.12 TIL-2024.03.11 - 3js - Fonts - 2 (0) 2024.03.11 - Cube Map Texture를 활용한 3차원 공간 표현