目录
前言
微软官网上的MRTK入门教程个人觉得还是挺不错的,建议自己跟着原教程走一遍,做完之后应该就对MRTK有了大致的了解了。
这篇文章是我自己对于官网这个MRTK入门教程一些重点的整理。
关于开发环境如何搭建和配置,网上已有许多,在这里就不赘述了,直接进入主题。
本文使用的unity版本为2019.4.14f1c1,MRTK版本为2.5.1。
一、Hololens 2场景如何配置MRTK配置文件
具体操作
1、克隆默认的配置配置文件
PS:配置配置文件是顶级配置文件。 因此,若要编辑任何其他配置文件,必须先克隆配置配置文件。
在“层次结构”窗口中,选择 MixedRealityToolkit 对象。然后在检查器窗口中将“MixedRealityToolkit”配置配置文件更改为“DefaultHoloLens2ConfigurationProfile”(Hololens2默认配置文件)。单击“Copy & Customize”(复制&自定义)按钮,输入合适的文件名,单击“Clone”按钮。
新建的配置配置文件现已分配为场景中的配置配置文件。
2、启用空间感知系统
在“层次结构”窗口中,选择 MixedRealityToolkit 对象。接下来在检查器窗口中,选择“Spatial Awareness”(空间感知)选项卡,然后选中“Enable Spatial Awareness System”(启用空间感知系统)复选框。
3、克隆默认的空间感知系统配置文件
在“Spatial Awareness”(空间感知)选项卡中,单击“Clone”按钮,输入合适的文件名,再单击“Clone”按钮。
4、克隆默认的空间感知网格观察程序配置文件
在“Spatial Awareness”(空间感知)选项卡下,展开“Windows Mixed Reality” (空间网格观察程序)部分,然后单击“Clone”按钮,输入合适的文件名,再单击“Clone”按钮
5、更改空间感知网格的可见性
二、启用3D对象的远近交互
作用
用户可以用手点击并拖动对象进行移动,释放时对象放置在该位置,不再移动,即点击拖动功能。
实现
ps:操作对象需要有碰撞体组件
1、添加ObjectManipulator脚本(对象操控器脚本)到对象上,ConstraintManager脚本是添加ObjectManipulator脚本时自动添加的
2、下面选项可控制允许双手操作的功能
三、Unity中坐标值大小与现实生活中距离大小
四、组织集合中的对象
作用
有序排列一组对象。
实现
1、选择持有需排列对象组的对象,添加“GridObjectCollection”(网格对象集合)脚本
2、设置排列参数
如图所示的是:
Sort Type(排序类型):按字母顺序
布局:水平
Cell Width(单元格宽度):0.25
Distance from parent(到父对象的距离):0.38
五、模型位置指示器
作用
当模型不在用户视野内时,指示器便会出现,并向用户提示模型相对于用户的方向。
实现
1、调出指示器模型(ps:该模型为入门教程给的预制件)
2、添加 DirectionalIndicator(方向指示器)脚本
ps:系统会自动添加 SolverHandler 组件,因为求解器需要该组件。
验证 SolverHandler 组件的“Tracked Target Type”(跟踪的目标类型)是否设置为“头部”。
将 RoverExplorer 分配到 DirectionalIndicator 组件的方向目标,具体方法是将其从“层次结构”窗口拖到“无(转换)”字段。
将“View Offset”(视图偏移量)更改为 0.2。
六、零件组装自动吸附
作用
当用户将零件移动到指定位置时,该零件会自动吸附上去。
实现
ps:操作对象需要有碰撞体组件
1、零件需添加“NearInteractionGrabbable”(近相互作用)组件
2、还需添加“Part Assembly Controller”(部件程序集控制器)组件,用于设置零件正确安装的位置(此组件为入门教程提供的脚本资源,不是mrtk自带的)
七、添加边界框
作用
边界框提供用于缩放和旋转的控点,在近距和远距交互时,使用边界框可以更轻松、更直观地单手操作对象。
实现
ps:操作对象需要有碰撞体组件
1、操作对象需要添加BoundingBox脚本和ObjectManipulator脚本(对象操控器脚本)
八、点击放置功能
作用
点击对象,对象会随用户移动,再次点击时,对象会放置该位置,不再移动。
实现
ps:操作对象需要有碰撞体组件
1、添加Tap To Place脚本(点击放置脚本)到对象上,SolverHandler脚本是添加Tap To Place脚本时自动添加的。
九、按钮配置
在层级中选择需编辑的按钮,在Interactable组件下的Events下添加并设置事件即可。
十、创建语音控制命令
作用
可以使用语音来开启或关闭某些功能。
实现
1、在“层级”中选择“MixedRealityToolkit”对象;
2、然后在检查器窗口选择“input”选项;
3、克隆 DefaultMixedRealitySpeechCommandsProfile 并为其指定一个适当的名称;
4、验证“启动行为”是否设置为“自动启动”。
5、在此处添加语音命令,及设置语音命令的名称
ps:我测试过了,可以直接使用中文语音命令。
6、可新建一个空物体来持有那些不需要Focus的语音控制脚本
7、添加SpeechInputHandler 组件(语音输入处理程序)
Is Focus Required选项:指需不需要用户眼睛看向某个对象时语音命令才奏效
8、需要Focus的语音控制脚本要添加到指定对象上,并勾选Is Focus Required选项
9、在Speech Confirmation Tooltip Prefab添加SpeechConfirmationTooltip预制件(语音确认工具提示)在语音命令生效后有如下提示效果:
十一、使用眼动追踪功能
1、
2、
3、眼动追对象需添加一下组件:
4、在眼动追踪对象的“EyeTrackingTarget”组件下配置功能,“On Look At Start ()”事件是眼睛看向该对象时发生的事件,“On Look Away ()”事件是眼睛离开该对象时发生的事件。