练习 - 向对象添加手部交互脚本

已完成

ObjectManipulator 脚本支持“手部和运动控制器”输入模型的“直接操作”模态。 向对象附加脚本后,用户可以手来移动、缩放或旋转该对象。 在本练习中,你将创建两个立方体,向它们附加必要的脚本,然后四处移动它们。

添加并调整第一个立方体

  1. 在菜单栏中,选择“GameObject”>“3D 对象”>“立方体”。

    用于添加立方体的菜单命令的屏幕截图。

    该立方体的默认大小为 1 平方米,这对我们来说太大了。 我们会将它缩小到 20x20x20 立方厘米。

  2. 选择该立方体,然后在“检查器”中将立方体的“转换/缩放”值更改为以下值

    X = 0.2, Y = 0.2, Z = 0.2

    立方体在场景中的默认位置为 (0,0,0)。 这意味着立方体与用户的头戴显示设备位于同一位置,用户无法看到立方体,直到他们向后移动。 我们将更改立方体的位置值,使它位于更便于查看的位置。

  3. 在“检查器”中,将立方体的“转换/位置”值更改为以下值

    X = -0.2, Y = 1.6, Z = 0.5

    更新后立方体转换组件的屏幕截图。

    我们希望能看到立方体的三个面,因此还会更改立方体的旋转。

    注意

    立方体的高度设置为 1.6,以匹配 MRTK XR Rig 上“相机偏移”的高度,使其大致与眼睛齐平。

  4. 在 Inspector 中,将立方体的“Tranform/Rotation”值更改为以下值:

    X = 9, Y = 14, Z = 0 f

    提示

    要缩放该立方体,请选择它,确保光标悬停在“场景”窗口上,然后按 F 键。 可通过这种方式放大任何对象。

向立方体添加脚本

如要通过跟踪手抓取对象,该对象必须附加两个组件:

  • 碰撞体组件(无需在此执行任何操作;Unity 的立方体默认已附加盒状碰撞体)
  • “对象操控器(脚本)”组件
  1. 在立方体仍然处于选中状态的情况下,在“检查器”窗口中,单击“添加组件”按钮,然后搜索并选择“对象操纵器”脚本

    添加对象操控程序脚本的屏幕截图。

    ObjectManipulator 脚本能够让对象变得可移动、可缩放和可旋转,这些操作可通过一只或两只手来实现。 添加 Object Manipulator 脚本时,系统会自动添加 Constraint Manager 脚本,因为前者依赖于后者。

    添加到立方体的约束管理器脚本的屏幕截图。

更新立方体的材料

出于性能考虑,建议使用 MRTK 材料而不是默认的 Unity 材料。

  1. 在仍选中该立方体的情况下,在网格呈现器组件上找到“材料”部分。
  2. 将默认材料替换为位于 MRTK 标准资产>材料下的 MRTK_Standard_White 材料。 你可以从“项目”窗格中将相应材料拖放到“材料”部分。

添加第二个立方体

  1. 在“层次结构”中,右键单击该立方体,然后选择“复制”。 系统显示复制的立方体,名称为“Cube (1)”。

  2. 右键单击原始立方体,选择“重命名”,然后将其命名为“Near Cube”。

  3. 右键点击复制的立方体,选择“重命名”,然后将其命名为“Far Cube”。

    目前,Scene 视图中似乎只有一个立方体。 这是因为 Near Cube 和 Far Cube 的位置完全相同。 我们可以更改 Far Cube 的位置和旋转。

  4. 在仍选中“Far Cube”的情况下,将其“转换”组件中的值更改为以下值

    位置:X = 0.6,Y = 1.6,Z = 1.1

    旋转:X = 27, Y = 0, Z = 0

    现在,摄像机应该能看到“Near Cube”位于左侧,“Far Cube”位于右侧稍远处。 要确认这一点,请在“层次结构”中选择“主相机”“MRTK XR Rig”>“相机偏移”下),然后在“场景”窗口中查看“主相机”窗口。

    “场景”窗口中主摄像头视图的屏幕截图。

    提示

    如果希望 Scene 窗口中的视图更接近于摄像机所看到的实际场景,请在该窗口中四处滚动。 如果摄像头的“清除标志”未默认设置为“Skybox”,可能需要将其设置为“Skybox”。

在播放模式下抓取和移动立方体

  1. 选择 Play 按钮。 项目开始播放时,视图切换到 Game 窗口。

    进入播放模式后“游戏”窗口的屏幕截图。

    注意

    播放前请确认“项目设置”>“MRTK3”下设置了有效的配置文件。

  2. 选择“游戏”窗口右上角的三点按钮,然后选择“最大化”

    “游戏”窗口最大化命令的屏幕截图。

  3. 按空格键,使模拟右手显示在视图中。

  4. 将模拟手朝 Near Cube 移动,直到它触碰到立方体的一面或底部。

    模拟右手触摸 Near Cube 的屏幕截图。

  5. 按鼠标左键(这会让手抓取立方体),然后在场景中拖动该立方体。

    移动立方体的屏幕截图。

    要抓取和移动 Far Cube,我们将使用模拟手附带的远指针。

  6. 如果需要执行该操作,请再次按空格键,使模拟右手显示出来。 请注意从手的食指末端延伸出来的远指针。

    模拟手的远指针的屏幕截图。

  7. 朝 Far Cube 移动手,直到你看到指针末端移到在立方体上。 可能需要将手画几次圈,才能使指针末端出现在立方体上。

    触摸立方体的远指针的屏幕截图。

  8. 按鼠标左键(这会使手收缩,呈我们所谓的“收缩手势”),然后在场景中拖该动立方体。

Unity 编辑器内输入模拟

你可以使用 Unity 的编辑器内输入模拟功能来测试全息对象行为。

更改场景中的视图

  • 要向前/向左/向后/向右移动摄像头,按 W/A/S/D 键。
  • 要垂直移动摄像头,按 Q 和 E 键。
  • 要旋转相机,按鼠标右键,然后拖动。

模拟手控输入

  • 要启用模拟右手,按住空格键。 要移除该手,请松开空格键
  • 要启用模拟左手,按住左边的 Shift 键。 要移除该手,松开该键。
  • 要在场景中移动左手或右手,移动鼠标。
  • 要向前或向后移动手,滚动鼠标滚轮。
  • 要模拟收缩手势,请按鼠标左键。
  • 要旋转手,按住空格键 + CTRL 键(右手)或按住左 Shift 键 + CTRL 键(左手),然后移动鼠标。

持久的手

要在不继续按住某个键的情况下启用手并使它在屏幕上,请按 T(左手)或 Y(右手)。 再次按这些键可移除手。

在 Unity 中生成应用程序

  1. 通过选择三点按钮,然后取消选中“最大化”来最小化“播放”窗口。

  2. 在菜单栏中,选择“文件”>“生成设置...”。

  3. 在“生成设置”窗口中,选择“添加开放场景”按钮,以将当前场景添加到“生成中的场景”列表

  4. 选择“生成”按钮

  5. 在“生成通用 Windows 平台”窗口中,导航到希望用于存储生成的文件夹,或者新建一个文件夹并导航到它,然后选择“选择文件夹”按钮以开始生成过程

    保存生成的位置的屏幕截图。

    屏幕上将显示一个进度栏,表明生成的进展情况。

(可选)生成并部署应用程序

注意

在 HoloLens 2 上生成和测试不是强制性的。 如果没有这个设备,还可以在 HoloLens 2 仿真器上进行测试。 你可以在 HoloLens.com 购买设备。

  1. 生成过程完成后,Windows 文件资源管理器打开并显示该生成文件夹。 在文件夹内浏览并双击解决方案文件,在 Visual Studio 中其打开。

    显示生成文件夹的文件资源管理器的屏幕截图。

  2. 为 HoloLens 配置 Visual Studio - 选择“Master”或“Release”配置以及“ARM64”体系结构:

    Visual Studio 窗口的屏幕截图,其中包含项目的生成选项。

    提示

    如果要部署到 HoloLens(第一代),请选择 x86 体系结构。

    注意

    如果在 Visual Studio 中没看到“设备”这个目标选项,则可能需要将解决方案的启动项目从 IL2CPP 项目更改为 UWP 项目。 为此,请在“解决方案资源管理器”中右键单击[你的项目名](Universal Windows),然后选择“设置为启动项目”

    重要

    在构建到设备之前,该设备必须处于开发人员模式并已与开发计算机配对。请参阅“启用开发人员模式”

  3. 选择部署目标下拉列表,然后执行下列操作之一:

    • 如果要通过 Wi-Fi 进行生成和部署,请选择“远程计算机”。

    以远程计算机为目标的 Visual Studio 窗口的屏幕截图。

    • 如果要通过 USB 进行生成和部署,请选择“设备”。

    以设备为目标的 Visual Studio 窗口的屏幕截图。

  4. 设置远程连接:在菜单栏上,选择“项目”>“属性”。

  5. 在项目的“属性页”窗口中,选择“配置属性”>“调试”。

  6. 选择“要启动的调试器”下拉菜单,然后选择“远程计算机”(如果尚未选择)

    重要

    我们建议手动输入你的 IP 地址,而不要依赖于“已自动检测”功能。 若要查找 IP 地址,请在 HoloLens 上转到“设置”>“更新和安全”>“针对开发人员”。 IP 地址在窗口底部的“以太网”下列出。

  7. 在“计算机名称”字段中,输入设备的 IP 地址。

    Visual Studio 中的远程连接对话框的屏幕截图。

  8. 将“身份验证模式”设置为“通用(未加密协议)”。

  9. 将 HoloLens 连接到计算机,然后在 Visual Studio 中执行以下操作之一:

    • 若要部署 HoloLens 并自动启用未附加 Visual Studio 调试程序的应用,选择“调试”>“开始执行(不调试)”。
    • 要部署 HoloLens,而不自动启动应用,选择“生成”>“部署解决方案”。

    Visual Studio 屏幕截图,其中显示了“开始执行(不调试)”菜单项。

配对设备

首次将应用从电脑部署到 HoloLens 时,系统会提示输入 PIN。 创建 PIN:

  1. 在 HoloLens 中,转到“设置”>“更新和安全”>“针对开发人员”
  2. 选择“配对”。这会显示 HoloLens 中的 PIN。
  3. 在 Visual Studio 的对话框中输入该 PIN。
  4. 完成配对后,在 HoloLens 中选择“完成”

现在,你的电脑已与 HoloLens 配对,你可以自动部署应用了。 请针对用于将应用部署到 HoloLens 的每台电脑重复上述步骤。

在 HoloLens 上运行应用

  1. 应用完成生成后,在 HoloLens 的“开始”菜单中找到你的应用的应用磁贴,然后选中它。

  2. 应用启动后,把手伸向“Near Cube”,然后抓取并拖动它。

  3. 使用远指针抓取 Far Cube,然后拖动它。

    提示

    与在 Unity 中测试应用相比,HoloLens 提供了更大的灵活性。 可通过物理方式移动,并使用 Near Cube 上的远指针或用手来触碰并抓取 Far Cube!

提示

  • 你还可以部署到 HoloLens 模拟器或创建应用包用于旁加载。

  • 你可能会注意到应用中的“诊断”探查器。 可以使用语音命令“切换诊断”来启用或禁用它。 建议在开发过程中使探查器在大部分时间都可见,以便可以了解更改应用对性能有何影响。 例如,可以监视应用,以确保帧速率至少为 60 FPS