언리얼 엔진은 아이소메트릭 게임 및 건축 시각화 등의 프로젝트에 사용할 수 있는 직교 카메라 투영을 지원합니다. 직교 카메라는 루멘, 나나이트, 버추얼 섀도 맵(Virtual Shadow Maps, VSM), 템포럴 슈퍼 해상도, 리플렉션, 볼류메트릭, 패스 트레이싱, 워터 시스템 등 다른 언리얼 엔진 기능과 함께 작동합니다.
카메라를 직교 투영으로 구성하기
카메라를 직교 투영으로 구성하려면 다음 단계를 따릅니다.
- 레벨에 카메라(Camera) 액터를 배치합니다.
- 레벨 에디터 아웃라이너(Outliner) 에서 배치된 카메라를 선택합니다.
- 디테일(Details) 패널의 카메라 세팅(Camera Settings) 에서 투영 모드(Projection Mode) 드롭다운을 사용하여 Orthographic 을 선택합니다.
- 디테일 패널에서 액터 트랜스폼 을 사용하여 카메라를 이동하고 회전합니다.
직교 투영은 시네 카메라에서 작동하지 않습니다.
다음 세팅을 변경하여 직교 렌더링을 조정할 수 있습니다.
| 세팅 이름 | 설명 |
|---|---|
| 직교 너비(Ortho Width) | 이 옵션을 펼치면 미디어의 해상도, 프레임 레이트, 크기, 메서드, 포맷, 결합된 레벨 오브 디테일 바이어스, 밉 및 타일 수에 대한 디테일을 확인할 수 있습니다. |
| Auto Calculate Ortho Planes | 선택하면 특정 직교 너비에서 뎁스 클립 면을 자동으로 해석합니다. 선택하지 않으면 직교 카메라의 근거리 클립 면과 원거리 클립 면을 수동 설정할 수 있습니다. |
| Auto Plane Shift | 면 사이의 거리를 유지하면서 이 카메라의 면을 수동 조정합니다. 양의 값은 원거리 면 쪽으로, 음의 값은 근거리 면 쪽으로 이동합니다. |
| 직교 근거리 클립 면(Ortho Near Clip Plane) | Auto Calculate Ortho Planes 이 선택되지 않은 경우, 이 세팅이 직교 카메라의 근거리 클립 면 위치를 설정합니다. |
| 직교 원거리 클립 면(Ortho Far Clip Plane) | Auto Calculate Ortho Planes 이 선택되지 않은 경우, 이 세팅이 직교 카메라의 원거리 클립 면 위치를 설정합니다. |
| Update Ortho Planes | 라이팅 아티팩트 발생 및 클리핑을 방지하기 위해 현재 카메라의 근/원거리 면과 뷰 원점을 자동 조정합니다. |
| Use Camera Height as View Target | Update Ortho Planes가 선택된 경우, 이 세팅이 카메라의 현재 높이를 사용하여 일반 뷰까지의 거리(뷰 타깃이 없을 때 뷰 타깃까지의 의사 거리)를 보정합니다. |
| 종횡비(Aspect Ratio) | 카메라 뷰 마스킹의 가로 대비 세로 비율을 설정하거나, 드롭다운을 사용하여 사전 환경설정된 일반 종횡비 중 하나를 선택합니다. |
직교 평면 자동 계산
Auto Calculate Ortho Planes 프로퍼티는 지면을 기준으로 한 카메라 각도에 따라 근거리 클립 면의 스케일을 조절합니다. 근거리 클립 면 거리는 직교 높이를 사용하여 음의 값으로 평가됩니다. 기본적으로 설정된 최소 클립 면 위치는 카메라 뒤에서 적용된 직교 높이의 약 1.4배입니다. 이는 아래의 콘솔 변수를 사용하여 보정할 수 있습니다.
원거리 클립 면 거리는 처음에 픽셀 대비 언리얼 유닛의 비율을 결정합니다(기본적으로 cm 단위로 측정됨). 이 값을 사용하여 근거리 및 원거리 클립 면 사이의 거리를 FP16 최댓값(66504.0f)의 배수로 스케일 조절합니다. 직교 너비 및 픽셀 대비 언리얼 유닛 비율에 따라 이 값은 UE_OLD_WORLD_MAX 거리(21km)로 업스케일할 수 있습니다. 16비트 버퍼로 다운스케일되는 경우, 뎁스 정확도를 보존하기 위해 씬이 작을수록 원거리 클립 면 거리도 짧아지게 됩니다.
직교 평면 자동 계산 콘솔 변수
| 콘솔 변수 이름 | 설명 |
|---|---|
| r.Ortho.AutoPlanes | 직교 카메라가 자동 근거리 및 원거리 클립 면 계산을 사용하도록 전역적으로 허용합니다. |
| r.Ortho.AutoPlanes.ClampTo16bitBuffers | 직교 면을 자동 계산할 때 이 변수가 16비트 뎁스 스케일 조절 사용 여부를 결정합니다. 16비트 스케일 조절은 발생하는 모든 뎁스 다운스케일에 도움이 됩니다. 예를 들어 HZB 다운스케일은 32비트 텍스처 대신 16비트 텍스처를 사용합니다. 이 기능은 픽셀 대비 언리얼 유닛(기본적으로 cm) 비율을 기반으로 필요한 최대 뎁스 스케일을 계산합니다. 작은 씬의 경우 액터 대부분이 합리적인 수준의 보이는 프러스텀 내에 있어, 32비트 뎁스 범위가 필요하지 않으므로 16비트 뎁스 범위를 대신 사용합니다. 대규모 씬의 경우 면 거리가 뎁스 버퍼의 일반적인 전체 범위인 최대 UE_OLD_WORLD_MAX(21km)로 업스케일합니다. |
| r.Ortho.AutoPlanes.DepthScale | 기본적인 FP16 최댓값(66504.0f)에서 16비트 뎁스 스케일을 조절합니다. 원거리 클립 면이 최댓값만큼 멀리 떨어질 필요가 없는 경우 유용하며, 뎁스 델타가 향상됩니다. |
| r.Ortho.AutoPlanes.ShiftPlanes | 전체 프러스텀을 Z 방향으로 이동합니다. 원거리 클립 면 값이 감소하여(예: 가로 2.5D 씬) 카메라에 가까운 근거리 클립 면이 필요한 경우에 유용합니다. |
뷰 원점 보정
직교 카메라에는 뎁스 부재로 인해 카메라의 월드 위치와 실제 뷰 위치가 올바르게 정렬되지 않는 문제가 있습니다. 라이팅과 다른 이펙트가 뷰 위치와 카메라의 실제 월드 위치 간에 올바르게 해석되지 않을 때 이 문제를 시각적으로 확인할 수 있습니다. 따라서 카메라의 뷰 원점이 카메라 월드 위치가 아닌 실제 뷰 위치를 나타내도록 보정하기 위해 콘솔 변수를 사용할 수 있습니다.
뷰 원점 보정 콘솔 변수
| 콘솔 변수 이름 | 설명 |
|---|---|
| r.Ortho.AllowNearPlaneCorrection | 활성화할 경우 직교 카메라가 근거리 면 위치에 맞게 자동 업데이트되며, 투영 매트릭스 계산 시 카메라 위치가 근거리 클립 면 위치로 대체되도록 강제합니다. 직교 근거리 클립 면이 카메라 뒤로 갈 수 있으며, 그러면 엔진이 카메라 위치 뒤 라이팅을 해석하는 데 문제가 발생할 수 있습니다. 이때 이 변수가 유용합니다. |
| r.Ortho.DefaultUpdateNearClipPlane | 근거리 면 보정 사용 시 업데이트할 직교 근거리 클립 면 값입니다. |
| r.Ortho.CameraHeightAsViewTarget | 활성화할 경우 근거리 면 보정 계산 시 카메라 높이를 뷰 타깃으로 사용합니다. 주로 VSM 클립맵을 선택하는 데 도움을 주며, 근거리 면 과다 보정도 방지할 수 있습니다. |
버추얼 섀도 맵
나나이트 및 비나나이트 지오메트리를 혼합하여 사용하는 경우, 버추얼 섀도 맵은 원근 모드에서와 마찬가지로 직교 렌더링에서도 까다로울 수 있으며, 세팅의 적절한 균형을 찾는 것이 어려울 수 있습니다. 다음 콘솔 변수를 통해 VSM이 씬의 올바른 드로 해상도를 해석하고 선택하는 방식을 어느 정도 커스텀 컨트롤할 수 있습니다.
버추얼 섀도 맵 콘솔 변수
| 콘솔 변수 이름 | 설명 |
|---|---|
| r.Ortho.VSM.EstimateClipmapLevels | 활성화할 경우 현재 카메라 직교 너비를 기반으로 첫 번째 레벨 VSM을 계산합니다. |
| r.Ortho.VSM.ClipmapLODBias | VSM 첫 번째 레벨을 조정하는 데 사용할 LOD 바이어스입니다. |
| r.Ortho.VSM.ProjectViewOrigin | 활성화할 경우 VSM 클립맵의 WorldOrigin이 ViewTarget 주변을 포커스하도록 이동합니다(존재하는 경우). |
| r.Ortho.VSM.RayCastViewOrigin | 활성화할 경우, ViewTarget이 존재하지 않으면 레이캐스트로 ViewOrigin을 추정합니다(예: 독립형 카메라). |
카메라 뷰 디버그
직교 카메라에는 모든 카메라(에디터 뷰 제외)가 직교로 해석되도록 강제하기 위해 사용할 수 있는 디버그 옵션이 포함되어 있습니다. 출시 빌드에서는 해당 옵션이 비활성화되어 있습니다.
카메라 뷰 디버그 콘솔 변수
| 콘솔 변수 이름 | 설명 |
|---|---|
| r.Ortho.Debug.ForceAllCamerasToOrtho | 활성화할 경우 씬의 모든 카메라가 직교 뷰를 사용하도록 강제합니다. |
| r.Ortho.Debug.ForceOrthoWidth | 활성화할 경우 ForceAllCamerasToOrtho 옵션 사용 시 직교 너비를 조정합니다. |
| r.Ortho.Debug.ForceUseAutoPlanes | 활성화할 경우 ForceAllCamerasToOrtho 옵션 사용 시 근거리 및 원거리 클립 면 자동 평가를 사용합니다. |
| r.Ortho.Debug.ForceCameraNearPlane | 활성화할 경우 ForceAllCamerasToOrtho 옵션 사용 시 근거리 클립 면을 조정합니다. ForceUseAutoPlanes 활성화 시 무시됩니다. |
| r.Ortho.Debug.ForceCameraFarPlane | 활성화할 경우 ForceAllCamerasToOrtho 옵션 사용 시 원거리 클립 면을 조정합니다. ForceUseAutoPlanes 활성화 시 무시됩니다. |
예시 씬
제한 및 추가 참고 사항
언리얼 엔진에서는 항상 원근 뷰 카메라를 우선시해 왔으므로, 추가된 새 엔진 기능이 직교 카메라에 최적화되어 있지 않을 수도 있습니다. 하지만 향후 기능에서 동일한 수준을 달성할 수 있도록 최선을 다할 것입니다.
다음 콘솔 변수는 특정 시나리오에서 유용할 수 있습니다.
| 콘솔 변수 이름 | 설명 |
|---|---|
| r.Ortho.DepthThicknessScale | 씬의 뎁스 두께 스케일을 조절합니다. 직교 씬 뎁스는 보통 원근 씬보다 낮은 비율로 스케일 조절됩니다(1/100 스케일). 예를 들어 루멘 뎁스 차이 테스트는 이 스케일에서 더 잘 작동합니다. 사용되는 표면 사이의 뎁스 차이가 매우 작은 상황과 같은 일부 경우에는, 이 값을 사용하여 여러 화면 트레이스 패스에서 동시에 뎁스 두께 테스트 값의 스케일을 조절해야 할 수도 있습니다. |
| r.Ortho.EditorDebugClipPlaneScale | 라이팅포함 모드의 에디터 직교 디버그 뷰포트에만 영향을 줍니다. 스케일이 현재 직교 너비 를 기반으로 근거리 클립 면을 비율에 따라 변경하도록 설정합니다. 이는 직교 줌이 변경됨에 따라 씬에서 지오메트리가 클립될 때 변경되며, 디버그 면 뷰에서 다양한 크기의 일루미네이션 적용 메시를 시각화할 때 유용합니다. 이 값을 변경하면 다른 라이트 아티팩트가 나타날 수 있습니다. |