> Frontend/ThreeJS
TIL-2024.03.06 - 3js - Fonts - 1. 3D 폰트 만들기
Janku
2024. 3. 7. 20:59
------- Fonts
목표:
순서:
1. font.json 파일을 준비하고, root > assers > fonts 아래 위치
The Jamsil 5 Bold_Regular.json
7.72MB
2. Import
import { FontLoader } from "three/addons";
import { TextGeometry } from "three/addons";
import { OrbitControls } from "three/addons";
3. 코드 작성
/*Font Loader*/
const fontLoader = new FontLoader(); // 폰트 파일을 비동기적으로 로드하기 위한 FontLoader 인스턴스
const jamsilFont = await fontLoader.loadAsync("./assets/fonts/The Jamsil 5 Bold_Regular.json");
// 폰트 파일을 비동기적으로 로드하고, jamsilFont 변수에 할당합니다.
const textGeometry = new TextGeometry("안녕하세요. ", {
font: jamsilFont,
size: 0.5,
height: 0.1,
});
// 로드된 폰트를 사용하여 "안녕하세요."라는 텍스트를 만듭니다.
// size와 height 매개변수는 텍스트의 크기와 높이를 정의
const textMaterial = new THREE.MeshPhongMaterial({color: 0x00c896}); // 녹색으로 색상이 채워진 새로운 MeshPhongMaterial
const text = new THREE.Mesh(textGeometry, textMaterial); // 텍스트 지오메트리와 재료를 결합하여 새 Mesh 인스턴스 생성
scene.add(text);
// SECTION: LIGHT
const ambientLight = new THREE.AmbientLight(0xffffff, 1); // 모든 방향에서 동일한 강도로 장면을 조명
const pointLight = new THREE.PointLight(0xffffff, 1); // 한 점에서 방사형으로 조명하는 조명 유형
const pointLightHelper = new THREE.PointLightHelper(pointLight, 0.5, 0xffffff); // 포인트 빛의 위치를 시각적으로 나타
pointLight.position.set(3, 0, 2);
scene.add(ambientLight);
scene.add(pointLight, pointLightHelper);