전체 글 1460

BRDF

BRDF는 Bidirectional Reflectance Distribution Function의 약자로, 특정 방향에서 들어온 빛이 표면에서 특정 방향으로 얼마나 반사되는지를 나타내는 함수 1. Bidirectional BRDF에서는 하나의 방향만 보는 것이 아니라,입사 방향 ωi : 빛이 표면으로 들어오는 방향출사 방향 ωo : 표면에서 빛이 나가는 방향 두 방향을 함께 고려하기 때문에 Bidirectional이라고 합니다. -> 빛이 어느 방향에서 들어왔고, 어느 방향으로 나가는지를 함께 고려한다 2. Reflectance 표면에 들어온 빛 중에서 얼마나 반사되는지를 나타내는 개념 -> 빛이 물체에 들어왔을 때 얼마나 반사되는가? 3. Distribution Function반사된 빛..

그래픽 2026.08.30

동차 행렬

3D 그래픽스에서 일반적인 3차원 좌표 (x, y, z) 를 (x, y, z, 1) 형태의 4차원 Homogeneous Coordinate로 표현하고, 이를 4×4 Matrix로 변환에 사용한다. 사용 이동(Translation), 회전(Rotation), 크기(Scale)를 동일한 행렬 연산으로 표현할 수 있기 때문Scale ↓Rotation ↓Translation 하나의 행렬 곱으로 구성할 수 있다. 컴퓨터 그래픽스와 로봇공학에서 점의 위치를 변환하기 위해 사용하는 동차변환행렬(Homogeneous Transformation Matrix) 공식P' = M × P (1) P (입력 벡터): 원래 점의 동차 좌표(Homogeneous Coordinates)입니다. 2차원에서는 (x, y, 1), 3차원에..

게임 수학 2026.08.29

MVVM

MVVM은 Model, View, ViewModel 세 가지 요소로 UI와 데이터를 분리하는 패턴이다. 1. Model실제 게임 데이터.EX)Player HPPlayer LevelInventory 2. View사용자에게 보여주는 UI.EX)HP BarLevel TextInventory UI 3. ViewModelModel의 데이터를 View가 사용하기 편하게 변환하고 Data Binding을 제공하는 중간 계층이다.Model ↓ViewModel ↓View Data Binding에 필요한 기능 -> 값의 변경을 감지할 수 있어야 한다는 것HP = 100 ↓HP 변경 ↓ViewModel 변경 감지 ↓UI 자동 갱신 장점1. View와 Model의 결합도 감소 2. UI 테스트 용이..

Invalidation Box

인밸리데이션 박스(Invalidation Box) (1) 자손 위젯의 렌더링 정보와 지오메트리를 캐싱하여 UI의 CPU 사용량을 크게 줄이는 언리얼 엔진의 최적화 컴포넌트입니다.(2) 내부 위젯에 변화가 없으면 매 프레임 발생하는 재계산 및 페인트 과정을 건너뛰어 게임 성능을 향상시킵니다 (3) 데이터 캐싱: 인밸리데이션 박스 하위의 위젯 계층구조 전체를 캐싱합니다. 자손 위젯의 위치, 크기(레이아웃), 색상, 머티리얼 등의 정보가 저장됩니다(4) 캐시된 위젯의 속성이 변경되면(예: 텍스트 변경, 크기 조정) 그 자손들만 다시 페인팅됩니다. 변경되지 않은 UI 요소는 캐시된 데이터를 그대로 재사용합니다(5) CPU 비용 절감: 화면이 고정되어 있거나 거의 변하지 않는 정적 UI(인벤토리, 메뉴 화면,..

Unreal Engine/UI 2026.07.05

SlatePrepass

Slate Prepass- 언리얼 엔진의 슬레이트(Slate) UI 시스템에서 위젯의 크기와 위치(Geometry)를 계층 구조를 따라 재계산하고 캐싱하는 핵심 함수 UI Geometry (1) 위젯의 크기, 위치, 절대 좌표, 로컬 공간 등을 정의하는 핵심 데이터 구조입니다. (2) 화면에서 위젯의 정확한 레이아웃을 계산하고, 마우스 클릭이나 위젯 간 충돌(인벤토리 옆 툴팁 표시 등)을 판별하는 데 사용됩니다 - Absolute Size: 화면(뷰포트) 픽셀 기준의 실제 크기입니다. - Local Size: 부모 위젯 내에서의 로컬 공간 크기입니다. - Absolute/Local Position: 절대 화면 좌표계 및 부모 기준 로컬 좌표계에서의 위치입니다. - Get Local Size /..

Unreal Engine/UI 2026.07.04

UI - Paint

1. Paint(1) Unreal Engine에서 UI 요소를 화면에 그리기 위해 호출(2) 위젯의 렌더링 정보를 Slate Element Batchar에 전달(3) 위젯 트리의 상속 구조에서 Paint 함수는 모든 자손 위젯에 대하여 재귀적으로 호출되며 각 위젯의 BP 함수 호출 및 Tick 함수를 호출 -> 이 함수들은 Hit Test Grid의 재 빌드를 유발하며 성능에 많은 영향을 끼친다.-> 위젯 트리의 과도한 상속 구조는 CPU의 잦은 Vtable(가상 메서드 테이블) 접근을 유발하며 캐시 미스가 발생 2. Slate Element Batcher(FSlateElementBatcher)(1) UI 요소들을 화면에 효율적으로 그리기 위해 배치(Batch)로 묶어주는 핵심 렌더링 클래스입니다. (..

Unreal Engine/UI 2026.07.04

언리얼 넷 모드

- 실행 중인 게임 인스턴스가 네트워크상에서 어떤 역할(서버, 클라이언트, 또는 단일)을 하는지 정의하는 상태값 1. 언리얼 넷모드 종류-> 넷 모드는 World가 가지는 속성이다. (1) 싱글 : NM_StandAlone- 서버와 클라이언트 구분이 없으며, 로컬 플레이어만을 위한 연산만 수행합니다. 개발 초기 테스트나 싱글플레이 게임 제작에 사용됩니다 (2) 서버 : NM_ListenServer- 호스트 플레이어가 자신의 컴퓨터에서 서버를 열고 동시에 게임을 플레이하는 방식입니다 - 여는 플레이어에게는 서버이자 클라이언트이고, 다른 접속자들에게는 서버 역할을 합니다. -> 소규모 협동이나 캐주얼한 파티 게임에 적합하지만, 호스트의 인터넷 환경에 영향을 받습니다 (3) 서버 : NM_Dedica..

데이터 테이블 VS 데이터 에셋

1. 데이터 테이블(1) CSV 등의 데이터를 가져오는 데도 활용할 수 있고, 각 행은 FTableRowBase 기반 구조체와 매핑된다(2) 많은 양의 정형 데이터를 표 형태로 관리 2. 데이터 에셋(1) 특정 시스템에서 사용하는 데이터를 독립적인 에셋으로 정의하고 관리할 때 유용하다.(2) 개별 데이터를 독립적인 Asset으로 관리 (3) Ex) 예를 들어 Enhanced Input의 Input Action처럼, 특정 시스템에서 사용하는 설정 데이터를 에셋으로 분리해 재사용할 수 있다. Data Table은 FTableRowBase를 상속한 구조체를 기반으로 여러 개의 데이터를 행(Row) 형태로 관리한다. 반면 Data Asset은 UDataAsset을 상속한 클래스의 개별 Asset In..

언리얼 충돌기초

Unreal Engine의 Collision은 오브젝트가 서로 어떻게 상호작용할지를 정의하는 시스템이다. 충돌 설정에서는 주로 Object Type, Collision Response, Trace Response, Collision Enabled 등을 사용하며, Collision Profile을 통해 관련 설정을 프리셋으로 관리할 수 있다 1. Object Channel (1) 충돌하는 오브젝트가 어떤 종류의 Object Type인지 정의하는 데 사용한다. (2) EX)- 몬스터 그룹- 플레이어 그룹 2. Trace Channel (1) Line Trace, Sweep 같은 공간 쿼리에서 어떤 종류의 충돌을 검사할지 결정하기 위한 채널 (2) Spring Arm의 카메라 충돌 검사나 Line Tra..

15. 짐벌락

오일러 각오일러 각 체계는 매우 직관적인데, x, y, z 축을 기준으로 놓고 기준축을 중심으로 회전을 표현한다.3차원은 축이 3개 존재하기에 이렇게 하면 모든 각도를 표현할 수 있다. 오일러 각의 문제점짐벌락 현상 -> 회전을 해서 두 개 이상의 축이 같아졌을 때 빠져나오지 못하는 문제점이다.오일러각을 이용한 회전 과정에서 두 개 혹은 세 개의 축이 겹쳐 한 개 혹은 두 개의 축에 자유도를 잃어서, 같은 방향으로 오브젝터의 회전 축이 겹치는 현상 -> 겹친 축을 원하는 방향으로 회전 할 수 없다.원래는 자유자재로 잘 움직이다가, 축들이 하나로 겹치게 되었을 때,문제점이 발생 짐벌락 현상이 발생하는 이유- 오일러 회전과 같이 회전의 연산을 각 축의 성분으로 나누어 계산하기 때문이다.- 오일러 각(E..

게임 수학 2026.06.22