手部指导Hand coach

示例:手型指导

当系统未检测到用户的手时,手动指导会触发3D 建模。Hand coach triggers 3D modeled hands when the system doesn't detect the user’s hands. 此功能是一个 "教学" 组件,可帮助用户在未教授手势时引导用户。This feature is a “teaching” component that helps guide the user when the gesture hasn't been taught. 如果用户没有在某个时间段完成指定的手势,则会循环一段时间。If users haven't done the specified gesture for a period, the hands will loop with a delay. 手型指导可用于表示按下按钮或选取全息图标。The Hand coach could be used to represent pressing a button or picking up a hologram.

手写指导Hand coach provided

当前交互模型表示各种手势控件,例如滚动、远选和点击显示。The current interaction model represents a wide variety of gesture controls such as scrolling, far select, and near tap. 下面是 MRTK中提供的现有手型手势的完整列表:Below is a full list of existing hand gestures provided in MRTK:

接近选择的示例Example of Near Select
接近选择使用的示例显示如何选择按钮或关闭种不可交互对象Example of Near Select - Used show how to select buttons or close interactable objects

空中点击的示例Example of Air Tap
空中点击的示例-用于显示如何选择远距离的对象Example of Air Tap - Used to show how to select objects that are far away

移动示例Example of Move
将对象移动到空间的示例-用于显示如何在空间中移动全息图Example of Moving an object in space-Used to show how to move a hologram in space

旋转示例Example of Rotate
演示如何旋转全息影像或对象的 Rotate-Used 示例Example of Rotate-Used to show how to rotate holograms or objects

缩放示例Example of Scale
缩放示例-用于显示如何操作更大或更小的全息影像Example of Scale- Used to show how to manipulate holograms to be bigger or smaller

手掌的示例Example of Palm Up
掌上-建议使用的示例,用于引入手菜单Example of Palm up – Suggested use, to bring up hand menus

HandFlip 的示例Example of HandFlip
示例-用于打开手形菜单的另一种方式Exmaple of Hand Flip – Another way to bring up Hand Menus

滚动示例Example of Scroll
滚动示例–用于滚动列表或长文档Example of Scroll – Used for scrolling a list or a long document

设计概念Design concepts

对于 Hololens2,我们基于 instinctual 和自然手势设计出了手动交互。For Hololens2, we designed out hand interactions based on instinctual and natural hand gestures. 我们认为这对于大多数用户来说是直观的,因此我们不会创建专用的手势学习时间。We believe these to be intuitive to most users, so we didn't create dedicated gesture learning moments. 相反,我们创建了手形指导,帮助用户了解有关这些手势的问题,或者不熟悉全息图交互。Instead, we created the hand coach to help users learn about these gestures if they get stuck or are unfamiliar with hologram interactions. 如果没有学习,我们认为向用户展示如何执行操作,这是最佳选择。Without a learning moment, we felt that showing users how to perform an action by demonstrating it would be the best option. 我们发现用户能够找出手势,但需要一些指导。We found that users were able to figure out the gesture but needed a little guidance. 如果检测到用户不能在某个时间段内与对象交互,则会触发一则手指导,演示正确的抓手和 finger 位置。If we detect a user doesn't interact with an object for a period, a Hand coach would be triggered demonstrating the correct hand and finger placement.

直观Intuitive

动画处理时,应该很明显,不会造成任何混淆。When animating hands, it should be obvious and shouldn't cause any confusion. 手型动画是尝试提示用户理解的手势的表示形式。The hand animation is a representation of the gesture you're trying to prompt the user to understand.

例如,如果希望用户按下某个按钮,则会触发按下按钮的一只手。For example, if you wish a user to press a button, a hand pressing a button would be triggered.

示例:点击点击Example: Hand coach Near Tap
演示附近点击 Gem 的指导Hand Coach demonstrating Near Tapping a Gem

手动缩放Hand scale

我们使用 UI 菜单测试了各种手大小,并感觉到,如果想要调整规模,就会 menacing。We tested various hand sizes with the UI menus and felt that if the hands were true to size, it gave a menacing feeling. 如果它们太小,则很难查看和理解手势。If they were too small, it was hard to see and understand the gesture.

语音和手Voice over and hands

不要指望用户可以通过语音来侦听一组说明,并通过手动指导观看不同说明。Don’t expect users can listen to one set of instructions via voice over and watch different instructions via Hand coach. 序列化说明,帮助用户专注于争用,从而减少传感器的过载。Sequence your instructions to help users focus versus compete for their attention to reduce sensory overload.

我能创建自己的吗?Can I create my own?

是!Yes! 我们鼓励你为游戏创建自己的独特手势,并向社区提供反馈!We encourage you to create your own unique gesture for your game and contribute back to the community! 我们提供了一个可用于你的应用的 Rigged 的 Maya 文件,可在此处下载 HandCoach_MRTK.zip We've provided a Maya file of a Rigged hand that can be used for your app, which can be downloaded here: Download HandCoach_MRTK.zip

在 Maya 中进行动画处理的示例Example of Animated Hands in Maya
Maya 中闲逛的动画手形的示例Example of animated Hand Poking a box in Maya

推荐的创作工具Recommended authoring tool

在三维音乐家之间,很多选择使用 Autodesk 的 Maya,它可以使用 HoloLens 来转换资产的创建方式。Among 3D artists, many choose to use Autodesk’s Maya, which can use HoloLens to transform the way assets are created. 提供的免提文件是一个 Maya 二进制文件,因此建议使用 Maya 来动画和导出手。The hands file provided is a Maya Binary File, so it's recommended to use Maya to animate and export the hands. 如果希望使用其他三维程序,请参阅 。FBX 下载 HandCoachMRTK_FBX.zip 来创建自己的控制器设置。If you prefer to use another 3D program, here's a .FBX: Download HandCoachMRTK_FBX.zip to create your own controller setup.

如果使用提供的可下载 maya 手型文件,则建议将 unity 向下扩展到0.6。If using the downloadable maya Hand File provided, it's suggested to scale down the hands in unity to 0.6.

示例: Maya 中的手型指导远程测试机组Example: Hand coach rig in Maya
RiggedRigged Hands

技术规格Technical Specs

  • Maya Ascii 格式提供两个文件Two handed File is available in Maya Ascii format
  • Right 和左手提供 Maya 二进制格式Right and Left Hand is available in Maya Binary format
  • 将 Maya 文件设置为 24 FPSSet your Maya file to 24 FPS
  • 在该文件中,有一个左手的右手,可用于两个右手或单面手势。Within the file, there's a left and right hand, which can be used for two handed or single-handed gestures. 仅在默认情况下,才会显示右手。The right hand will only be visible by default.
  • 建议在开始和结束时留出大约10帧的缓冲区来淡化It's suggested to leave a buffer of about 10 frames at the beginning and end for fades
  • 如果对具有指定目标的对象进行动画处理,则其最佳方案为动态到默认框或 Null。If animating an object with a specified target, its best practice to animate to a Default box or Null.
  • 如果要对物理对象(例如 box)进行动画处理,最佳做法是不在 Maya 中对转换进行动画处理,而是等待在 Unity 中或代码中对其进行动画处理。If the hand is animating a physical object such as a box, its best practice to not animate the translation in Maya but wait to animate it in Unity or in Code.
  • 对于要传达的任何有意义的信息,可见动画应为1.5 秒Visible Animation should be 1.5 secs for any meaningful information to be conveyed
  • 如果你对动画感到满意:When you feel satisfied with your animation:

从 Maya 导出Exporting from Maya

对动画满意后After you're satisfied with your animation

  • 选择所有接头:选择 > 层次结构Select all joints: Select > Hierarchy

    示例:菜单中的层次结构

  • 制作动画:切换到动画 > 键 > 制作动画Bake out your animation: Switch to Animation > Key > Bake Animation

    示例:制作动画菜单位置

  • 删除控制器远程测试机组: Outliner > MainR_Grp 或 MainL_GrpDelete the Controller Rig: Outliner > MainR_Grp or MainL_Grp

    示例:控制器 Rig 菜单位置

  • 导出为 FBX:选择 .JNT + 网格: File > 导出所选内容 (选项框) > 导出选定内容Export as FBX: Select JNT + Mesh: File > Export Selection (option box) > Export Selection

    示例:导出选择菜单位置

    示例:菜单位置

    示例:导出选项菜单位置

导出为 FBX 并将其放入 Unity 时,将指针向下缩放到0.6。When exporting as an FBX and brought into Unity, scale the hands down to 0.6. 我们发现这非常适合显示手。We found that this was perfect balance for displaying the hands.

示例: Unity 设置Example: Unity Settings
在 MRTK 中找到 HandCoach_R prefab 的 Unity 设置Unity Settings for HandCoach_R prefab found in MRTK

实现对 Unity 项目的动手Implementing Hands into your Unity project

最佳做法Best practices

  • 建议将 unity 向下扩展到0。6It's suggested to scale down the hands in unity to 0.6

  • 应播放两次,如果未完成,则连续循环,直到手势完成。Hands should be played twice and if not completed then continuously looped until gesture is completed. 应循环访问两次,以确保用户有时间注册并查看手势。The hands should be looped twice to ensure the user had time to register and see the gesture. 指针应在循环之间淡入和淡出。The hands should fade in and out between loops.

  • 如果用户的手在 HL2 摄像头中可见,但用户不会进行所需的交互,则会在10秒后出现。If user’s hands are visible by HL2 cameras but users aren't doing the interaction needed of them the hands will appear after 10 seconds.

  • 如果 HL2 照相机看不到用户的手,则会在5秒后出现指针。If user’s hands are NOT visible by HL2 cameras, the hands will appear after 5 seconds.

  • 如果动画中间的 HL2 相机明显跟踪用户的手,动画将完成并淡出。If user’s hands are visibly tracked by HL2 cameras in the middle of the animation, the animation will complete and fade out.

  • 如果要包括语音,则建议将其对应于手的手势。If you're including voice over, we suggest that it corresponds to the gesture of the hand.

  • 如果你至少已经教授了一次,则只会在其检测到用户停滞时重复手势。If you've taught the hands at least once, only repeat the gesture if it's detected that the user is stuck.

  • 如果特定的 finger 位置是关键的,请确保用户可以清楚地查看动画中的这些差异。If specific finger/hand positions are critical, ensure users can clearly see these nuances in the animation. 尝试右倾,以清楚地显示最重要的部分。Try angling the hands so the most important parts are clearly visible.

  • 如果你注意到了手上的扭曲,则需要中转到 Unity 的质量设置以增加骨骼数量。If you notice distortion on the hands, you need to go to Unity's Quality settings increase the number of bones. 请参阅 Unity 的编辑 > 项目设置 > Quality > 其他 > Blend 权重。Go to Unity's Edit > Project Settings > Quality > Other > Blend Weights. 请确保选择 "4 骨骼" 以查看平滑联接。Make sure "4 bones" are selected to see Smooth Joints.

    示例: "项目设置" 窗口

要避免的内容What to avoid

另请参阅See also