Material에 Canvas 사용하기
- 메모리상의 다른 캔버스를 하나 생성하여 사용하기
- CanvasTexture는 Three.js에서 HTML5 캔버스를 텍스처로 사용하는 방법이다.
- 이를 통해 동적으로 변경되는 2D 그래픽을 3D 장면의 표면에 입힐 수 있다.
/* CanvasTexture 만들기 */ // Canvas 요소 생성 및 텍스트, 도형 그리기 const texCanvas = document.createElement("canvas"); const texContext = texCanvas.getContext("2d"); // HTML5 캔버스 요소의 2D 렌더링 컨텍스트를 가져오는 코드 texCanvas.width = 500; texCanvas.height = 500; // CanvasTexture로 변환하여 Three.js 텍스처 생성 const canvasTexture = new THREE.CanvasTexture(texCanvas); /* Messh 만들기 */ const geometry = new THREE.BoxGeometry(2, 2, 2); const material = new THREE.MeshBasicMaterial({ map: canvasTexture }); const mesh = new THREE.Mesh(geometry, material); scene.add(mesh); /* 그리기 */ const clock = new THREE.Clock(); function draw() { const time = clock.getElapsedTime(); // getElapsedTime : 경과시간 // 캔버스 텍스처 업데이트 : 애니메이션을 사용하기 위해 needsUpdate를 true 만들어주기 material.map.needsUpdate = true; // 캔버스 배경색 texContext.fillStyle = "orange"; // 도형 그리기 texContext.fillRect(0, 0, 500, 500); texContext.fillStyle = "white"; texContext.fillRect(Math.sin(time) * 300, 100, 50, 50); // 경과 시간을 사용하여 sin 함수를 이용한 애니메이션 // 텍스트 추가 texContext.font = "bold 50px sans-serif"; texContext.fillText("texContext", 200, 200); renderer.render(scene, camera); renderer.setAnimationLoop(draw); }
'Frontend > Three.js' 카테고리의 다른 글
시간 흐름 측정, getDelta()와 getElapsedTime() (0) | 2024.11.03 |
---|---|
조명, Light 기본 사용법 (AmbientLight, DirectionalLight, AxesHelper) (0) | 2024.10.31 |
재질, Environment Map_물체 표면에 반사되는 배경 이미지를 설정 (0) | 2024.10.29 |
재질, MeshStandardMaterial에 효과 더하기 (0) | 2024.10.27 |
재질, MeshMatcapMaterial_Matcap 텍스처를 사용하여 간단하게 색상과 조명 효과를 적용 가능 (0) | 2024.10.27 |