언리얼 엔진은 아이소메트릭 게임 및 건축 시각화 등의 프로젝트에 사용할 수 있는 직교 카메라 투영을 지원합니다. 직교 카메라는 루멘, 나나이트, 버추얼 섀도 맵(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) | 직교 평면 자동 계산 이 선택되지 않은 경우, 이 세팅이 직교 카메라의 근거리 클립 면 위치를 설정합니다. |
| 직교 원거리 클립 면(Ortho Far Clip Plane) | 직교 평면 자동 계산 이 선택되지 않은 경우, 이 세팅이 직교 카메라의 원거리 클립 면 위치를 설정합니다. |
| 직교 평면 업데이트(Update Ortho Planes) | 라이팅 아티팩트 발생 및 클리핑을 방지하기 위해 현재 카메라의 근/원거리 면과 뷰 원점을 자동 조정합니다. |
| 카메라 높이를 뷰 타깃으로 사용(Use Camera Height as View Target) | 직교 평면 업데이트 가 선택된 경우, 이 세팅이 카메라의 현재 높이를 사용하여 일반 뷰까지의 거리(뷰 타깃이 없을 때 뷰 타깃까지의 의사 거리)를 보정합니다. |
| 종횡비(Aspect Ratio) | 카메라 뷰 마스킹의 가로 대비 세로 비율을 설정하거나, 드롭다운을 사용하여 사전 환경설정된 일반 종횡비 중 하나를 선택합니다. |
직교 평면 자동 계산
Auto Calculate Ortho Planes 프로퍼티는 지면을 기준으로 한 카메라 각도에 따라 근거리 클립 면의 스케일을 조절합니다. 근거리 클립 면 거리는 직교 높이를 사용하여 음의 값으로 평가됩니다. 기본적으로 설정된 최소 클립 면 위치는 카메라 뒤에서 적용된 직교 높이의 약 1.4배입니다. 이는 아래의 콘솔 변수를 사용하여 보정할 수 있습니다.
원거리 클립 면 거리는 처음에 픽셀 대비 언리얼 유닛의 비율을 결정합니다(기본적으로 cm 단위로 측정됨). 이 값을 사용하여 근거리 및 원거리 클립 면 사이의 거리를 FP16 최댓값(66504.0f)의 배수로 스케일 조절합니다. 직교 너비 및 픽셀 대비 언리얼 유닛 비율에 따라 이 값은 UE_OLD_WORLD_MAX 거리(21km)로 업스케일할 수 있습니다. 16비트 버퍼로 다운스케일링되는 경우, 뎁스 정확도를 보존하기 위해 씬이 작을수록 원거리 클립 면 거리도 짧아지게 됩니다.
직교 평면 자동 계산 콘솔 변수
| 콘솔 변수 이름 | 설명 |
|---|---|
r.Ortho.AutoPlanes |
직교 카메라가 자동 근거리 및 원거리 클립 면 계산을 사용하도록 전역적으로 허용합니다. |
r.AutoPlanes.ClampToMaxFPBuffer |
직교 면을 자동 계산할 때 이 변수가 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.AutoPlanes.ScaleIncrementingUnits |
픽셀 대비 유닛 비율 증가에 따라 근거리 또는 원거리 평면의 최솟값과 최댓값을 스케일 조절할지 여부를 선택합니다. 예를 들어 센티미터에서 미터, 킬로미터로 조절합니다. |
뷰 원점 보정
직교 카메라에는 뎁스 부재로 인해 카메라의 월드 위치와 실제 뷰 위치가 올바르게 정렬되지 않는 문제가 있습니다. 라이팅과 다른 이펙트가 뷰 위치와 카메라의 실제 월드 위치 간에 올바르게 해석되지 않을 때 이 문제를 시각적으로 확인할 수 있습니다. 따라서 카메라의 뷰 원점이 카메라 월드 위치가 아닌 실제 뷰 위치를 나타내도록 보정하기 위해 콘솔 변수를 사용할 수 있습니다.
뷰 원점 보정 콘솔 변수
| 콘솔 변수 이름 | 설명 |
|---|---|
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.EditorDebugClipPlaneScale |
라이팅포함 모드의 에디터 직교 디버그 뷰포트에만 영향을 줍니다. 스케일이 현재 직교 너비 를 기준으로 근거리 클립 면을 비율에 따라 변경하도록 설정합니다. 이는 직교 줌이 변경됨에 따라 씬에서 지오메트리가 클립될 때 변경되며, 디버그 면 뷰에서 다양한 크기의 일루미네이션 적용 메시를 시각화할 때 유용합니다. 이 값을 변경하면 다른 라이트 아티팩트가 나타날 수 있습니다. |
제한 및 추가 참고 사항
언리얼 엔진에서는 항상 원근 뷰 카메라를 우선시해 왔으므로, 추가된 새 엔진 기능이 직교 카메라에 최적화되어 있지 않을 수도 있습니다. 하지만 향후 기능에서 동일한 수준을 달성할 수 있도록 최선을 다할 것입니다.
다음 콘솔 변수는 특정 시나리오에서 유용할 수 있습니다.
| 콘솔 변수 이름 | 설명 |
|---|---|
r.Ortho.DepthThicknessScale |
씬의 뎁스 두께 스케일을 조절합니다. 직교 씬 뎁스는 보통 원근 씬보다 낮은 비율로 스케일 조절됩니다(1/100 스케일). 예를 들어 루멘 뎁스 차이 테스트는 이 스케일에서 더 잘 작동합니다. 사용되는 표면 사이의 뎁스 차이가 매우 작은 상황과 같은 일부 경우에는, 이 값을 사용하여 여러 화면 트레이스 패스에서 동시에 뎁스 두께 테스트 값의 스케일을 조절해야 할 수도 있습니다. |
r.Ortho.CalculatingDepthThicknessScale |
근거리/원거리 평면의 차이에서 뎁스 두께 테스트 스케일을 자동으로 파생시킬지 여부입니다. 이 옵션은 기본적으로 활성화됩니다. 그러나 비활성화될 경우(0인 경우) r.Ortho.DepthThicknessScale 에 지정된 스케일링이 사용됩니다. |
r.Ortho.FogHeightAdjustment |
활성화할 경우 직교 카메라 높이가 포그 컷오프 높이를 결정하는 데 사용됩니다. |
r.Ortho.UsePreviousMotionVelocityFlattenPass |
직교 카메라 모션 블러 패스가 이전에 평탄화된 텍스처(예: 템포럴 슈퍼 해상도의 텍스처)를 사용할지 여부를 설정합니다. 이 콘솔 변수는 비활성화할 경우 원거리 평면에 떨림을 유발할 수 있다는 점에 유의하세요. |
직교 카메라에서의 볼류메트릭 클라우드
볼류메트릭, 특히 볼류메트릭 클라우드는 직교 카메라 뷰에서 문제가 나타날 수 있습니다. 이는 주로 직교 뷰 사용 시 씬을 스케일 조절하는 방식으로 인해 발생합니다. 예를 들어 직교 뷰에서 볼류메트릭 클라우드를 보려는 경우 구름의 원근 부분을 얻는 대신 10미터x10미터 창과 같은 것을 얻게 됩니다.