内容纲要
1、作用力、力矩与外部交互非常丰富
问题:对于设计者来说不是很友好,数据比较抽象,不知道调参数会发生什么事情
2、力、力矩比较不直观,所有使用velocity作用于赛车
问题:每帧设置速度,如果与外部有交互,会显示表现过去单调
3、决定简化物理模拟系统,去除一切不必要的模拟
如果需要复杂的行为,从layering simple system中实现
参数要转换为设计师看得懂的数据
参数要比较独立,减少相互影响
4、四轮的力去除,改成作用于质心的力。转向给转向加速度。
对于赛车和船都用同样的原理来处理
5、浮力的处理
浮力作用于质心,不产生旋转。旋转的方向是波浪的法线,用于处理船在波浪上旋转的情况
船的控制变得比较简单、参数更加可控
6、resting height of the vehicle.
高速的船,水下的调试要会小一些
7、允许在赛车物理基础上,上层叠加赛车动画
【思考】我们赛车落地时,悬挂弹性效果不明显
8、速度曲线,用reverse evaluation,根据当前速度反推当前所在的时间(二分法or查找表),再用时间累积获取下一次的速度
用delta v*m来换算成力,再作用于赛车。如果直接设置速度,可能与其它系统有冲突
9、主角车用shapecast,NPC和AI用rayCast
10、如果轮子的大小不合适,容易卡边缘和跳台,于是他们把轮子设计得挨着,这样就不会卡在跳台上了。

11、弹簧:分帧计算,否则不同帧率下有抖动
12、碰撞系统:
基础规则:
条件:如果碰撞速度、双方阵营、是否是AI之类的
优先级:
Must invole a vehicle:
Scope:作用域,有些碰撞是作用于全局的,或者全模式的,有些是局部的;有些是会影响yaw pitch,有些只影响yaw;有些是跑圈,有些是对抗
Bi-directional:碰撞是双向的,与顺序无关
13、阶段
Phase 1: Mid-simulateion:
Limited: 在碰撞前,改变双方的碰撞层级,或者质量等
想要造假没有碰撞,可以把速度设置成碰撞前的速度(当然,这样做可能会有连锁反应)
Predictive
这个阶段,只用预处理,不施加力进行实际影响
Phase 2: Post-solve
Unlimited
Reactive
Best match between body pairs:只用于一次,不作用多次
可施加各种力作影响
14、碰撞
符合条件,取最高优先级的条件 –> Reaction
15、复杂度:全局的、局部的各种layer rule,导致调试比较困难
灵活性:容易修复一些特定情况下的bug。
16、着陆预测
理想的做法:
到达空中时,预测可能会什么时候到达地面,到达地面哪里。
当前姿态、当前角速度、当前速度下,着陆会是什么姿态,然后算理想的姿态是什么。把delta rotation根据时间分布叠加上去,最终达到完美着陆效果。
!!但是,求解这个微分方程比较困难
简化cheat的版本: