主要内容

与虚拟世界进行交互MATLAB

设置节点的值

的生命周期vrworld对象可以设置新值为所有可用的虚拟世界节点及其领域使用vrnode对象的方法。通过这种方式,您可以改变和控制自由度在MATLAB的虚拟世界®环境。

一个类型的对象vrworld包含节点命名在虚拟世界中使用DEF 3 d文件声明。这些节点的类型vrnode。有关更多信息,请参见vrworldvrnode功能。

你打开后vrworld对象,你可以得到一个可用的列表节点在虚拟世界中。这个过程使用vrworld对象myworld和虚拟世界vrmount.x3d作为一个例子。创建myworld,请参阅创建vrworld对象为一个虚拟的世界

  1. 在MATLAB命令窗口中,键入

    节点(myworld);

    MATLAB命令窗口显示的列表vrnode对象及其字段的访问万博1manbetx®3 d动画™软件。

    隧道(变换)(我的第一个虚拟世界)路(形状)(我的第一个虚拟世界)桥(形状)(我的第一个虚拟世界)河(形状)(我的第一个虚拟世界)ElevApp(外观)(我的第一个虚拟世界)运河(形状)(我的第一个虚拟世界)木(集团)(我的第一个虚拟世界)Tree1(集团)(我的第一个虚拟世界)轮(形状)(我的第一个虚拟世界)汽车(变换)(我的第一个虚拟世界)VPfollow(观点)(我的第一个虚拟世界)Camera_car(变换)(我的第一个虚拟世界)View1(观点)(我的第一个虚拟世界)
  2. 类型

    mynodes =得到(myworld,“节点”)

    MATLAB软件创建的数组vrnode节点和显示对象对应于虚拟世界

    mynodes = vrnode对象:13-by-1隧道(变换)(我的第一个虚拟世界)路(形状)(我的第一个虚拟世界)桥(形状)(我的第一个虚拟世界)河(形状)(我的第一个虚拟世界)ElevApp(外观)(我的第一个虚拟世界)运河(形状)(我的第一个虚拟世界)木(集团)(我的第一个虚拟世界)Tree1(集团)(我的第一个虚拟世界)轮(形状)(我的第一个虚拟世界)汽车(变换)(我的第一个虚拟世界)VPfollow(观点)(我的第一个虚拟世界)Camera_car(变换)(我的第一个虚拟世界)View1(观点)(我的第一个虚拟世界)
  3. 类型

    MATLAB命令窗口显示的消息

    类答1 x1 132 vrfigure对象名称大小字节mynodes 13 x1 3564 vrnode对象myworld 1 x1 132 vrworld对象

    现在你可以得到节点特点和某些节点属性设置新值。例如,您可以改变汽车的位置使用汽车,这是第四节点在虚拟世界中。

  4. 访问的字段汽车节点通过输入

    字段(myworld.Automobile)

    字段(mynodes (10));

    MATLAB命令窗口中显示的信息汽车节点。

    字段访问类型同步- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - addChildren eventIn MFNode了removeChildren eventIn MFNode掉孩子exposedField MFNode偏离中心exposedField SFVec3f了旋转exposedField SFRotation剥落exposedField SFVec3f了scaleOrientation exposedField SFRotation了翻译exposedField SFVec3f bboxCenter球场SFVec3f bboxSize字段SFVec3f掉

    汽车节点的类型是变换。这个节点允许你改变通过改变其立场翻译字段值。从列表中,你可以看到翻译需要三个值,代表对象的坐标(x y z)。

  5. 类型

    视图(myworld)

    默认浏览器打开,显示了虚拟世界vrmount.x3d

  6. 将MATLAB窗口和浏览器窗口并排所以你可以查看这两个在同一时间。在MATLAB命令窗口中,键入

    myworld.Automobile。翻译= [15 0.25 20];

    MATLAB集的新职位汽车节点。你可以观察到车重新定位在虚拟世界浏览器窗口。

你可以改变节点字段列出使用的功能vrnode / setfield

请注意

点符号是访问节点的首选方法。

使用MATLAB读取传感器的值

读(可读价值领域exposedFieldeventOut),第一场的同步vrnode /同步方法。同步后,每次改变字段的场景中,字段值更新主机。然后,您可以读取的字段的值vrnode / getfield方法或直接访问字段值使用点符号。

的虚拟场景磁悬浮模型的例子,maglev.x3d,包含一个PlaneSensor (DEF的名字“Grab_Sensor”)。PlaneSensor连着球几何注册试图将球向上或向下移动时使用鼠标抓它。例子使用了传感器领域minPositionmaxPosition限制在其他方向运动。您可以使用传感器的输出翻译领域的新选点球位置控制器。你可以阅读传感器输出值到一个MATLAB变量定位点。

  1. 创建vrworld对象和开放的世界。

    wh = vrworld (“maglev.x3d”);打开(wh);
  2. 节点处理。

    nh = vrnode (wh,“Grab_Sensor”);
  3. 同步翻译领域。

    同步(nh,“翻译”,“上”);
  4. 阅读同步字段值,使用这三个选择:

    选点= getfield (nh,“翻译”);选点= nh.translation;选点= wh.Grab_Sensor.translation;

全球坐标旋转和翻译

旋转和转换值变换对象在当地指定坐标,相对于对象的父对象。万博1manbetx仿真软件3 d动画提供了两个扩展全球坐标旋转和转换值转化为:rotation_abstranslation_abs。访问这些全局坐标,使用点符号的平移或旋转,添加_abs字段名。这个例子展示了不同的局部和全局坐标转换:

w = vrview (“vrmanipul.x3d”);n = get (w,“节点”);n = w.Grip_Reference;n。翻译n.translation_abs
ans 0 ans = -3.0406 -3.0000 2.3334 -0.1000 = 0

另请参阅

功能

相关的话题