Vega Prime入门教程13.06:碰撞检测
Vega Prime入门教程索引:Vega Prime入门教程索引
Isectors是接触检测,一些接触检测有大量复杂的运算,可以支持你用地线夹将运动模式固定在地面。还有一些相对简单的,包含几行代码行的运算,用来区分目标。根据检测类型的不同,您可以在C++程序中编写适当的反应程序,如在墙体前停车。
你可以从以下内容选择运算:
- Tripod - 三条聚集数据的直立线段,指引使用t者到指到目标。Tripod 用于在水平地面上。
- Bump-六条线段,沿X,Y,Z轴正负方向聚集爆炸。
- LOS-单根视线线段,沿Y轴向辐射。它聚集您面前的数据。
- HAT-单根线段,沿Z轴辐射,它计算地形上的高度。
- XYZPR-计算及斜度和转向
- ZPR-计算爆炸点的Z轴方向的斜度和转向
- Z-计算Z轴上的爆炸点。
在我们指南中,我们将添加一个Isector来用地线夹将汽车固定在地形上,然后给汽车添加一个bump检测爆炸。我们将使用LynX Prime添加这两个运算。
接触检测
添加之前,你必须创建一个实例来用地夹线通过Isector来固定一个运动模式。
在myMotion的用户操作区中,点击创建新实例的键,这个按键在Next Position Strategy列表旁边。
在创建新实例对话框中,选择GroundClamp,点击Ok。
效果如图
点前进键显示myGoundClamp用户操作区。
点击lsector列表旁边的创建新实例键,在创建新实例的对话框中选择IsectorTripod,Ground Clamp实例将会使用这个功能来计算爆炸信息。最终运动方法将接触信息反绩给汽车。
将myIsector重命名为tripodIsector。
我们需要将地形做为tripod检测的目标,tripodIsector将用地形来寻找接触,并将信息传递给所有相关的运动模式。
在tripodIsector用户操作区,在Target列表中选择地形物体作为目标。
设置选择Render Isector复选框用于Isector显示。如果isector找到地形目标,线条显示为绿色,否则线条显示为红色。
预览效果
起重机发出三条绿线,表示起重机检测到了地面。
这个时候再次移动起重机,起重机不会再进入地形里面,而是在地面移动
设置tripod检测的宽度为10,长度为12,这样可以检测更大的接触面。宽度和长度的参数表示三根线彼此之间的距离。重新设置后,三根线的之间距离会拉大,您将能看到地面上三根直线间的三角形联线。但这个三角形不处理任何爆炸信息,而是由这三根垂线处理所有的工作。
当起重机驶离数据库区,当你离开仿真世界的边缘时,起重机发出的三根线呈红色,因为这时他们无法再检测到与地面目标的接触。
爆炸检测
如果汽车面前有农舍时,Bump检测就会检验到。
如果在Lynx prime定义碰撞检测,那么它无法阻止汽车穿越农舍。你必须在API 中定义这个动作,这部分将不在本文范围之内。随后,你要在Lynx prime中添加汽车与房屋相撞时的效果。
在工具条中点击创建实例键,在对话框中选择lsectorBump。
将myIsector改名为bumpIsector。将碰撞的宽,长和高的参数设置为10 ,因为默认设置值太小。
在Target列表中选择农舍为目标。接触检测将根据边靠边标准检测与农舍的接触。
打开lsector Mask旁的测览按键,打开Bitmask Editor,bitmask将会把指导地形目标(我们将在后面的指南中建立这些地形目标)从一些检测中排 除出去,在检测最新过程中节约时间。
除了Bit1之外,清除所有的的bit 。Bitmask将会显示为0000001。点击ok保存bitmask。
在position Reference列表中选择汽车目标,碰撞检测自己就会与汽车建立联接。
在用户操作区中选择Render lsector复选框,以便在Active preview中查看线段。
点击owning lsector service列表旁的创建实例键,
并且选择IsectorServiceInline 。
在线服务将会为每个结构提供最新的相关的检测,这样就把接触数据存贮起来为以后使用做准备。处理接触信息的流程与处理应用的流程一样。
我们不必给tripod检测添加在线服务,因为三角检测不直接联接于运动模式,而运动模式处理最新数据。但是,接触测试不与地夹线或运动模式联接。三角检测本身只确认它的位置与汽车直接相关。在线服务确认每个结构的检测是最新的,这样才能存贮数据。