如何使用Unity ARFoundation和XR Interaction Toolkit对Prefab进行选择、缩放、移动、和旋转操作?

本文分享一种很常见的AR体验的实现。这种AR体验即,手机相机检测到指定图片/平面/实物之后,虚拟模型随之出现,并允许用户在屏幕上使用手势(例如双指捏合)对该虚拟模型进行选择、缩放、移动、和旋转操作。

这种体验有很多种实现方法。本文分享基于Unity ARFoundation + XR Interaction Toolkit的实现方法。

在创建好Unity AR项目之后(可参看这篇文章),需要完成下面步骤。

  1. 安装XR Interaction Toolkit
  2. 在AR Session中添加Interaction Manager
  3. 在AR Camera中添加需要的Interactor Component
  4. 在Prefab中添加需要的Interactable Component
  5. 根据需要,将Prefab和某种track manager 连系在一起

接下来,让我们来看具体操作。

第一步:安装XR Interaction Toolkit

请参考官方文档

第二步:在AR Session中添加Interaction Manager

点击AR Session, 在Inspector中点击Add Component,搜索并添加Interaction Manager。
未添加前
添加完成后如下图所示。
在这里插入图片描述

第三步:在AR Camera中添加需要的Interactor Component

有很多不同Interactor可以选择,详情见官方文档,例如AR Gesture Interactor、XR Direct Interactor、XR Ray Interactor、XR Socket Interactor。

在手机AR体验中,多是使用基于屏幕的交互,例如基于双指捏合进行缩放,而AR Gesture Interactor对这些交互进行了封装,因此我们需要添加AR Gesture Interactor。

添加方式为:点击AR Camera, 在Inspector中点击Add Component,搜索并添加AR Gesture Interactor。

添加完成之后,需要进行一些设置,见下图:
在这里插入图片描述

第四步:在Prefab中添加需要的Interactable Component

有很多不同的Interactable,详情见官方文档。我们想要实现选择、缩放、移动、和旋转操作,就需要将AR Selection Interactable、AR Scale Interactable、AR Translation Interactable、和AR Rotation Interactable,添加到相应的Prefab中。这里的Prefab是指,当手机相机检测到指定图片/平面/实物,你想要展示的那个虚拟物体做成的Prefab,并且这个Prefab需要有合适的Collider Component。

例如:在这里插入图片描述
直接通过Add Component搜索并添加AR Selection Interactable、AR Scale Interactable、AR Translation Interactable、和AR Rotation Interactable即可。我注意到每个Interactable需要设置XR Interaction Manager和AR Session Origin,但我不知道怎么在Prefab中进行设置。后来我发现不设置也是可以的,就空着,然后程序在运行时会自动找到。

在这里插入图片描述

第五步:根据需要,将Prefab和某种track manager连系在一起

以上步骤我们都在完成“并允许用户在屏幕上使用手势(例如双指捏合)对该虚拟模型进行选择、缩放、移动、和旋转操作”这一目标。但是怎么样完成“手机相机检测到指定图片/平面/实物之后,虚拟模型随之出现”呢?

对于图片和实物而言,可以在AR Session中添加AR Tracked Image Manager 或者AR Tracked Image Manager,并且将第四步设置好的Prefab直接从Prefab文件夹中拖到Tracked Image Prefab中,就可以了。关于AR Tracked Image Manager中Refered Image Library的简单设置请参考这篇文章

然后编译就可以运行了!

对于平面检测而言,其实都不用上面的第四步。取而代之的是,在AR Session中添加一个AR Placement Interactable (经过实验之后,它是可以实现选择、缩放、移动、和旋转的),然后把Prefab拖到Placement Prefab参数中,即可。ARFoundation为这种情况提供了一个例子可供参考。
在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity的OpenXR XR Interaction ToolkitXRIT)是一个开源的工具包,用于处理虚拟现实和增强现实应用程序中的交互。在接入HTC Vive设备时,可能会遇到手柄无法使用的问题,以下是解决这个问题的步骤: 首先,确保你已经安装了最新版本的UnityUnityXRIT插件。你可以从Unity的官方网站上下载并安装它们。 接下来,将HTC Vive设备连接到电脑,并确保它的驱动程序已正确安装,可以正常使用。 在Unity中,创建一个新的项目或打开现有项目。在项目视图中,导入XRIT插件,确保它已正确安装。 在Unity编辑器的窗口中,选择“Window”菜单,然后选择“Package Manager”。在Package Manager窗口中,搜索“XRIT”插件,并安装它。 安装完毕后,你可以在Unity编辑器的窗口中看到XRIT的工具栏和面板。 在XRIT面板中,选择“Add Input”按钮以添加新的输入设备。在下拉菜单中,选择HTC Vive手柄。这将使XRIT将Vive手柄的输入事件与Unity的输入系统进行关联。 确保Vive手柄已正确连接到电脑,并正常工作。在Unity编辑器的窗口中,选择“Play”按钮以启动项目的播模式。 现在,你应该能够使用HTC Vive手柄进行交互了。可以测试一些基本的手柄输入,如按下按钮、移动手柄等,来确保它们在Unity中正常工作。 如果手柄仍然无法使用,可能存在其他问题,如驱动程序更新、Unity版本兼容性等。可以尝试更新驱动程序、检查Unity版本是否与XRIT插件兼容,或者在Unity的论坛或社区中寻求帮助。 总之,通过使用Unity的OpenXR XR Interaction Toolkit,你应该能够解决HTC Vive手柄无法使用的问题,并实现在虚拟现实应用程序中与手柄进行交互的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值