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

news/2024/11/8 14:37:37/

本文分享一种很常见的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为这种情况提供了一个例子可供参考。
在这里插入图片描述


http://www.ppmy.cn/news/3548.html

相关文章

Linux软硬链接与动静态库

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、创建软硬链接二、软硬链接①软链接②硬链接③硬链接的用处④软硬链接的区别三、库的作用①库与为什么用库②动静态库的加载过程四、动静…

[附源码]Python计算机毕业设计Django海滨学院学生大创项目申报与审批系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

[C语言]指针初阶

[C语言]指针初阶 文章目录[C语言]指针初阶1.指针def:2.指针变量:3.指针和内存的关系:4.指针和指针类型:4.1指针类型:5.指针-整数:6.指针的解引用:7.野指针:7.1成因:7.2如何规避野指针:8.指针运算:8.1指针-整数&#xf…

windows git

git | 安装 网址 https://git-scm.com/downloads https://gitforwindows.org 教程 Git详细安装教程 git连接github远程仓库 git | 设置用户名 邮箱 打开 Git Bash Here 输入: git config --global user.name ‘用户名’ git config --global user.email ‘邮箱’ …

怎么进行视频配音?建议收藏这些配音方法

最近我的朋友向我求助,他想要自己制作一个视频,但是视频里面有些片段需要配音,可是他又不想用自己的声音来配音。一方面担心容易NG,需要录制很多遍,会浪费较多的时间;另一方面是,如果视频录制和…

[附源码]Node.js计算机毕业设计辅导员班级量化管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

理解DDR Part 1

DDR x4 x8 x16 x4 x8 x16 指的上图黑色的chip输出的位宽,正常的DDR bus width 需要64bit,所以 chip width x4 x8 x16 黑色chip数量 16 8 4 上图是最常见的x8,也就有8个黑色的chip颗粒。x16的性能和x8的性能相比怎么样呢? 更差&…

HDLBits练习汇总-12-时序逻辑设计测试--更多电路

rule90(一维元胞自动机) Rule_90是一个具有有趣属性的一维元胞自动机。 规则很简单。有一个一维单元格数组(开或关)。在每个时间步长,每个像元的下一个状态是像元的两个当前邻居的异或。下表是更详细地表达此规则的方…