|
本帖最后由 shshiheng 于 2015-11-19 12:20 编辑
我在做一个导弹的飞行仿真,做了两个程序,一个是动力学计算,一个是OSG视景显示,两个程序通过udp通信,动力学程序发送实时导弹位置给OSG程序,OSG程序把实时位置渲染出来。
现在遇到的问题是,导弹尾焰效果在静态时已经正确加载,而动态时,由于我传输的点是非连续的,导弹从第1次的位置跳到第2次的位置时,尾焰无法及时跟上导致两点之间出现一条拉的很长的尾焰。比如说:OSG第一次收到导弹位置在(0,0,0)点,第二次收到位置在(0,0,100)点,而尾焰的长度假设只有1,那么导弹位置从(0,0,0)跳到(0,0,100)之后,尾焰会从(0,0,0)到(0,0,100)拉一条很长的红线。
而且,当跳跃位置过远时,程序会直接卡崩中断:winOSG.exe 中的 0x775015ee 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x000e62a8 处的 std::bad_alloc。
想请问有没有合适的办法让尾焰能实时跟住导弹,即导弹渲染在新位置的时候,其子节点的粒子系统直接渲染在新位置。
2015.11.19补充:
可能我没太说清楚,我截了几张图
上图是添加了尾焰效果后,导弹静止不动时的情况,尾焰效果挺好的。
但是当导弹向上平移一个比较长的距离时,尾焰跟不过去,拉成一条很长的线。
当这个距离特别大时,程序就崩溃了 |
|