与虚拟世界进行交互MATLAB
设置节点的值
的生命周期vrworld
对象可以设置新值为所有可用的虚拟世界节点及其领域使用vrnode
对象的方法。通过这种方式,您可以改变和控制自由度在MATLAB的虚拟世界®环境。
一个类型的对象vrworld
包含节点命名在虚拟世界中使用DEF 3 d文件声明。这些节点的类型vrnode
。有关更多信息,请参见vrworld
和vrnode
功能。
你打开后vrworld
对象,你可以得到一个可用的列表节点在虚拟世界中。这个过程使用vrworld
对象myworld
和虚拟世界vrmount.x3d
作为一个例子。创建myworld
,请参阅创建vrworld对象为一个虚拟的世界。
在MATLAB命令窗口中,键入
节点(myworld);
MATLAB命令窗口显示的列表
vrnode
对象及其字段的访问万博1manbetx®3 d动画™软件。隧道(变换)(我的第一个虚拟世界)路(形状)(我的第一个虚拟世界)桥(形状)(我的第一个虚拟世界)河(形状)(我的第一个虚拟世界)ElevApp(外观)(我的第一个虚拟世界)运河(形状)(我的第一个虚拟世界)木(集团)(我的第一个虚拟世界)Tree1(集团)(我的第一个虚拟世界)轮(形状)(我的第一个虚拟世界)汽车(变换)(我的第一个虚拟世界)VPfollow(观点)(我的第一个虚拟世界)Camera_car(变换)(我的第一个虚拟世界)View1(观点)(我的第一个虚拟世界)
类型
mynodes =得到(myworld,“节点”)
MATLAB软件创建的数组
vrnode
节点和显示对象对应于虚拟世界mynodes = vrnode对象:13-by-1隧道(变换)(我的第一个虚拟世界)路(形状)(我的第一个虚拟世界)桥(形状)(我的第一个虚拟世界)河(形状)(我的第一个虚拟世界)ElevApp(外观)(我的第一个虚拟世界)运河(形状)(我的第一个虚拟世界)木(集团)(我的第一个虚拟世界)Tree1(集团)(我的第一个虚拟世界)轮(形状)(我的第一个虚拟世界)汽车(变换)(我的第一个虚拟世界)VPfollow(观点)(我的第一个虚拟世界)Camera_car(变换)(我的第一个虚拟世界)View1(观点)(我的第一个虚拟世界)
类型
谁
MATLAB命令窗口显示的消息
类答1 x1 132 vrfigure对象名称大小字节mynodes 13 x1 3564 vrnode对象myworld 1 x1 132 vrworld对象
现在你可以得到节点特点和某些节点属性设置新值。例如,您可以改变汽车的位置使用
汽车
,这是第四节点在虚拟世界中。访问的字段
汽车
节点通过输入字段(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)。类型
视图(myworld)
默认浏览器打开,显示了虚拟世界
vrmount.x3d
。将MATLAB窗口和浏览器窗口并排所以你可以查看这两个在同一时间。在MATLAB命令窗口中,键入
myworld.Automobile。翻译= [15 0.25 20];
MATLAB集的新职位
汽车
节点。你可以观察到车重新定位在虚拟世界浏览器窗口。
你可以改变节点字段列出使用的功能vrnode / setfield
。
请注意
点符号是访问节点的首选方法。
使用MATLAB读取传感器的值
读(可读价值领域exposedField
或eventOut
),第一场的同步vrnode /同步
方法。同步后,每次改变字段的场景中,字段值更新主机。然后,您可以读取的字段的值vrnode / getfield
方法或直接访问字段值使用点符号。
的虚拟场景磁悬浮模型的例子,maglev.x3d
,包含一个PlaneSensor (DEF
的名字“Grab_Sensor”
)。PlaneSensor连着球几何注册试图将球向上或向下移动时使用鼠标抓它。例子使用了传感器领域minPosition
和maxPosition
限制在其他方向运动。您可以使用传感器的输出翻译领域的新选点球位置控制器。你可以阅读传感器输出值到一个MATLAB变量定位点。
创建vrworld对象和开放的世界。
wh = vrworld (“maglev.x3d”);打开(wh);
节点处理。
nh = vrnode (wh,“Grab_Sensor”);
同步翻译领域。
同步(nh,“翻译”,“上”);
阅读同步字段值,使用这三个选择:
选点= getfield (nh,“翻译”);选点= nh.translation;选点= wh.Grab_Sensor.translation;
全球坐标旋转和翻译
旋转和转换值变换
对象在当地指定坐标,相对于对象的父对象。万博1manbetx仿真软件3 d动画提供了两个扩展全球坐标旋转和转换值转化为:rotation_abs
和translation_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