总结2

梦想游戏人
目录:
项目反思

1… 项目技术选型要准确,避免很麻烦的坑,评估的时候最好弄个评估报告之类的,来数据分析,不要仅凭经验。

2…给策划用的editor,至少要功能准确,易用,不然很容易返工 耗时间

评估报告

基本公式: s=vt,v=at,s=a*a*t

………….

如果加速度是2的话 那么1米将会插入2000个点

4公里的赛道将会 8百万个点 340 MB 内存 如果加速度是5的话 1米将会插入 780个点

4KM赛道 3百万个点 消耗 155MB 内存

如果加速度是5的话 1米将会插入 780个点

4KM赛道 3百万个点 消耗 155MB 内存

——以下是优化方案

如果起点速度是36 km/h的话 最小单位是1米7个点,

内存消耗1.35 MB ,2.8万个点

问题1:如果插入的点数不够多,那么会导致速度变化所带来的位置变化不够准确。速度变化不是平滑曲线,会变成阶梯形状的二次方程, 严重的情况下会抖动得厉害。

问题1的量化分析:最小变化速度 加入是1km/h,一次变化量是0.2777 m/s

每个帧数是0.0044米, 原速度是0.16米没帧数 0.16/0.0044 是原来的36倍,因此插入的点数至少要是36倍 变为 252*4000 100万个点 内存消耗 由1.35变为46MB

结论,优化方案是在起步的时候 速度加到36km/h 才使用bezier ,并且速度变化是1km/h 为单位

4km的路程,每条赛道内存消耗46mb,该方案未考虑计算耗时,因为这个可以在加载场景时初始化

百万级的插值点,float精度带来的误差可能会很大

针对问题1的优化方案2

不对采样点做计算 而是每个采样点中vector线性插值计算 这种情况损失 曲线采样点的精度 采用线性插值,这种优化是针对上面速度变化量的计算 每个采样点之间不用原来的曲线插值,而用线性插值,再次损失 采样的 精度 来换取性能,内存消耗大大减少

具体在下面

曲线间平滑计算方法

Unity曲线编辑器和bezier曲线插值

Scroll Up