UE4 LOD Screen Size
Screen Size 直白翻译就是屏幕大小,在UE4中常用于控制LOD的加载。
计算屏幕大小
/**
* Computes the screen size of a given sphere bounds in the given view.
* The screen size is the projected diameter of the bounding sphere of the model.
* i.e. 0.5 means half the screen's maximum dimension.
* @param BoundsOrigin - Origin of the bounds in world space
* @param SphereRadius - Radius of the sphere to use to calculate screen coverage
* @param ViewOrigin - The origin of the view to calculate the display factor for
* @param ProjMatrix - The projection matrix used to scale screen size bounds
* @return float - The screen size calculated
*/
float ComputeBoundsScreenSize(const FVector4& BoundsOrigin, const float SphereRadius, const FVector4& ViewOrigin, const FMatrix& ProjMatrix)
{
const float Dist = FVector::Dist(BoundsOrigin, ViewOrigin);
// Get projection multiple accounting for view scaling.
const float ScreenMultiple = FMath::Max(0.5f * ProjMatrix.M[0][0], 0.5f * ProjMatrix.M[1][1]);
// Calculate screen-space projected radius
const float ScreenRadius = ScreenMultiple * SphereRadius / FMath::Max(1.0f, Dist);
// For clarity, we end up comparing the diameter
return ScreenRadius * 2.0f;
}
测试场景