wam
w__am 개발노트
wam
  • 분류 전체보기 (165)
    • CS 지식 (10)
      • 자료구조 (0)
      • 알고리즘 (0)
      • 컴퓨터 구조 (0)
      • 운영체제 (0)
      • 네트워크 (7)
      • 데이터베이스 (0)
      • 디자인 패턴 (3)
    • Frontend (131)
      • Three.js (64)
      • NPM (1)
      • Nest.js (19)
      • React (10)
      • Apollo (7)
      • TypeScript (2)
      • JavaScript (12)
      • HTML, CSS (1)
      • Jest (3)
      • E2E (5)
      • Cypress (7)
    • Database (12)
      • TypeORM (12)
    • IT 지식 (8)
      • 클라우드 서비스 (3)
      • 네트워크 (1)
      • 데이터 포맷 (2)
      • 기타 (2)
    • IT Book (2)
    • 유용한 사이트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 🐱 Github

인기 글

태그

  • 오프-프레미스(off-premise) 방식
  • Interface
  • 렌더링 성능 최적화
  • isabstract
  • Decorators
  • 함수 표현식
  • type-graphql
  • 함수 리터럴
  • 스코프
  • reactive variables
  • API
  • react 성능 최적화
  • 삼각함수
  • gridhelper
  • 초기 환경설정
  • 데이터 포맷
  • math.sin()
  • 함수의 범위
  • axeshelper
  • getelapsedtime()
  • math.cos()
  • 함수 선언문
  • joi 에러
  • mapped types
  • three.js 구성 요소
  • 원형적인 움직임
  • 디자인 패턴
  • threejs 개발 할 때 도움을 줄 수 있는 유틸리티
  • e.preventdefault()
  • getdelta()

최근 글

관리자

글쓰기 / 스킨편집 / 관리자페이지
hELLO · Designed By 정상우.
wam
Frontend/Three.js

재질, Material에 Canvas 사용하기

재질, Material에 Canvas 사용하기
Frontend/Three.js

재질, Material에 Canvas 사용하기

2024. 10. 29. 17:39

 

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
  • Material에 Canvas 사용하기
'Frontend/Three.js' 카테고리의 다른 글
  • 시간 흐름 측정, getDelta()와 getElapsedTime()
  • 조명, Light 기본 사용법 (AmbientLight, DirectionalLight, AxesHelper)
  • 재질, Environment Map_물체 표면에 반사되는 배경 이미지를 설정
  • 재질, MeshStandardMaterial에 효과 더하기
wam
wam

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.