씬 구성 요소 - Light, Camera, Mesh
지금까지 우리는 언리얼 엔진의 C++ 기본기와 게임플레이 로직의 핵심 요소들을 다루며 캐릭터가 움직이고 상호작용하는 기반을 다졌습니다. 이제 이러한 캐릭터가 활동할 월드(World) 와 그 월드를 구성하는 씬(Scene) 에 대해 이해할 시간입니다. 게임은 단순히 움직이는 캐릭터뿐만 아니라, 그 배경이 되는 환경, 즉 '씬'이 있어야 완성됩니다. 씬은 주로 빛(Light), 카메라(Camera), 그리고 메시(Mesh) 라는 세 가지 핵심 구성 요소로 이루어져 있습니다. 이 절에서는 각 요소의 역할과 중요성을 자세히 살펴보겠습니다.
Light (빛): 씬에 생명을 불어넣는 조명
빛은 3D 씬에서 가장 중요한 요소 중 하나입니다. 빛이 없으면 아무것도 보이지 않으며, 빛의 종류와 배치, 강도에 따라 씬의 분위기와 시각적 품질이 극적으로 달라집니다. 언리얼 엔진은 다양한 종류의 빛을 제공하며, 각기 다른 방식으로 씬을 밝힙니다.
주요 광원 타입
- Directional Light (방향성 광원): 태양처럼 무한히 멀리서 평행하게 들어오는 빛을 시뮬레이션합니다. 씬 전체에 동일한 방향으로 영향을 미치며, 주로 낮/밤 환경의 주광원으로 사용됩니다. 그림자의 방향과 강도를 결정하는 데 핵심적입니다.
- Point Light (점 광원): 전구처럼 한 점에서 사방으로 빛을 발산하는 광원입니다. 빛의 강도가 거리에 따라 감소하며, 로컬 영역을 밝히거나 특정 오브젝트를 강조할 때 유용합니다.
- Spot Light (스포트 광원): 손전등이나 자동차 헤드라이트처럼 원뿔 형태의 특정 영역을 비추는 빛입니다. 원뿔의 크기와 내부/외부 각도를 조절하여 빛이 퍼지는 방식을 제어할 수 있습니다.
- Rect Light (직사각형 광원): 창문이나 대형 스크린처럼 직사각형 면에서 빛을 방출하는 광원입니다. 주로 실내 환경에서 부드럽고 넓은 영역을 밝히는 데 사용되며, 사실적인 반사를 생성하는 데도 효과적입니다.
빛의 중요성
- 가시성: 오브젝트를 보이게 만듭니다.
- 분위기 및 감성: 밝고 화사한 분위기, 어둡고 음침한 분위기 등 씬의 전반적인 감성을 결정합니다.
- 입체감 및 형태: 빛과 그림자의 상호작용은 오브젝트의 형태와 깊이감을 강조하여 씬에 입체감을 부여합니다.
- 성능: 광원의 개수, 그림자 계산 방식, 빛의 반사 여부 등은 씬의 렌더링 성능에 큰 영향을 미칩니다. 언리얼 엔진은 정적인 빛(
Static
), 스테이셔너리 빛(Stationary
), 무빙 빛(Movable
) 등 다양한 모빌리티(Mobility) 설정을 제공하여 성능과 퀄리티 사이의 균형을 조절할 수 있습니다.
Camera (카메라): 플레이어의 눈
카메라는 플레이어가 게임 월드를 보는 시점을 결정하는 요소입니다. 3D 씬에서 카메라는 촬영 장비와 같아서, 카메라의 위치, 방향, 시야각 등에 따라 플레이어가 경험하는 게임의 '전망'이 완전히 달라집니다.
카메라의 종류
- Player Camera (플레이어 카메라): 플레이어가 게임 월드를 바라보는 주된 시점입니다. 일반적으로
APlayerController
가 소유하거나 제어하는APawn
/ACharacter
에 부착된UCameraComponent
를 통해 구현됩니다. - Cinematic Camera (시네마틱 카메라): 게임 내 이벤트나 컷씬(Cutscene)에서 특정 연출을 위해 사용되는 카메라입니다. 플레이어의 제어를 받지 않고 미리 정의된 경로를 따라 움직이거나 특정 장면을 강조합니다.
카메라의 중요성
- 관점: 1인칭(FPS), 3인칭(TPS), 탑다운, 쿼터뷰 등 게임의 핵심 플레이 방식을 결정합니다.
- 정보 전달: 플레이어에게 필요한 정보를 시각적으로 전달하는 역할을 합니다.
- 몰입감: 적절한 카메라 연출은 플레이어의 몰입감을 높여줍니다.
- 제어:
APlayerController
를 통해 카메라의 회전(Yaw, Pitch), 위치 등을 제어하여 플레이어가 월드를 탐색할 수 있도록 합니다.USpringArmComponent
와 같은 컴포넌트는 캐릭터와 카메라 사이의 거리를 유지하거나 장애물 충돌 시 카메라를 자동으로 조절하는 등 유용한 기능을 제공합니다.
Mesh (메시): 씬을 구성하는 형태
메시(Mesh) 는 3D 씬을 구성하는 가장 기본적인 시각적 형태입니다. 삼각형(Triangles)으로 이루어진 면들의 집합으로, 캐릭터, 건물, 나무, 바위, 무기 등 게임 월드의 모든 시각적 오브젝트를 표현합니다.
메시의 종류
- Static Mesh (스태틱 메시): 정적인 형태를 가지는 메시입니다. 게임 플레이 중에는 형태가 변하지 않고 고정되어 있습니다. 건물, 지형, 가구, 소품 등 대부분의 환경 오브젝트에 사용됩니다. 언리얼 엔진에서는
.FBX
등의 포맷으로 외부 3D 모델링 툴에서 제작된 후 임포트됩니다. - Skeletal Mesh (스켈레탈 메시): 골격(Skeleton)을 가지고 애니메이션될 수 있는 메시입니다. 캐릭터, 몬스터, 팔다리가 있는 동식물 등 움직임과 애니메이션이 필요한 오브젝트에 사용됩니다. 스켈레톤의 각 '뼈(Bone)'를 움직여 메시의 형태를 변형하고 애니메이션을 만듭니다.
메시의 중요성
- 시각적 표현: 게임 월드의 모든 시각적 요소를 구성합니다.
- 충돌 감지: 메시의 형태는 충돌 판정에도 영향을 미치며,
UStaticMeshComponent
나USkeletalMeshComponent
자체에 충돌 설정을 적용할 수 있습니다. - 성능: 메시의 복잡도(삼각형 수), 재질(Material)의 복잡도 등은 렌더링 성능에 직접적인 영향을 미칩니다. LOD(Level of Detail)나 최적화된 메시 사용은 성능 관리에 필수적입니다.
- 재질(Material) 및 텍스처(Texture): 메시는 그 자체로 색상이나 표면 질감을 가지지 않습니다. 표면에 색상, 질감, 반사 등을 입히기 위해 재질(Material) 과 텍스처(Texture) 가 적용됩니다. 재질은 메시의 표면이 빛과 어떻게 상호작용할지 정의하며, 텍스처는 재질에 세부적인 색상이나 패턴을 부여합니다.
씬 구성의 상호작용
이 세 가지 핵심 요소는 독립적으로 존재하지 않고 서로 밀접하게 상호작용합니다.
- 빛은 메시의 표면에 닿아 색상과 형태를 드러내고 그림자를 드리웁니다.
- 카메라는 이 모든 빛과 메시의 상호작용을 포착하여 플레이어에게 보여줍니다.
- 메시는 씬의 시각적 기반을 제공하며, 빛의 영향을 받아 사실적인 모습을 갖춥니다.
언리얼 에디터의 뷰포트(Viewport) 는 이러한 빛, 카메라, 메시의 조합을 실시간으로 보여주는 창입니다. 뷰포트에서 액터(Actor, 즉 씬에 배치된 오브젝트)를 배치하고, 각 액터에 부착된 메시 컴포넌트의 형태를 확인하며, 빛 액터를 조절하여 씬의 분위기를 조성하고, 카메라의 위치와 시야각을 변경하여 플레이어의 경험을 설계하게 됩니다.
이제 언리얼 엔진 씬을 구성하는 가장 기본적이고 핵심적인 요소인 빛, 카메라, 메시의 역할과 중요성을 이해하셨을 것입니다.