Lab 9 - 增强现实
本次实验我们将使用增强现实SDK,在移动端运行增强现实程序,体验增强现实的魅力。
本次实验为课程作业,计算成绩。你需要将源代码、演示视频和实验文档发送至学在浙大平台,标题为Lab9-学号-姓名
,压缩包名称为Lab9-学号-姓名.zip/rar
。
本次作业提交截止时间:05-31-2024 23:59:59
开发平台与SDK选择
- 如果你的手机支持ARKit(iPhone 6s及以上,iOS >= 12.0)或者ARCore(支持列表,那么建议优先选择ARKit或者ARCore。
- 如果你的手机不支持ARKit或者ARCore,那么可以使用Vuforia、EasyAR等其他通用的SDK。
- 由于应用中使用到手机摄像头,因此不建议使用模拟器进行开发,请使用真机。
- 选择Android作为开发环境,你需要安装Android Studio。在跑官方Sample Code之前,Gradle以及其依赖的下载可能也会耗费一些时间,可能需要耐心等待或者使用代理。
- 选择iOS作为开发平台,你需要拥有macOS开发环境并安装最新版本的XCode。macOS开发环境要求你拥有Mac电脑,或者在VMware下安装最新版macOS虚拟机(通常界面会比较卡)。
- 建议没有Mac电脑的同学尽量选择Android开发环境(可以向周围同学借用一下安卓机),以节省虚拟机配置的时间。
ARCore
- ARCore的开发者页面 建议切换到英文页面,因为有不少英文页面的内容是不包含中文翻译的(或者是过时的中文翻译)。
- ARCore SDK 包含了使用ARCore的SDK和一些sample,以及最新的ARCore服务apk(可以在Release页面下载安装到手机)。
- 你需要先安装ARCore服务apk(比如ARCore_1.9.1.apk,有些手机自带ARCore,可以跳过此步骤),才能在手机上使用ARCore的各种功能。
- 现在的ARCore不仅仅包含了运动跟踪功能,还包括了环境光估计,人脸检测(Augmented Face),Marker(Augmented Image),场景共享(Cloud Anchors)等多种功能。
- Sceneform是Google为AR应用定制的高层图形API,可以方便地绘制逼真的 3D 场景,而无需学习OpenGL(类似于Apple的SceneKit)。你可以在Sceneform GitHub页面上获取并体验使用样例。
- ARCore同时也提供了Unity支持。以Unity为依托,可以开发出功能更加强大的AR场景。有兴趣的同学也可以尝试一下。
ARKit
- ARKit开发者页面
- ARKit目前已经进化到了第二代,同样在基本的运动跟踪功能上,进行了很多的拓展。例如Persistent(保存当前AR会话,在下一次进入时重复使用当前AR环境),场景共享,2D图像以及3D物体的追踪,人脸检测等等。
- 你可以在ARKit文档页面找到官方帮助文档,下载样例。
- 你需要将自己的AppleID开通为免费的Apple开发者账户,在样例配置时,需要使用你自己的账户对App进行License签署(点击XCode左边的项目,在General页面的Team中选择自己的账户)。
- 一些复杂场景的样例也会包含SceneKit的使用。在SceneKit的帮助下,无需配置Unity,也能渲染出高质量的AR场景。
Qualcomm Vuforia增强现实SDK
为了给大家提供一个关于增强现实的简单直观的印象,这里提供安卓版本的Qualcomm Vuforia官方样例程序安装包,可下载后直接在手机上安装。
配置Sample和SDK(Android)
- 下载Sample和SDK,并解压。
- Sample和SDK需要用户手动拼起来。
- 参考这里,将
build/lib
中的三个Native的.so放入sample/app/src/main/jniLibs
当中。
- 参考jensquast的回答,将
\vuforia-sdk-android-x-x-x\build\java\vuforia
拷贝至\samples\app\libs
中,右键项目,选择Open Module Settings
, 选择dependencies
页面, 点击 “+” 添加一个jar文件。选择刚刚拷贝的\samples\app\libs\Vuforia.jar
。
- 进入Vurofia License Manager,生成一个license,并拷贝至SampleApplicationSample.java的
Vuforia.setInitParameters()最后一个参数
。
- 编译即可。
在手机上体验增强现实
1.以Image Targets为例,进行增强现实实验
2.选择应用程序中的User Defined Targets菜单,将摄像头对准你想作为背景的任意光滑平面物体(如杂志封面,电脑屏幕等),按下屏幕中的相机图标。你将会看见一个3D茶壶摆放在该光滑表面上。
- 在扩展实验中可能会用到的链接,也可以自行搜搜更多样例。同时,由于Vuforia也支持Unity,有兴趣的同学也可以根据官方文档,尝试借助Unity来构建基于Vuforia的AR应用。
实验任务
-
请自行探索任一AR SDK,在官方样例的基础上,实验至少三种不同的功能,并截图或者录制简短的视频。
-
简单分析实现这些功能可能需要用到的相应算法原理,简单测试并分析这些功能在什么情况下运行更加鲁棒,什么情况下会失效。例如:
- 对于Motion Tracking应用,可以尝试不同的场景以及运动模式(例如纯旋转以及快速运动)下的稳定性。
- 对于2D Image Tracking类应用,可以尝试不同的Image Target图片,多种可视角度,分析在哪些情况下跟踪容易丢失。
-
扩展实验(Bonus):借鉴官方Sample,使用SDK搭建一个自己的增强现实应用(如果是借鉴了其他开源项目,也需要一并说明),并截图或者录制简短的视频。