UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CameraTypes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "EngineDefines.h"
8#include "Engine/Scene.h"
9#include "CameraTypes.generated.h"
10
12
13//@TODO: Document
14UENUM()
16{
17 enum Type : int
18 {
21 };
22}
23
24UENUM()
34
35USTRUCT(BlueprintType)
37{
39
40
41 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
42 FVector Location;
43
45 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
47
49 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
50 float FOV;
51
54 float DesiredFOV;
55
57 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Camera)
58 float FirstPersonFOV;
59
61 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Camera)
62 float FirstPersonScale;
63
65 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
66 float OrthoWidth;
67
69 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
70 bool bAutoCalculateOrthoPlanes;
71
73 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Camera)
74 float AutoPlaneShift;
75
77 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Camera)
78 bool bUpdateOrthoPlanes;
79
81 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Camera)
82 bool bUseCameraHeightAsViewTarget;
83
85 UPROPERTY(Interp, EditAnywhere, BlueprintReadWrite, Category=Camera)
86 float OrthoNearClipPlane;
87
89 UPROPERTY(Interp, EditAnywhere, BlueprintReadWrite, Category=Camera)
90 float OrthoFarClipPlane;
91
93 UPROPERTY(Interp, EditAnywhere, BlueprintReadWrite, Category=Camera)
94 float PerspectiveNearClipPlane;
95
96 // Aspect Ratio (Width/Height)
97 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
98 float AspectRatio;
99
100 // Aspect ratio axis constraint override
101 TOptional<EAspectRatioAxisConstraint> AspectRatioAxisConstraint;
102
103 // If bConstrainAspectRatio is true, black bars will be added if the destination view has a different aspect ratio than this camera requested.
104 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
105 uint32 bConstrainAspectRatio:1;
106
107 // If bUseFirstPersonParameters is true, FirstPersonFOV and FirstPersonScale should be applied to primitives tagged as "IsFirstPerson".
108 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Camera)
109 uint32 bUseFirstPersonParameters : 1;
110
111 // If true, account for the field of view angle when computing which level of detail to use for meshes.
112 UPROPERTY(EditAnywhere, AdvancedDisplay, BlueprintReadWrite, Category=CameraSettings)
113 uint32 bUseFieldOfViewForLOD:1;
114
115 // The type of camera
116 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
117 TEnumAsByte<ECameraProjectionMode::Type> ProjectionMode;
118
120 UPROPERTY(BlueprintReadWrite, Category = Camera)
121 float PostProcessBlendWeight;
122
124 UPROPERTY(BlueprintReadWrite, Category = Camera)
125 struct FPostProcessSettings PostProcessSettings;
126
128 UPROPERTY(Transient, VisibleInstanceOnly, BlueprintReadWrite, Category = Camera)
129 FVector2D OffCenterProjectionOffset;
130
132 TOptional<FTransform> PreviousViewTransform;
133
135 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
136 float OverscanResolutionFraction;
137
139 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera, meta=(ClampMin=0.0, UIMin=0.0, ClampMax=1.0, UIMax=1.0))
140 float CropFraction;
141
146 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera, meta=(ClampMin=0.0, UIMin=0.0, ClampMax=1.0, UIMax=1.0))
147 FVector4f AsymmetricCropFraction;
148
149private:
151 float Overscan;
152
157 FVector4f AsymmetricOverscan;
158
159 // Only used for Ortho camera auto plane calculations, tells the Near plane of the extra distance that needs to be added.
160 FVector CameraToViewTarget;
161
162public:
163
165 : Location(ForceInit)
167 , FOV(90.0f)
168 , DesiredFOV(90.0f)
169 , FirstPersonFOV(90.0f)
170 , FirstPersonScale(1.0f)
171 , OrthoWidth(512.0f)
172 , bAutoCalculateOrthoPlanes(true)
173 , AutoPlaneShift(0.0f)
174 , bUpdateOrthoPlanes(false)
175 , bUseCameraHeightAsViewTarget(false)
176 , OrthoNearClipPlane(0.0f)
177 , OrthoFarClipPlane(UE_OLD_WORLD_MAX)
178 , PerspectiveNearClipPlane(-1.0f)
179 , AspectRatio(1.33333333f)
180 , bConstrainAspectRatio(false)
181 , bUseFirstPersonParameters(false)
182 , bUseFieldOfViewForLOD(true)
183 , ProjectionMode(ECameraProjectionMode::Perspective)
184 , PostProcessBlendWeight(0.0f)
185 , OffCenterProjectionOffset(ForceInitToZero)
186 , OverscanResolutionFraction(1.0f)
187 , CropFraction(1.0f)
188 , AsymmetricCropFraction(FVector4f::One())
189 , Overscan(0.0f)
190 , AsymmetricOverscan(FVector4f::Zero())
191 , CameraToViewTarget(FVector::ZeroVector)
192 {
193 }
194
195 // Is this equivalent to the other one?
196 ENGINE_API bool Equals(const FMinimalViewInfo& OtherInfo) const;
197
198 // Blends view information
199 // Note: booleans are orred together, instead of blending
200 ENGINE_API void BlendViewInfo(FMinimalViewInfo& OtherInfo, float OtherWeight);
201
203 ENGINE_API void ApplyBlendWeight(const float& Weight);
204
206 ENGINE_API void AddWeightedViewInfo(const FMinimalViewInfo& OtherView, const float& Weight);
207
209 ENGINE_API FMatrix CalculateProjectionMatrix() const;
210
212 ENGINE_API static void CalculateProjectionMatrixGivenView(FMinimalViewInfo& ViewInfo, TEnumAsByte<enum EAspectRatioAxisConstraint> AspectRatioAxisConstraint, class FViewport* Viewport, struct FSceneViewProjectionData& InOutProjectionData);
214 ENGINE_API static void CalculateProjectionMatrixGivenViewRectangle(FMinimalViewInfo& ViewInfo, TEnumAsByte<enum EAspectRatioAxisConstraint> AspectRatioAxisConstraint, const FIntRect& ConstrainedViewRectangle, FSceneViewProjectionData& InOutProjectionData);
215
218 {
219 return PerspectiveNearClipPlane > 0.0f ? PerspectiveNearClipPlane : GNearClippingPlane;
220 }
221
223 ENGINE_API bool AutoCalculateOrthoPlanes(FSceneViewProjectionData& InOutProjectionData);
224
227 {
228 CameraToViewTarget = ActorLocation - Location;
229 }
230
239 ENGINE_API FVector TransformWorldToFirstPerson(const FVector& WorldPosition, bool bIgnoreFirstPersonScale) const;
240
245 ENGINE_API float CalculateFirstPersonFOVCorrectionFactor() const;
246
254 ENGINE_API void ApplyOverscan(float InOverscan, bool bScaleResolutionWithOverscan = false, bool bCropOverscan = false);
255
265 ENGINE_API void ApplyAsymmetricOverscan(const FVector4f& InAsymmetricOverscan, bool bScaleResolutionWithOverscan = false, bool bCropOverscan = false);
266
268 float GetOverscan() const { return Overscan; }
269
273 ENGINE_API void ClearOverscan();
274};
ECameraShakePlaySpace
Definition CameraTypes.h:26
float GNearClippingPlane
Definition CoreGlobals.cpp:260
@ ForceInitToZero
Definition CoreMiscDefines.h:156
@ ForceInit
Definition CoreMiscDefines.h:155
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_OLD_WORLD_MAX
Definition EngineDefines.h:37
EAspectRatioAxisConstraint
Definition EngineTypes.h:38
return true
Definition ExternalRpcRegistry.cpp:601
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
@ One
Definition PropertyPathHelpersTest.h:16
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition UnrealClient.h:412
Definition EnumAsByte.h:22
Definition CameraShakeSourceComponent.h:41
Definition CameraTypes.h:16
Type
Definition CameraTypes.h:18
@ false
Definition radaudio_common.h:23
Definition CameraTypes.h:37
float GetFinalPerspectiveNearClipPlane() const
Definition CameraTypes.h:217
float GetOverscan() const
Definition CameraTypes.h:268
void SetCameraToViewTarget(const FVector ActorLocation)
Definition CameraTypes.h:226
Definition Scene.h:693
Definition SceneView.h:51
Definition Optional.h:131