vault backup: 2023-07-18 16:02:58
This commit is contained in:
parent
5db87dd0e8
commit
9cb84acf4c
@ -11,28 +11,33 @@ rating: ⭐
|
|||||||
![[MultiDraw_OutlineMaterial.png]]
|
![[MultiDraw_OutlineMaterial.png]]
|
||||||
|
|
||||||
|
|
||||||
UE单位为cm,理论上范围为10cm~10000cm(1000m)。假设标准的角色身高为180cm(110~200cm变化比较轻微)定义一个标准数StandardCharacterHeight。
|
## ControlCurve
|
||||||
|
<iframe src="https://www.desmos.com/calculator/z9o3k0luyb?embed" width="500" height="500" style="border: 1px solid #ccc" frameborder=0></iframe>
|
||||||
|
UE单位为cm,理论上描边宽度控制范围为10cm~10000cm(1000m)。假设标准的角色身高为180cm(110~200cm变化比较轻微)并以此定义一个标准数StandardCharacterHeight,经过观察`10~ ControlWidthRangeMax`范围适合使用CurveTexture。而超过ControlWidthRangeMax = StandardCharacterHeight * 2的区域基本是一个线性区间,所以可以使用一个线性函数来控制。
|
||||||
|
|
||||||
经过观察`10~StandardCharacterHeight * 2`范围适合使用CurveTexture,超过StandardCharacterHeight * 2的区域基本是一个线性区间。
|
以下为原始数据:
|
||||||
{360 0.5} {10000 0.018}
|
|
||||||
|
|
||||||
斜率 k = 0.0005/1cm
|
| | | | | | | | |
|
||||||
|
| --- | --- | --- | ---- | --- | ---- | --- | ---- |
|
||||||
|
| x轴 | 15 | 20 | 25 | 30 | 40 | 60 | 100 |
|
||||||
|
| y轴 | -12 | -9 | -7.2 | -6 | -4.5 | -3 | -1.8 |
|
||||||
|
|
||||||
|
经过重映射后:
|
||||||
|
|
||||||
|
| | | | | | | | |
|
||||||
|
| --- | ----- | ---- | ---- | ------ | ----- | ------- | ---- |
|
||||||
|
| x轴 | 0.15 | 0.2 | 0.25 | 0.3 | 0.4 | 0.6 | 1 |
|
||||||
|
| y轴 | 0.667 | 0.75 | 0.8 | 0.8333 | 0.875 | 0.91666 | 0.95 |
|
||||||
|
|
||||||
x轴 10=>0 , 180 => 1
|
考虑需要让描边变得平滑以及让效果更好的考虑,所以以此为基础数据进行了调节(平移曲线并且调整了几个点),以下去本人设置的曲线:![[MultiDraw_OutlineCurve.png|800]]
|
||||||
-18=0 , -0.018
|
|
||||||
|
|
||||||
15 20 25 30 40 60 100
|
### 线性函数斜率k的计算
|
||||||
-12 -9 -7.2 -6 -4.5 -3 -1.8
|
取得ControlWidthRangeMax上一点(360 0.5)与最大范围x=10000的一点(10000 0.018),即可取得斜率 k = 0.0005/1cm。
|
||||||
|
|
||||||
|
实际使用0.0005的效果不佳,经过调整最终斜率使用0.002。
|
||||||
|
|
||||||
0.33 0.25 0.2 0.1666 0.125 0.08333 0.05
|
### Remap
|
||||||
0.667 0.75 0.8 0.83334 0.875 0.91666 0.95
|
```c++
|
||||||
|
|
||||||
|
|
||||||
最终斜率使用0.002
|
|
||||||
|
|
||||||
half invLerp(half from, half to, half value)
|
half invLerp(half from, half to, half value)
|
||||||
{
|
{
|
||||||
return (value - from) / (to - from);
|
return (value - from) / (to - from);
|
||||||
@ -47,8 +52,4 @@ half remap(half origFrom, half origTo, half targetFrom, half targetTo, half valu
|
|||||||
half rel = invLerp(origFrom, origTo, value);
|
half rel = invLerp(origFrom, origTo, value);
|
||||||
return lerp(targetFrom, targetTo, rel);
|
return lerp(targetFrom, targetTo, rel);
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
以下去本人设置的曲线:![[MultiDraw_OutlineCurve.png]]]
|
|
Loading…
x
Reference in New Issue
Block a user