Vega Prime教程:碰撞检测
来源:第三维度
添加碰撞检测
Isectors是接触检测,一些接触检测有大量复杂的运算,可以支持你用地线夹将运动模式固定在地面。还有一些相对简单的,包含几行代码行的运算,用来区分目标。根据检测类型的不同,您可以在C++程序中编写适当的反应程序,如在墙体前停车。
你可以从以下内容选择运算:
· Tripod – 三条聚集数据的直立线段,指引使用t者到指到目标。Tripod用于在水平地面上。
· Bump-六条线段,沿X,Y,Z轴正负方向聚集爆炸。
· LOS-单根视线线段,沿Y轴向辐射。它聚集您面前的数据。
· HAT-单根线段,沿Z轴辐射,它计算地形上的高度。
· XYZPR-计算及斜度和转向
· ZPR-计算爆炸点的Z轴方向的斜度和转向
· Z-计算Z轴上的爆炸点。
在我们指南中,我们将添加一个Isector来用地线夹将汽车固定在地形上,然后给汽车添加一个bump检测爆炸。我们将使用LynX Prime添加这两个运算。
添加一个Tripod检测
添加之前,你必须创建一个实例来用地夹线通过Isector来固定一个运动模式。
Step 1 在myMotion的用户操作区中,点击创建新实例的键,这个按键在Next Position Strategy列表旁边。
Step 2 在创建新实例对话框中,选择GroundClamp,点击Ok。
Step 3 点前进键显示myGoundClamp用户操作区。
Step 4 点击Isector列表旁边的创建新实例键。
Step 5 在创建新实例的对话框中选择IsectorTripod,Ground Clamp实例将会使用这个功能来计算爆炸信息。最终运动方法将接触信息反馈给汽车。
Step 6 点击前进键显示myisector用户操作区
Step 7 将mylsector改名称为tripodIsector.
Step 8 保存。
设置Tripod检测
我们需要将地形做为tripod检测的目标,tripodIsector将用地形来寻找接触,并将信息传递给所有相关的运动模式。
Step 1 在tripodIsector用户操作区,在Target列表中选择地形物体作为目标。
Step 2 设置选择Render Isectort复选框用于isector显示。如果isector找到地形目标,线条显示为绿色,否则线条显示为红色。
Step 3 运行Active Preview,你将能在屏幕上发现从汽车发出三条绿垂直线。
Step 4 设置tripod检测的宽度为10,长度为12,这样可以检测更大的接触面。宽度和长度的参数表示三根线彼此之间的距离。重新设置后,三根线的之间距离会拉大,您将能看到地面上三根直线间的三角形联线。但这个三角形不处理任何爆炸信息,而是由这三根垂线处理所有的工作。
Step 5 现在,沿湖边驾驭汽车。请注意你现在不会再觉得汽车在向下陷。当心,别开到湖里去。
Step 6 现在请开到马路上,开始练习您的驾驭技术。
Step 7 将汽车驶离数据库区,当你离开仿真世界的边缘时,汽车发出的三根线呈红色,因为这时他们无法再检测到与地面目标的接触。
Step 8 退出Active Preview,别忘了存盘。
添加Bump检测
如果汽车面前有农舍时,Bump检测就会检验到。
注意:
如果在LynX Prime定义碰撞检测,那么它无法阻止汽车穿越农舍。你必须在API中定义这个动作,这部分将不在本文范围之内。随后,你要在LynX Prime中添加汽车与房屋相撞时的效果。
Step 1 在工具条中点击创建实例键。
Step 2 在对话框中选择IsectiorBump。
Step 3 点击Create。
Step 4 将myIsector改名为bumpIsector。
Step 5 将碰撞的宽,长和高的参数设置为10,因为默认设置值太小。
Step 6 在Target列表中选择农舍为目标。接触检测将根据边靠边标准检测与农舍的接触。
Step 7 打开Isector Mask旁的浏览按键打开Bitmask Editor,bitmask将会把指导地形目标(我们将在后面的指南中建立这些地形目标)从一些检测中排除出去,在检测最新过程中节约时间。
Step 8 除了Bit1之外,清除所有的的bit。Bitmask将会显示为0000001。
Step 9 点击ok保存bitmask。
Step 10 在Position Reference列表中选择汽车目标,碰撞检测自己就会与汽车建立联接。
Step 11 在用户操作区中选择Render Isector复选框,以便在Active Preview中查看线段。
Step 12 点击Owning Isector Service列表旁的创建实例键,并且选择IsectorServiceInline。在线服务将会为每个结构提供最新的相关的检测,这样就把接触数据存贮起来为以后使用做准备。处理接触信息的流程与处理应用的流程一样。
注意:
我们不必给tripod检测添加在线服务,因为三角检测不直接联接于运动模式,而运动模式处理最新数据。但是,接触测试不与地夹线或运动模式联接。三角检测本身只确认它的位置与汽车直接相关。在线服务确认每个结构的检测是最新的,这样才能存贮数据。
意外收获!
如果您不喜欢在汽车后面驾驭汽车,你可以将transform添加在汽车内。
Step 1 在hummerTransform用户操作区,将transform的位置改为(-9,-13.2,2.93)。
Step 2 运行Active Preview来检测新的设置,你觉得驾驭变得容易了不是更难了?如果你喜欢这个设置,就把它保存起来,如果不,你可将设置改回原来的值(0,-30,5)。
Step 3 退出Active Preview,退出前请先保存。