Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mongo
- frontend
- html
- DM
- react
- postgresql
- ps
- Express
- SOLID
- C++
- CV
- CSS
- PyTorch
- sqlite
- GAN
- ML
- PRISMA
- figma
- nodejs
- DB
- python
- vscode
- ts
- Git
- UI
- Linux
- review
- API
- Three
- js
Archives
- Today
- Total
아카이브
[Three] 04. Renderer 본문
Renderer는 WebGL을 이용해 카메라에 담긴 Scene의 모습을 실제 화면에 출력합니다.
import * as THREE from 'three';
const renderer = new THREE.WebGLRenderer({
canvas,
antialias: true,
// ...
});
WebGLRenderer( )를 선언할 때 매개변수들은 객체 형태로 전달됩니다.
아래와 같은 매개변수들을 사용 가능합니다.
매개변수 | 기능 | 입력값 | 기본값 |
canvas | renderer가 화면을 출력할 canvas 객체 | HTMLCanvasElement | |
alpha | 알파값 (밝기) | boolean | false |
antialias | 안티앨리어싱 여부 | boolean | false |
ShadowMap
WebGLRenderer의 속성값 중 shadowMap을 사용하여 renderer가 그림자를 어떻게 처리할 것인지를 설정할 수 있습니다.
속성값 | 기능 | 입력값 | 기본값 |
enabled | 그림자 적용 여부 | boolean | true |
type | 그림자 타입 | THREE.BasicShadowMap THREE.PCFShadowMap THREE.PCFSoftShadowMap THREE.VSMShadowMap |
THREE.PCFShadowMap |
autoUpdate | 그림자 자동 갱신 여부 (dynamic lighting을 위해) |
boolean | true |
needsUpdate | 다음 render 호출 때 그림자 갱신 여부. autoUpdate = false라면, true로 설정 해 주어야 함 |
boolean | false |
Animation
매 프레임마다 값을 바꿔가며 애니메이션을 구현할 때는 setAnimationLoop( ) 메소드를 사용합니다.
PC 또는 모니터 환경 마다 FPS 값이 다를 수 있으므로, 프레임마다 업데이트를 하면 환경에 따라 그 속도가 다르게 나타날 수 있습니다.
이를 위해 현재 환경에서 1프레임에 걸리는 시간(delta)을 구해 변하는 값을 보정할 수 있습니다.
const clock = new THREE.Clock();
const drawingFunction = () => {
const delta = clock.getDelta(); // 보정값
object.position.x += delta; // delta(time/frame) * FPS(frame/time) = 1
render.render(scene, camera);
render.setAnimationLoop(drawingFunction); // 애니메이션
}
메소드 (기본적인 설정)
메소드 | 기능 | 매개변수 | 반환값 |
setSize(width, height) | 출력할 화면의 크기 | width : number 너비 height : number 높이 |
|
setPixelRatio(n) | 픽셀 해상도 | n: number 해상도 | |
render(scene, camera) | 랜더링 | scene : THREE.Scene camera : THREE.Camera |
const createRenderer = (canvas: HTMLCanvasElement) => {
const renderer = new THREE.WebGLRenderer({
canvas,
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(window.devicePixelRatio > 1 ? 2: 1);
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.shadowMap.needsUpdate = true;
return renderer;
};
728x90
'Frontend' 카테고리의 다른 글
[Three] 06. Mesh (0) | 2025.05.16 |
---|---|
[Three] 05. Light (0) | 2025.05.11 |
[Three] 03. Camera (0) | 2025.05.10 |
[Three] 02. Scene (0) | 2025.05.10 |
[Three] 01. Three.js 기본 구성 요소 - Renderer, Scene, Camera (0) | 2025.05.04 |
Comments