왜 엔진이라고 부를까?
Library / Framework / Engine
→ 공통점 : 특정 기능이 반복 사용될 때 해당 기능을 모아 놓은 것들, 공통으로 사용하는 기능을 모아놓았다
- 라이브러리 : 내가 만들고 있는 개발 프로젝트에 라이브러리를 가져옴, 내가 원하는 대로 만들다가 필요한 것만 골라씀
- 프레임워크 : 공통을 사용하는 기능 + 틀 /내가 틀 안으로 들어가서 처음부터 개발을 시작
- 엔진 : 게임에 필요한 기능을 제공하는 소프트웨어. 핵심 기능을 개발함. 프레임워크의 일종. 좁은 범위에서는 게임에서의 핵심 기능은 엔진에서 만듦. 반드시 들어가야 하는 것이 있음. 게임엔진은 물리 엔진으로 출발했음
게임 엔진의 두 가지의 핵심 기능
- 물리 엔진(사실적이다)
- 실시간 상호작용 : 액션을 취했을 때 바로바로 일어나는 반응
언리얼 엔진 버전 표시 규칙
5.4.3
- 5 : Major version / Update. 소프트웨어의 패러다임의 변화. 큰 변화가 있음
- 4 : Minor Version / Update. 기능 향상 / 추가
- 3 : Patch. 버그 / 오류 수정. 큰 영향은 없음
리얼 타임 엔진이란?
실시간 상호작용 | 활용 분야의 확장 (게임 엔진 뿐 아니라 리얼 타임 엔진으로 확장) |
충돌처리(제일 중요) | 게임 |
Rendering(실시간 렌더링) | 영화 & TV |
VFX | 방송 & 라이브 |
Animation | 애니메이션 |
Sound | 건축 |
Network | 자동차 |
A.I(NPC에 적용된 AI) | 시뮬레이션 |
리얼 타임 렌더링(Rendering)
- 사실적인 그래픽을 생성하는 프로세스
- 모델에 사실적으로 표현하기 위해 텍스쳐, 색, 빛을 계산해 하나의 사물이 제대로 모양이 갖춰지도록 만드는 것
- 인터랙션이 가능함
3D 축 표현 방법
- 왼손 좌표계 / 오른손 좌표계
- Z-up / Y-up
3차원 : xyz
z의 방향성으로 왼손 좌표계, 오른손 좌표계가 달라짐. xy의 방향이 고정되어있다
3D 좌표계
XYZ?
- 데카르트의 기호 표기 체계 (미지의 수 X)
- 1차원 방정식 : X
- 2차원 방정식 : X, Y
- 3차원 방정식 : X, Y, Z
벡터
- 크기와 방향을 가진 물리량
- 여러 데이터가 괄호로 묶인 묶음 데이터 ex) (5,5) → 데이터 1개
- 좌표계 데이터 집합. 3차원 벡터의 경우(x,y,z) 집합 형태로 표현
Texture 좌표계
UV?
- 수평 좌표와 수직 좌표로 구성되는 2차원 맵 (깊이가 없음)
- U(수평) V(수직) / 깊이가 있었다면 W를 썼을 것
- 2D 텍스처에서 특정 수직 및 수평 좌표에 컬러 값을 저장하는 일종의 버텍스 맵
Color 혼합
감산 혼합 | CMYK |
|
|
가산 혼합 | RGB |
|
|
컴퓨터 데이터 기본 개념
- 컴퓨터에서 사용하는 데이터는 2진수 → 0, 1로 구성
- 컴퓨터에서 표현되는 모든 미디어는 0,1로 구성 : 그래픽, 사운드, 텍스트 등
- 소프트웨어에서 해당 데이터로 인식 : 인코딩/디코딩
2진수 데이터를 사용가능한 데이터로 표현하는 원리
Bit(비트) : 메모리 1칸
- 0 또는 1이 저장될 수 있는 공간
- 표현할 수 있는 데이터 개수 2개
Byte(바이트) : 1byte = 8bit
- 8개의 bit를 1byte로 구성해서 의미있는 데이터를 표현
- 알파벳은 256개의 데이터를 표현할 수 있음 → 동양, 한국어는 256개 데이터가 넘으므로 2byte
RGB Color 표현
2진수(0,1) 데이터 RGB Color를 표현하는 방법 |
2진수 데이터를 10진수(0~9) 진수로 변환 |
2진수 데이터를 16진수로 변환 |
|
|
|
데이터 Mapping
RGB ↔ XYZ
Unreal Engine에서 값 Mapping
- 각 데이터 값들을 0~1 사이의 소수점 값으로 표현
- R↔X / G↔Y / B↔Z
Ex) Normal Map : 색상 정보로 깊이, 높낮이를 표현. Z로 깊이감을 표현하기 위해 푸르딩딩한 색
Naming Convention (네이밍을 하는 표준 방식)
표기법
- 대상에 대한 이름을 여러 단어를 사용해서 이름만 보고 이해할 수 있도록 네이밍
- 여러 단어 사이에 공백대신 구분할 수 있는 방법
예시 : real time rendering
Kebab Case | Snake Case | Camel Case | Pascal Case |
real-time-rendering (dash, hyphen 사용) |
real_time_rendering (underbar, underscore) : 파이썬에서 사용 |
realTimeRendering : 가장 많이 사용하는 방식 | RealTimeRendering : Unreal Engine에서 사용 |
Unreal Engine 명령 규칙
- 머티리얼 : M_ (M_RealTimeRendering)
- 머티리얼 인스턴스 : MI_
- HDRI : HDR_
- 피직스 에셋 : PHYS_
- 피직스 머티리얼 : PM_
- 포스트 프로세스 머티리얼 : PPM_
- 스켈레탈 메시 : SK_
- 스태틱 메시 : SM_
- 텍스쳐 : T_
- OCIO 프로파일 : OCIO_
'4. 언리얼 엔진(Unreal Engine) 공부 > Unreal Engine [이론]' 카테고리의 다른 글
6. [UE5] Material (0) | 2024.08.25 |
---|---|
5. [UE5] LandScape Mode(Landmass, Landscape Spline) (0) | 2024.08.25 |
4. [UE5] Displayment, Blend Material, Texture (0) | 2024.08.24 |
3. [UE5] 기본 구성 요소(Level, Asset) (1) | 2024.08.19 |
2. [UE5] 초기 세팅 (0) | 2024.08.19 |