diff --git a/03-UnrealEngine/Rendering/Material/使用Curve进行深度适配的Outline.md b/03-UnrealEngine/Rendering/Material/使用Curve进行深度适配的Outline.md index 42f74d9..357cf08 100644 --- a/03-UnrealEngine/Rendering/Material/使用Curve进行深度适配的Outline.md +++ b/03-UnrealEngine/Rendering/Material/使用Curve进行深度适配的Outline.md @@ -11,7 +11,7 @@ rating: ⭐ ![[MultiDraw_OutlineMaterial.png]] -## ControlCurve +# ControlCurve UE单位为cm,理论上描边宽度控制范围为10cm~10000cm(1000m)。假设标准的角色身高为180cm(110~200cm变化比较轻微)并以此定义一个标准数StandardCharacterHeight,经过观察`10~ ControlWidthRangeMax`范围适合使用CurveTexture。而超过ControlWidthRangeMax = StandardCharacterHeight * 2的区域基本是一个线性区间,所以可以使用一个线性函数来控制。 @@ -52,4 +52,20 @@ half remap(half origFrom, half origTo, half targetFrom, half targetTo, half valu half rel = invLerp(origFrom, origTo, value); return lerp(targetFrom, targetTo, rel); } -``` \ No newline at end of file +``` + +## FOV +首先确定一下摄像机的FOV范围,CineCamera 默认Current Focal Length 为35,Current Horizontal FOV为37.497356,材质Fov显示为0.6544528(弧度制);编辑器Camera 默认 FOV:90 材质FOV显示1.5707976(弧度制) +- CineCamera + - Current Horizontal FOV范围 1.375033 ~ 143.130096 + - 材质 FOV 范围 0.024~2.4 +- Camera + - FOV范围 5~170 + - 材质 FOV 范围 0.08~2.967 + +经过观察FOV<90需要使用曲线进行控制,大致和Depth曲线差不多,再调整一下就好。90 < FOV < 170 时OutlineWidth大致呈线性,所以大致计算出斜率k=3: + +| | | | | +| ------------ | --- | --- | --- | +| FOV | 90 | 130 | 170 | +| OutlineWidth | 1 | 3 | 8 | diff --git a/08-Assets/Images/ImageBag/ToonRendering/MultiDraw_OutlineMaterial.png b/08-Assets/Images/ImageBag/ToonRendering/MultiDraw_OutlineMaterial.png index cbe1226..d52e036 100644 Binary files a/08-Assets/Images/ImageBag/ToonRendering/MultiDraw_OutlineMaterial.png and b/08-Assets/Images/ImageBag/ToonRendering/MultiDraw_OutlineMaterial.png differ