flex 初始化模型问题

游戏编程、以及交互式物理仿真中,有时候需要在初始化结束后,游戏开始的第一帧(只有第一帧)实行一些逻辑
这个时候稍不留神就可能出现逻辑错误,记录如下:

实例 Nvidia flex

flex 初始化时会将模型转化为粒子,之后每一帧根据外力更新。
这意味着,如果想更新模型的位置,只能将模型转换后的粒子统一加上offset。

那么问题来了,怎么对模型的部分点进行移动?(例如给绳子两端增加位移)

这种情况下要等初始化加载后,也就是update的第一帧去处理
原因:初始化中处理的话相当于传入的模型发生了变化(绳子两端距离旁边的点位置过远),传给flex后结果会很奇怪。

简单地画了一个图,如果要把1和5号粒子移动到P1和P2位置上,初始化时由于改变了粒子的位置,相当于改变了模型,也就是model2。
update第一帧改变时模型的位置,粒子间的约束及簇均已确定,把粒子拖拽到P1,P2处,是对原始模型的拖拽。

Update易错

由于Update是一直执行,因此只更新第一帧的话要给一个条件判断,执行一次就不再执行。
我就是忽略了这一点,在update后面更改了粒子的位置,但始终无法正确执行。然后发现Update中每帧都给了一个初始值,因此产生错误。
我觉得这一块还蛮容易出错的,特意发帖记录下来。

发布了17 篇原创文章 · 获赞 7 · 访问量 948

猜你喜欢

转载自blog.csdn.net/qq_29639589/article/details/101724651