要基于虚拟世界中发生的用户动作或事件与模型的仿真进行交互,可以使用虚拟现实传感器。要想在虚拟世界中移动图形对象或根据用户动作或事件改变其外观,您可以:
定义传感器节点,该节点根据场景中的时间、导航、动作和距离变化生成事件和输出值TouchSensor
节点跟踪定点设备的位置和状态。当您指向所包含的几何体时,传感器会进行检测TouchSensor
节点父组。看见向虚拟世界添加传感器。
添加虚拟现实源阻止并选择要读取的传感器属性。请参阅使用MATLAB读取传感器值。
使用打印机读取传感器值虚拟现实源块,其输出可用于驱动模拟行为。
您可以在Simulink中设置接口万博1manbetx®虚拟现实场景中传感器的方框图。您还可以通过编程将信号从虚拟世界输入到仿真模型中。
虚拟现实场景可以包含传感器,传感器是根据场景中的时间、导航、动作和距离变化生成事件和输出值的节点。这些节点为虚拟世界添加了交互性。虚拟世界传感器类似于真实世界传感器,如超声波、激光雷达和触摸传感器。你可以用万博1manbetx仿真软件3 d动画™功能将传感器场值读取到仿真模型中,并基于用户与虚拟场景的交互进行控制仿真。
使用传感器的方法包括:
使用来自虚拟世界的传感器数据来控制仿真。
提供虚拟世界中用户导航和交互以及模型模拟之间的交互。
让模拟对虚拟世界事件(如时间刻度或脚本输出)做出反应。
使用来自虚拟世界的静态信息,例如盒子的大小,来控制模拟。
您可以使用碰撞检测来精确建模现实世界中物体的物理约束,在现实世界中,通常两个物体不能同时在同一地点。你可以使用碰撞检测节点输出:
更改其他虚拟世界节点的状态。
应用MATLAB算法处理碰撞数据。
驱动Simu万博1manbetxlink模型。
例如,可以使用几何传感器进行机器人建模。有关更多信息,请参见检测物体碰撞。
你可以在场景中定义这些传感器。
传感器 | 描述 |
---|---|
CylinderSensor |
将指针运动(例如,鼠标)映射到与对象对齐的不可见圆柱体上的旋转y局部坐标系的-轴。 |
PlaneSensor |
将指向设备的运动映射为平面上平行的二维平移z=0局部坐标系的平面。 |
ProximitySensor |
当查看器进入、退出和在空间区域内移动时生成事件(由框定义) |
SphereSensor |
将指向设备的运动映射为围绕局部坐标系原点的球面旋转 |
TimeSensor |
随着时间的推移产生事件 |
TouchSensor |
跟踪定点设备的位置和状态,并检测何时指向所包含的几何体TouchSensor 节点父组。 |
VisibilitySensor |
当你在世界中导航时,检测一个矩形框的可见性变化。 |
PointPickSensor |
使用点云来检测哪些点在碰撞几何图形内部 |
LinePickSensor |
使用射线扇或其他线集来检测到碰撞几何图形的距离 |
PrimitivePickSensor |
检测碰撞几何体的基本几何体(如圆锥体、球体或长方体) |
你可以通过以下方法从虚拟世界的传感器节点读取值:
你可以使用虚拟现实源块,用于在虚拟世界中导航的用户与Simulink模型的仿真之间进行交互。万博1manbetx的虚拟现实源块注册用户与虚拟世界的交互,并将该数据传递给模型以影响模型的仿真。的虚拟现实源块从“块参数”对话框中指定的虚拟世界字段中读取值,并将其输入到模型中。
例如,您可以在虚拟世界中指定设定值(期望的位置),以便用户可以交互地指定虚拟世界对象的位置。然后模拟响应对象的位置变化。的虚拟现实源块可以从虚拟世界读入模型事件,例如时间刻度或脚本的输出虚拟现实源块还可以读入有关虚拟世界的模型静态信息(例如,虚拟世界3D文件中定义的长方体大小)。
要在Simulink模型中使用设定值,可以编写S函数或万博1manbetxMATLAB函数块,周期性地读取传感器输出。这个例子使用了s函数。
右键单击虚拟现实传感器读取器块磁悬浮模型(vrmaglev
)模型和选择面具>看下面具。
的vrmaglev/VR传感器读卡器
模型显示。此模型包含弗拉米耶
块,这是一个S功能块。VREXE S功能同步传感器中的传感器字段设置
方法,并定期将其值读入mdlUpdate
方法
检查S函数参数。右击弗拉米耶
并选择S函数参数。
掩码中定义的参数提供了示例时间、虚拟世界以及要读取的节点和字段。
关于VRS函数的注记
不是设置自己的块输出,而是弗拉米耶
s函数设置相邻的Constant块的值价值持有人
。此设置使虚拟现实传感器读取器块兼容万博1manbetxSimulink编码器™代码生成以便模型可以运行万博1manbetxSimulink编码器目标。
用户操作(使用鼠标将球移动到所需位置)之间的信号循环通过关联的Simulink模型闭合万博1manbetxvrmaglev
. 抓取球并将其移动到新位置仅在模型正在运行且模型将蓝色选择方法开关设置为虚拟现实传感器信号路径时有效。要仅使用虚拟场景体验PlaneSensor的行为,请保存maglev.wrl
使用新名称创建文件。删除注释符号(#)以启用此文件的最后一行。这些操作将激活传感器输出到球平移的直接路由。然后您可以使用新创建的场景而不是原始场景进行实验maglev.wrl
世界
路线抓取\u传感器。平移\u更改为Ball.translation
可以使用此方法从该类型的所有节点字段输入信息exposedField
或eventOut
,而不仅仅是一个传感器eventOut
领域看见VRML数据类类型有关虚拟世界数据类类型的详细信息。
对于类的字段exposedField
,您可以使用后缀为,_改变
。例如,翻译
和translation_changed
是用于请求的翻译字段值的备用名称Grab_Sensor
节点。