《AR与VR开发实战》——3.3 手势控制

简介:

本节书摘来自华章出版社《AR与VR开发实战》一书中的第3章,第3.3节,作者 张克发 赵兴 谢有龙,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 手势控制

目前市场上流行的AR产品以儿童教育类产品居多,这些产品中大多会有手势交互的功能,本节就将讲解如何在AR产品中加入手势交互的功能。设想以下场景,在识别一个动物的卡片后,会出现该动物的3D立体影像,在识别丢失后,动物模型会停留在屏幕中心,并可以通过手势控制其旋转和缩放。
我们需要实现模型脱卡的功能,这个功能的实现已经在上一节做了详细讲解,本节不再赘述。
关于手势控制,最原始的方式是通过Unity 3D自带的Input类进行处理,但是为了快速实现我们想要达到的效果,可以借助一些插件来实现。用于手势处理的插件有Finger Gesture、LeanTouch和EasyTouch等,本节主要通过EasyTouch这个插件来讲解手势控制功能(本节使用的插件版本为EasyTouch 5)。
接下来,我们就逐步讲解EasyTouch的使用方法。
1.查看EasyTouch案例场景
正确导入EasyTouch插件之后,在Project视图中找到QuickGesture案例场景,这个场景中展示了插件中大部分手势的案例,该场景打开后的界面如下图所示。


7cf2d74f08d04df1ff8d490c8a1a6232bd1f61ec

上图中的场景展示了下列手势:
Touch:触摸手势。
Tap:点击手势。
Long tap:长按手势。
Drag:拖动手势。
Enter Over Exit:滑过手势。
Double tap:双击手势。
Swipe:滑动手势。
Twist:扭转手势。
Pinch:两个或多个手指挤压,常用于缩放。
2.EasyTouch初始化
EasyTouch初始化的方式非常简单,只需在场景中创建一个空的GameObject,将其命名为EasyTouch,然后在Inspector面板上点击AddComponent添加EasyTouch.cs脚本文件即可。
3.旋转模型
初始化模型的工作完成之后,接下来演示旋转模型的实现方式。查看之前案例场景中Horizontal Swipe下的物体,你会发现当鼠标在该物体上左右滑动时,就可以让物体发生水平方向的旋转,我们查看被旋转物体上的组件信息,发现该物体拥有一个名为QuickSwipe的组件。
因此,只要给需要旋转的物体添加QuickSwipe组件,即可让物体根据手势滑动的方向进行旋转。Quick Swipe组件的参数如下图所示。


3aae6b99e4ecad953cbd946291fcaed4c7c32dd8

上图中的Swipe direction选项表示判断手势滑动的方向,例如Horizontal表示水平方向,Vertical表示竖直方向。Action中的选项表示当手势触发之后,所影响的物体会发生哪些类型的动作,可以选择的动作有Rotate(旋转)、Translate(移动)和Scale (缩放),在此我们选择Rotate选项即可。Affected axes表示被影响的坐标轴,如果是水平方向渲染,则选择Y轴。Sensibility表示灵敏度,可以根据灵敏度调整旋转的速度,Inverse axis表示反向。
4.缩放模型
在手机App中,一般是通过两个手指在触摸屏幕上的距离远近变化来控制模型的大小,因此我们采用EasyTouch中的另外一种Pinch事件。在上述案例场景中我们可以看到这个事件,但是在Unity编辑器中无法通过鼠标模拟多点触控,EasyTouch的解决方案是:首先用Ctrl+鼠标左键确定第一个手指的位置,然后通过Alt+鼠标左键来控制第二个手指的位置与第一个手指的位置之间的距离。
(1)Ctrl +鼠标左键确定第一个手指的位置。
(2)Alt +鼠标左键滑动控制模型缩放。


910fe87cc05304a04c2ff1688600bbc29759aa33

在实现缩放控制的时候,EasyTouch为我们提供的接口也特别简单。与旋转模型类似,只需要给被旋转的物体加上一个QuickPinch组件,但是不要忘记给物体再添加一个碰撞器组件。
5.拖动模型
拖动模型是指,当鼠标或手指选择屏幕中的某个物体之后,拖动手指,物体会跟随手指进行移动,如果不借助插件,则实现步骤如下。
(1)通过Unity中的Input类获取当前鼠标的位置或触摸点的位置,返回的坐标信息为屏幕坐标。
(2)将获取的屏幕坐标转换为世界坐标,这个步骤可以通过Camera中的ScreenToWorldPoint
方法来实现。
(3)将模型的位置移动到转换后的世界坐标位置。
上述实现过程比较麻烦,因此我们直接采用EasyTouch中的QuickDrag组件实现。我们只需要给被拖动的物体添加QuickDrag组件。如果要实现两个手指拖动,则添加TwoDragMe这个脚本组件就可以了。
本节关于手势控制的内容已经介绍完毕,其实EasyTouch还拥有其他一些手势控制和功能,大家可以参考它的帮助文档。
目录
打赏
0
0
0
0
1408
分享
相关文章
虚拟现实(VR)与增强现实(AR)的融合:开启全新交互时代
【6月更文挑战第17天】虚拟现实(VR)与增强现实(AR)融合成混合现实(MR),打造全新交互体验。MR结合VR的沉浸感和AR的现实增强,应用于教育、游戏、设计和营销,带来创新教学方式、沉浸式游戏体验和高效设计工具。尽管面临技术挑战,随着5G和AI的发展,MR有望引领未来交互的革命。
【虚拟现实】二、主要的AR/VR硬件设备
【虚拟现实】二、主要的AR/VR硬件设备
166 3
惊呆了!这些前端技巧竟然能让你的网站支持AR/VR体验!
【10月更文挑战第31天】在数字化时代,用户对网页交互体验的要求日益提高,传统二维网页已难以满足需求。本文介绍如何利用前端技术,特别是Three.js,实现AR/VR体验,提升用户满意度和网站价值。通过示例代码,展示如何创建简单的3D场景,并探讨AR/VR技术的基本原理和常用工具,帮助开发者打造沉浸式体验。
235 6
重塑体验:AR/VR技术在游戏与娱乐行业的创新应用
【10月更文挑战第29天】本文探讨了AR/VR技术如何改变游戏与娱乐行业,介绍了AR和VR的基本概念及其在游戏和娱乐中的应用实例,包括《精灵宝可梦GO》的AR开发和VR视频播放器的实现代码,并展望了未来的发展趋势。
323 2
5G赋能沉浸式体验:VR/AR时代的网络基石
5G赋能沉浸式体验:VR/AR时代的网络基石
150 1
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
147 1
VR与AR:未来的科技趋势
【8月更文挑战第26天】VR与AR技术正以前所未有的速度发展,并在市场规模、技术创新、应用场景以及竞争格局等方面展现出强劲的增长潜力。随着技术的不断进步和应用场景的不断拓展,VR/AR/MR技术将为人们带来更加丰富的虚拟体验和更加便捷的生活方式。未来,我们有理由相信,VR与AR技术将在多个领域实现更广泛的应用和更深入的融合,成为推动社会进步的重要力量。
步入未来科技前沿:全方位解读Unity在VR/AR开发中的应用技巧,带你轻松打造震撼人心的沉浸式虚拟现实与增强现实体验——附详细示例代码与实战指南
【8月更文挑战第31天】虚拟现实(VR)和增强现实(AR)技术正深刻改变生活,从教育、娱乐到医疗、工业,应用广泛。Unity作为强大的游戏开发引擎,适用于构建高质量的VR/AR应用,支持Oculus Rift、HTC Vive、Microsoft HoloLens、ARKit和ARCore等平台。本文将介绍如何使用Unity创建沉浸式虚拟体验,包括设置项目、添加相机、处理用户输入等,并通过具体示例代码展示实现过程。无论是完全沉浸式的VR体验,还是将数字内容叠加到现实世界的AR应用,Unity均提供了所需的一切工具。
282 0
虚拟现实(VR)与增强现实(AR)的技术革新:塑造未来的沉浸式体验
【7月更文挑战第24天】VR和AR作为两种前沿的沉浸式技术,正以前所未有的速度改变着我们的世界。随着技术的不断革新和应用的不断拓展,我们有理由相信,未来的VR和AR将为我们带来更多令人惊叹的体验和技术革新。
|
9月前
|
AR和VR的光学结构分别是什么?
【6月更文挑战第25天】AR和VR的光学结构分别是什么?
319 5

热门文章

最新文章