시야각(FOV) 투영 수학과 화면비 변환 매트릭스
3D 그래픽 엔진에서 시야각(Field of View / FOV)은 가상 카메라가 3차원 공간을 담아내는 원뿔형 시각 범위를 정의합니다. 현대 게임 엔진은 직각 원근 투영(Rectilinear Perspective Projection)을 사용하기 때문에, 21:9 또는 32:9 울트라와이드 모니터에서 수평 시야각을 무리하게 확장하면 화면 외곽선 물체가 비정상적으로 좌우로 늘어나는 왜곡(어안렌즈 효과)이 필연적으로 발생합니다. 또한 게임마다 수평(H-FOV), 수직(V-FOV), 4:3 앵커 등 슬라이더 기준이 달라 정확한 수학적 환산이 요구됩니다.
| 엔진 및 게임 프레임워크 | 인게임 슬라이더 기준 | 16:9 기준 90° 환산값 | 21:9 기준 90° 환산값 | 가장자리 왜곡 취약도 |
|---|---|---|---|---|
| 언리얼 엔진 (기본값) | 16:9 기준 수평 FOV | 90° H-FOV (수직 약 59°) | 자동 Hor+ 적용으로 106° | 중간 수준의 주변부 늘어짐 |
| 소스 엔진 (CS2/TF2) | 4:3 기준 수평 FOV | 106° 실제 수평 시야각 | 121° 실제 수평 시야각 | 21:9 환경에서 외곽 왜곡 극심 |
| 프로스트바이트 (배틀필드) | 수직 FOV (V-FOV) | 74° V-FOV (수평 106°) | 74° V-FOV (수평 121°) | 비율 변경 시 왜곡이 적고 이상적 |
| 유니티 (기본 카메라) | 수직 FOV (V-FOV) | 59° V-FOV (수평 90°) | 59° V-FOV (수평 106°) | 다중 모니터에서 비율 일관성 우수 |
1단계: 수평 FOV와 수직 FOV 간 삼각함수 환산 공식
다양한 게임 간에 에임 감각과 원근 거리감을 동일하게 유지하려면 수직 FOV 기준으로 일원화해야 합니다:
환산 공식
수직FOV = 2 * arctan( tan(수평FOV / 2) * (화면세로해상도 / 화면가로해상도) )
주요 세팅 기준값 (16:9 기준)
- 일반적인 90° 수평 -> 수직 FOV
59°지정. - 오버워치 표준 103° 수평 -> 수직 FOV
71°지정. - 광시야각 110° 수평 -> 수직 FOV
78°지정. - 21:9 모니터(3440x1440)에서는 수직 FOV를 71°~74°로 고정하면 중앙 크로스헤어 크기 왜곡 없이 좌우 시야만 121°로 자연스럽게 확장됩니다.
2단계: 21:9 / 32:9 울트라와이드 모니터 Hor+ 강제 고정
일부 게임은 울트라와이드 해상도 적용 시 화면 양옆을 늘리는 대신 상하를 잘라내는 악성 Vert- 방식을 사용합니다:
- 인게임 화면이 위아래로 좁아졌는지 확인합니다.
- 언리얼 엔진 기반 게임의 경우
Engine.ini파일을 열고 다음을 추가합니다:
[/Script/Engine.LocalPlayer]
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV
AspectRatio_MaintainYFOV설정은 Y축(수직 화각)을 절대 기준으로 잠그고 X축(가로)으로만 추가 시야를 확장하여 상하 잘림 및 왜곡을 완전히 방지합니다.
3단계: 파니니 투영(Panini Projection)으로 주변부 왜곡 및 3D 멀미 완화
시야각이 110°를 넘는 울트라와이드 환경에서 평면 투영으로 인한 3D 멀미가 발생할 때:
- 그래픽 설정에서
파니니 투영(Panini Projection)지원 여부를 확인합니다 (최신 UE5 게임에 탑재). - 파니니 투영은 화면 가장자리를 원통형 곡면 투영으로 보정하여 모서리에 위치한 구체가 타원형으로 찌그러지지 않고 둥근 형태를 유지하게 돕습니다.
- 미지원 고전 게임의 경우 Flawless Widescreen이나 ReShade의
Panini Projection Shader를 활성화하여 가장자리 15% 영역을 자연스럽게 압축하면 화면 회전 시의 어지럼증이 사라집니다.