手部教练
当系统未检测到用户的手时,手部指导会触发 3D 建模的手部。 此功能是一个“教学”组件,可帮助在未教手势时指导用户。 如果用户在一段时间内未执行指定的手势,则手部将延迟循环。 手部指导可用于表示按下按钮或拾取全息影像。
提供的手部指导
当前交互模型表示各种手势控件,例如滚动、远距离选择和靠近点击。 下面是 MRTK 中提供的现有手势的完整列表:
近距选择 - 使用的示例演示如何选择按钮或关闭可交互对象
Air Tap 示例 - 用于显示如何选择远离的对象
在空间中移动对象的示例 - 用于演示如何在空间中移动全息影像
显示如何旋转全息影像或对象的 Rotate-Used 示例
缩放示例 - 用于演示如何作全息影像以放大或缩小全息影像
Palm up 示例 – 建议使用来打开手部菜单
手翻转示例 - 显示手部菜单的另一种方法
滚动示例 - 用于滚动列表或长文档
设计概念
对于 Hololens2,我们基于本能和自然手势设计了手部交互。 我们相信这些对大多数用户而言是直观的,因此我们没有创建专门的手势学习时刻。 相反,我们创建了手部指导,以帮助用户在遇到卡住或不熟悉全息影像交互时了解这些手势。 在没有学习时间的情况下,我们认为,通过演示向用户展示如何执行作是最佳选择。 我们发现用户能够找出手势,但需要一些指导。 如果我们检测到用户在一段时间内未与对象交互,则会触发手部指导,演示正确的手部和手指位置。
直觉的
在对手部进行动画处理时,它应该是显而易见的,不应造成任何混淆。 手部动画是尝试提示用户理解的手势的表示形式。
例如,如果希望用户按下按钮,则会触发按下按钮的手。
手部教练演示接近敲击宝石
手部刻度
我们用 UI 菜单测试了各种手部尺寸,并觉得如果手是真的调整大小,它给人一种威胁的感觉。 如果它们太小,就很难看到和理解这个手势。
语音和手部
不要指望用户可以通过语音收听一组指令,并通过手部指导watch不同的说明。 对指令进行排序,以帮助用户集中注意力,而不是争分夺回注意力,以减少感官过载。
我可以创建自己的吗?
可以! 我们鼓励你为游戏创建自己的独特手势,并为社区做出贡献! 我们提供了一个 Maya 文件,该文件适用于你的应用,可在此处下载: 下载 HandCoach_MRTK.zip
在 Maya 中用动画手戳框的示例
建议的创作工具
在 3D 艺术家中,许多人选择使用 Autodesk 的 Maya,后者可以使用 HoloLens 来转换资产的创建方式。 提供的手部文件是 Maya 二进制文件,因此建议使用 Maya 对手部进行动画处理和导出。 如果希望使用另一个 3D 程序,下面是 。FBX: 下载 HandCoachMRTK_FBX.zip 以创建自己的控制器设置。
如果使用提供的可下载 maya Hand 文件,建议将 unity 中的手数缩减到 0.6。
纵的手
技术规格
- 双手文件以 Maya Ascii 格式提供
- 右手和左手以 Maya 二进制格式提供
- 将 Maya 文件设置为 24 FPS
- 在文件中,有一个左手和右手,可用于双手或单手手势。 默认情况下,右侧将仅可见。
- 建议在开始和结尾保留大约 10 帧的缓冲区以用于淡出
- 如果使用指定目标对对象进行动画处理,则最佳做法是将动画设置为默认框或 Null。
- 如果手正在对物理对象(如框)进行动画处理,则最佳做法是不要在 Maya 中对翻译进行动画处理,而是等待在 Unity 或 Code 中对其进行动画处理。
- 可见动画应为 1.5 秒,以便传达任何有意义的信息
- 当你对动画感到满意时:
- 选择所有关节和烘焙关键帧
- 删除控制器、选择关节和网格并导出为 FBX
- 如果有多个动画,则可以使用 Maya 的内置游戏导出程序: https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2015/ENU/Maya/files/Game-Exporter-htm.html
从 Maya 导出
对动画感到满意后
选择所有关节:选择 > 层次结构
烘焙动画:切换到动画 > 键 > 烘焙动画
删除控制器设备:大纲MainR_Grp > 或MainL_Grp
导出为 FBX:选择“JNT + 网格: (文件 > 导出所选内容”选项框) > “导出所选内容”
当导出为 FBX 并引入Unity时,将手数缩小到 0.6。 我们发现,这是展示手的完美平衡。
在 MRTK 中找到HandCoach_R预制件的Unity设置
将 Hands 实现到Unity项目中
最佳做法
建议将统一的手数缩小到 0.6
手应玩两次,如果未完成,则持续循环,直到手势完成。 手部应循环两次,以确保用户有时间注册并看到手势。 手应在循环之间淡入和淡出。
如果用户的手被 HL2 相机看到,但用户未进行所需的交互,则 10 秒后将显示手部。
如果 HL2 相机看不到用户的手部,则 5 秒后会出现手部。
如果用户的手在动画中间被 HL2 相机明显跟踪,动画将完成并淡出。
如果包括语音,我们建议它对应于手部的手势。
如果你至少教过一次手,则仅在检测到用户卡住时重复该手势。
如果特定的手指/手部位置至关重要,请确保用户可以清楚地看到动画中的这些细微差别。 尝试用手抓,使最重要的部分清晰可见。
如果注意到手部扭曲,则需要转到Unity的质量设置增加骨骼数量。 转到Unity的编辑>项目设置>质量>其他>混合权重。 确保选择“4 个骨头”以查看平滑关节。
要避免的内容
- 缩放手部过大
- 将手放在离用户太近的位置
- 手只能教一次。 过度教学可能导致混乱和混乱
- 将其引入Unity,请在此处下载最新的 MRTK:https://github.com/microsoft/MixedRealityToolkit-Unity
- 材料:Teaching_Hand2
- 脚本:请参阅 MRTK 手动指导的 MRTK 指南
- 按项目设置
- 场景设置为 UWP:说明可以在 使用 MRTK 设置新的 OpenXR 项目 一文中找到。