2026-04-27 TIL (45일차)
2026-04-27 TIL (45일차)
프로그래밍 팁: “당장 구현”에서 “설계”로 넘어가기
부모 클래스(Inheritance) vs 인터페이스(Interface)
- 부모 클래스 (Is-A): “아이템은 물리 액터다”처럼 공통된 속성과 기능을 물려줄 때 사용합니다. (예: 모든 아이템은 이름을 가지고 있고, 바닥에 놓일 수 있다.)
- 인터페이스 (Can-Do): “이 물체는 상호작용이 가능하다”처럼 행위를 정의할 때 사용합니다. (예: 문, 아이템, NPC는 모두 다르지만 ‘상호작용’은 공통으로 할 수 있다.)
객체 지향의 핵심: OCP (개방-폐쇄 원칙)
- 정의: 기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계해야 합니다.
- 방법: 아이템을 새로 만들 때마다
Character클래스에서if(ItemA) else if(ItemB)를 추가하고 있다면 설계가 잘못된 것입니다.Item->Use()처럼 부모의 함수만 호출하고, 실제 동작은 자식 클래스들이 각자 알아서 하도록(다형성) 맡겨야 합니다.
머티리얼의 UV
UV란 무엇인가?
- 정의: 3D 모델의 표면에 2D 텍스처를 입히기 위한 2차원 좌표계입니다.
- 좌표값: 가로(U)와 세로(V) 방향으로 0.0에서 1.0 사이의 값을 가집니다.
- 공부 팁: 머티리얼 에디터에서
TextureCoordinate노드가 바로 이 UV 값을 출력합니다.
핵심 노드 정의
- Append (어펜드):
- 역할: 개별 숫자(Float)들을 합쳐서 벡터(Vector)로 만듭니다.
- 예시:
Float(0.5)와Float(0.2)를 Append 하면Vector2(0.5, 0.2)가 됩니다. 주로 UV 좌표를 직접 조작할 때 씁니다.
- Component Mask (마스크):
- 역할: 다차원 데이터(RGB)에서 특정 채널만 골라냅니다.
- 예시: 텍스처에서 R 채널만 뽑아내어 흑백 이미지로 활용할 때 사용합니다.
UV/노이즈에서 R값만 받고 Append를 하면?
- 상황: 노이즈의 R(Float1) 값에 다른 값(예: G 채널이나 상수)을 Append 하여 UV 단자에 연결하면?
- 결과: 원래의 정돈된 UV가 아니라, 노이즈의 수치에 따라 좌표가 뒤틀리는 ‘디스토션(Distortion)’ 효과가 발생합니다. 불이 일렁거리거나 물결이 치는 효과를 만들 때 사용하는 핵심 기법입니다.
ORM
언리얼 엔진에서 사용하는 ‘텍스처 패킹’ 기법입니다. 하나의 텍스처 이미지 안에 있는 RGB 채널에 각각 다른 정보를 담습니다.
- R (Red): Occlusion (Ambient Occlusion, 주변광 차폐)
- G (Green): Roughness (거칠기)
- B (Blue): Metallic (금속성)
왜 이렇게 쓰나요? 텍스처를 각각 3장을 쓰는 것보다 하나로 합쳐서 쓰는 것이 메모리를 훨씬 적게 차지하고, 그래픽 카드에서 데이터를 불러오는 횟수(Draw Call)를 줄여 성능을 비약적으로 향상시키기 때문입니다.
마스터 머티리얼
- 모든 사물에 일일이 머티리얼 노드를 새로 짜는 것은 비효율적입니다.
- 가장 기본적인 기능(색상, 노멀, ORM, UV 조절 등)을 미리 다 짜놓은 거대한 원본 머티리얼을 ‘마스터 머티리얼’이라고 부릅니다.
머티리얼 인스턴스
- 파라미터화 (Parameterize): 마스터 머티리얼 내부에서 수치(Scalar)나 텍스처 노드 위에서 마우스 우클릭 후 ‘Convert to Parameter’를 선택합니다. 이름을
BaseColor,RoughnessMult등으로 정합니다. - 인스턴스 생성: 마스터 머티리얼 우클릭 후 ‘Create Material Instance’를 누릅니다.
- 조절하기: 생성된 인스턴스를 열면, 복잡한 노드 그래프 대신 체크박스와 슬라이더만 나타납니다. 여기서 값을 수정하면 컴파일 대기 시간 없이 즉시 화면에 반영됩니다.
효율: 게임 개발 시 90% 이상의 오브젝트는 1~2개의 마스터 머티리얼에서 파생된 인스턴스들로 처리하는 것이 성능과 작업 속도 면에서 정석입니다.
This post is licensed under CC BY 4.0 by the author.