基本翻译,原文请见https://docs.microsoft.com/en-us/windows/mixed-reality/mrtk-101,简单写吧,详细的看原文去
1、在UnityEditor中仿真交互:
相机上下前后左右,QEWSAD(原文说QE是转手,我感觉是上下移动相机);
相机旋转,右键拖动;
左手:按住左边shift;
右手:按住空格键;
手上下左右移动:鼠标移动;
手前后移动:滚轮,其实戳也是这个,前后移动下手,可以实现戳一下的效果;
手旋转:ctrl+space+(抓取后)拖动
手抓取:分情况,如果手常显,则左键单击(其实是切换抓取与放开的操作),如果不常显,则按住左键;
手单击:常显时其实响应的是pressrelease,不常显时需要按住那么一小下,像平常电脑那样单击容易没反应;
其实仿真交互也是可以自定义的,方法就是通过修改profile,比如需要在UnityEditor中使用打开手掌这个手势,默认情况下是没有的,那可咋整?
首先找到管input的profile:在Hierarchy中找到MixedRealityToolkit,在他的Inspector中找到ixedRealityToolkit组件,此时他的下面有好多比如Camera、Input,可选项都是灰的,因为默认情况下都是用的默认Profile,不支持修改,单击Copy & Customize可以创建一个拷贝,就可以修改啦,放心改,不影响原来的Profile;
然后想改Input,仍旧是灰的,继续clone;
想在UnityEditor中把flat palm加上,是InputSimulation,在InputDataProviders里,有个InputSimulationService,就是他管着输入仿真,继续clone;
在Articulated,也就是HandControlSetting里,并没有相关手势的选项,在Gesture里有,可以定义中键为flat,就可以实现flat了。
2、抓取物体
在物体上添加ManipulationHandler.cs和NearInteractionGrabbable.cs两个脚本,可以实现近程抓,远程抓;
ManipulationHandler:支持近程和远程交互;
NearInteractionGrabbable:直接抓(大概是近程抓的意思吧,猜的)。
这个顺便支持了HoloLens的gaze和tap(原文这么说,没试)。
3、resize
ManipulationHandler顺便支持了两手操作,可以旋转和resize;
好的,两只手如何同时操作(在UnityEditor中):按TY保持左右手始终出现在场景中,先按住左边shift保持左手选中,单击下鼠标左键,可以保持左手的抓住姿势,再按住space选中右手,单击左键保持右手的抓住姿势,拖动鼠标操作物体,至于是否可以同时操作两个手~~不清楚。
4、旋转
大致旋转:ManipulationHandler支持了;
精确旋转:添加 BoundingBox.cs,其实就是多了几个边界控制点,可以控制绕哪个轴旋转。
5、响应输入事件InputEvent
加个PointerHandler.cs,有四种事件: OnPointerDown(), OnPointerUp(), OnPointerClicked(), OnPointerDragged()。
OnPointerDown():弄不明白;
OnPointerUp():弄不明白;
OnPointerClicked():单击会触发;
OnPointerDragged():拖动会触发;
6、视觉反馈
加个Interactable.cs,选择InteractableColorTheme,设置颜色就好。
这个脚本里还可以设置别的主题,看名称就能理解个大概,还没用过,有坑就说说,没坑就不多讲了;
悬停灯(hover light)、接近灯(proximity light):新建一个材质球,用这个shader:Mixed Reality Toolkit > Standard,勾选hover light、proximity light,可以有接近灯光效果,勾选BorderLight可以有描边;
Interactable下面也有个Events,跟PointerHandler功能上是否有重复?大概都一样;
7、声音反馈
物体上加个AudioSource,Interactable或PointerHandler中选一个事件(比如click),选AudioSource.PlayOneShot(),再加个声音就好了。
8、使用HoloLens2的button
一般pressablebutton里都有Interactable。
9、物体跟随人、手等
添加一个 RadialView.cs,同时会被动添加一个SolverHandler。
SolverHandler可以选择跟踪的对象,头部、手部等;
RadialView物体自主跟随的实际控制。
10、让物体总是对着人
Billboard.cs。