Isectors 是碰撞检测,一些碰撞检测有大量复杂的运算,可以支持用户用地线夹将运动模式固定在地面。还有一些相对简单的,包含几行代码的运算,用来区分目标。根据检测类型的不同,用户可以在C++程序中编写适当的反应程序,如在墙体前停车,但现在不需要。
用户可以从以下内容选择运算:
● Tripod——三条聚集数据的直立线段,指引使用者到指到目标。Tripod 用于在水平地面上。
● Bump——六条线段,沿X,Y,Z轴正负方向聚集爆炸。
● LOS——单根视线线段,沿Y轴向辐射。
● HAT——单根线段,沿Z轴辐射,它计算地形上的高度。
● XYZPR——计算斜度和转向。
● ZPR——计算爆炸点Z轴方向的斜度和转向。
● Z——计算Z轴上的爆炸点。
接下来,将添加一个Isectortripod 用地线夹将汽车固定在地形上,避免汽车钻到地下去。然后给汽车添加一个bump 检测碰撞,检测汽车碰撞到地面上的物体。下面将使用LynX Prime添加这两个碰撞检测运算。
1.添加一个Tripod 检测
添加之前,必须创建一个实例用地夹线通过Isector 来固定一个运动模式。
Step 1 打开前面建立的VP3_2_51.acf 文件,单击LynX Prime 菜单栏中的文件,选择另存为(Save as),弹出对话框,将对话框中的目录改为建立好的C:\VegaPrimePractice,将ACF文件重命名为VP3_2_6.acf。
Step 2 在myMotion的用户操作区中,点击创建新实例的键这个按键位于Next Position Strategy 列表旁)。
Step 3 在创建新实例对话框中,选择GroundClamp,点击Ok。
Step 4 点前进键显示myGoundClamp 用户操作区。
Step 5 点击Isector 列表旁边的创建新实例键。
Step 6 在创建新实例的对话框中选择IsectorTripod,Ground Clamp 实例将会使用这个功能来计算碰撞信息,最终运动方法将接触信息反馈给汽车,如图3.2.9所示。
图3.2.9 建立地面检测
Step 7 点击前进键显示myIsector 用户操作区。
Step 8 在API 区域将mylsector 名称改为tripodIsector。
Step 9 保存设置。
2.设置Tripod 检测
需要将地形作为tripod 检测的目标,tripodIsector 将用地形来寻找接触,并将信息传递给所有相关的运动模式。
Step 1 在tripodIsector 用户操作区,在Target列表中选择地形物体(terrain)作为目标。
Step 2 设置选择Render Isectort 复选框用于isector 显示。如果Isector 找到地形目标,线条显示为绿色,否则线条显示为红色。
Step 3 运行Active Preview,将能在屏幕上发现从汽车发出三条绿垂直线,如图3.2.10所示。
Step 4 设置Tripod 检测的宽度为5,长度为6,这样可以检测更大的接触面。宽度和长度的参数表示三根线彼此之间的距离。重新设置后,三根线之间的距离会拉大,将能看到地面上三根直线间的三角形联线。但这个三角形不处理任何碰撞信息,而是由这三根垂线处理所有的工作。(www.daowen.com)
图3.2.10 预览地面检测
Step 5 现在,向前驾驭汽车。
Step 6 现在请大胆尝试,开始练习驾驭技术。
Step 7 将汽车驶离数据库区,当离开仿真世界的边缘时,汽车发出的三根线呈红色,因为这时他们无法再检测到与地面目标的接触。
Step 8 保存VP3_2_6.acf,退出Active Preview。
3.添加Bump 检测
如果汽车面前有房屋时,Bump 检测就会检验到。但是,如果在LynX Prime 定义碰撞检测,那么它无法阻止汽车穿越房屋。必须在API 中定义这个动作,这部分内容将不在本节学习范围之内。随后,可以在LynX Prime 中添加汽车与房屋相撞时的效果。
Step 1 打开前面建立的VP3_2_6.acf 文件,单击LynX Prime 菜单栏中的文件,选择另存为(Save as),弹出对话框,将对话框中的目录改为建立好的C:\VegaPrimePractice,将ACF文件重命名为VP3_2_61.acf。
Step 2 在工具条中点击创建实例键。
Step 3 在对话框中选择IsectorBump。
Step 4 点击Create。
Step 5 将myIsector 改名为bumpIsector。
Step 6 将碰撞的宽、长和高的参数设置为3,因为默认设置值太小。
Step 7 在Target 列表中选择房屋(farmhouse)为目标。接触检测将根据边靠边标准检测与房屋的接触。
Step 8 打开Isector Mask 旁的浏览按键,打开Bitmask Editor,Bitmask 将会把指导地形目标(将在后面的步骤中建立这些地形目标)从一些检测中排除出去,在检测最新过程中节约时间。
Step 9 除了Bit1 之外,清除所有的Bit。Bitmask 将会显示为0000001。
Step 10 点击Ok,保存Bitmask。
Step 11 在Position Reference 列表中选择汽车(hummer)目标,碰撞检测自己就会与汽车建立联接。
Step 12 在用户操作区中选择Render Isector 复选框,以便在Active Preview 中查看线段。
Step 13 点击Owning Isector Service 列表旁的创建实例键,并且选择IsectorServiceInline。在线服务将会为每个结构提供最新的相关检测,这样就把接触数据储存起来为以后使用做准备。处理接触信息的流程与处理应用的流程一样。
不必给Tripod 检测添加在线服务,因为三角检测不直接联接于运动模式,而运动模式会处理自己最新数据。但是,接触测试不与地夹线或运动模式联接。三角检测本身只确认它的位置与汽车直接相关。在线服务将确认每个结构的检测是最新的,这样才能储存数据。
4.更改观察者位置
如果不喜欢在汽车后面驾驭汽车,可以将Transform 添加在汽车内。
Step 1 在hummerTransform 用户操作区,将Transform的位置改为(-9,-13.2,2.93)。
Step 2 运行Active Preview 来检测新的设置,觉得驾驭变得容易了还是更难了?如果喜欢这个设置,就把它保存起来,如果不喜欢,可将设置改回原来的值(0,-30,5)。
Step 3 保存设置,退出Active Preview。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。