该文章为吃货传说原创,转载请注明出处。
4.18正式版好像悄么声的发布了,不再是预览版了。最近一直在和ARKit有关的东西,也做了一个小项目。过程中发现国内可以查阅的资料太少太少了,甚至翻墙到国外也不是那么多。可能因为时间还很短吧,现在从测试版出来大概就几个月而已。不过ARKit作为苹果主推的一个工具,在日后势必要引领一番潮流的,不如现在赶紧先混个脸熟吧!
这篇文章展示了如何在4.18中使用ARKit插件创建一个最最最最最最最最简单的AR项目。
4.17和4.18中ARKit有较大的区别,这篇文章不适用于4.17
那么我们开始吧!
1. 创建项目
首先我们来创建一个纯蓝图项目。为什么要纯蓝图项目呢,因为ARKit默认只提供了几个蓝图方法。。。当然,你可以去修改插件的源码来暴露更多的方法给蓝图。
创建项目时选择Blueprint->Blank,设置成移动端,质量选择Scalable 3D or 2D,No Starter Content(如果有需要可以在项目中添加一个Mobile Starter Content)。
2. 启用ARKit插件
打开Plugins设置,找到Augmented Reality,勾上Apple ARKit,如果之前没勾的话,需要重启一下项目。简单易懂,不上图了
3. 创建Pawn
创建一个Pawn类(MyPawn),在根组件下添加一个Camera Component,编译,保存,关掉。
4. 创建GameMode
创建一个GameMode类(MyGameMode),把Default Pawn设置成MyPawn,编译,保存,关掉。然后在World Settings里把GameMode Override设置成MyGameMode。
5. 创建一个我们要显示的物体
创建一个Actor类(ARActor),在根节点下添加一个Cube,调整一下大小,把Scale设置成0.1吧,这样看起来不会太大。编译,保存,关掉。
6. 设置场景中的Actors
删除默认场景中的Actors,只留下PlayerStart,Skylight和Light Source,剩下的统统都干掉,并且不要忘了把PlayerStart的位置设置到0,0,0上。你应该能看到漆黑一片的场景,最后不要忘了保存当前关卡(ARKitMap)
7. 编辑MyPawn
添加一个Input Touch事件,然后和一个叫做Hit Test at Screen Position Tracking Space的节点连起来,这个节点在Apple ARKit分类下。Screen Position可以从Input Touch的Location针脚连过来,会自动又Vector转成Vector2D。Types提供了5个枚举选择,我们就选择默认的None好了,这5种枚举的具体不同可以去查阅官方的资料,这里不赘述。
这个节点也是ARKit的核心方法,用来检测真实世界的平面。从返回的数据 —— 一个Apple ARKit Hit Test Result Structures的数组,我们可以看到,该方法是支持多平面检测的,不过目前我们只用到一个面就够了。
接下来Break这个结构体,我们可以看到如下信息:
Type——Hit Test类型
Distance——相机与Intersection的距离
Transform——Intersection的Transform信息
Anchor——锚点(只有在Existing Plane模式下可用)
简单来说,拿到Transform之后,就可以在这个位置上生成我们的ARActor了,在此,我们只考虑Location的问题,Rotation和Scale请根据自己的需要调整。
那么程序上的事其实到此就结束了,接下来就是对项目进行设置,好让它在设备上跑起来。
8. 项目设置
1. 打开项目设置,在Description分类中的最下面勾上Start in AR。
2. 在Maps&Modes中将Default Maps设置成ARKitMap(就是我们刚刚保存的那个),Default GameMode换成MyGameMode
3. 打开iOS分类,设置好Mobile Provision,Certificate,Bundle Information。
如果你还不知道怎么在Windows PC打包或运行iOS App,请看我的另外两篇文章:
然后在Rendering目录下把Max Metal Shader Standard To Target 选成 Metal v1.2 或 v2.0;
OS Info中的Minimum iOS Version选成11.0;
如果你用的是Windows PC,那么Remote Build也要设置好;
在Orientation中只勾选Supports Landscape Right Orientation;
在Extra PList Data中输入:
<key>NSCameraUsageDescription</key>\n <string>UE4 需要摄像机使用权限才能使用 ARKit。</string>\n
这是为了获取苹果设备的摄像机使用权限
这些基本设置完成后就可以运行了。
9. 在设备上运行
在顶部菜单选择Launch旁边的下拉箭头,选择Project Launcher,点击右上角的Advanced。然后找到All_iOS_On_XXXX这一行,右边的Data Build选择By the book,这样的话所有内容在运行前就会被烘焙好。
点击Launch。别忘了把手机连到PC上。抽根烟喝口茶,等所有的项目都打上勾,就可以运行啦
10. 运行效果
打开App后,会提示你需要相机的权限,允许后就可以看到画面了。然而分辨率会比较低,这是ARKit的缘故。好了,现在找到一个平面,然后点一下,就可以看到我们可爱的Cube了。如果没有出来,就稍等一下,检测平面是需要时间的。