先附上我简单做的图片识别AR
模型来自b站 喵刀Hime 大佬,点击可互动
上面的例子是用EasyAR做的
以下是我在siki学院的学习笔记,仅供参考
##EasyAR
导入EasyAR的包(EasyARSense_3.0.1-final_Basic_Unity),在EasyAR的官网可下载。
这里我用的是EasyAR3.0,3.0会了用4.0也没问题(单指图片识别)
在官网自己的账号里新建一个密匙,选择EasyAR Sense 3.0 Pro 试用,Bundle ID 和 Package Name 自己编一个,如com.xxx.EasyAR,到时候在unity也要和它一样
在3.0EasyAR -> Common -> Resources -> EasyARKey -> 输入密匙
( 4.0EasyAR 的话在-> Change License Key -> 输入密匙)
打开Assets/Samples/Scenes/HelloAR_ImageTarget.unity
(也可以新建Scene,主摄像机添加Camera Image Renderer
复制HelloAR_ImageTarget.unity里的ImageTarget到新Scene
将Main Camera分别拖给EasyAR_Setup -> ARSession -> Camera Background和ImageTracker -> Target Camera,改变Main Camera -> Clear Flags为Solid Color,-> Rendering Path改为Forward
)
选择你准备好的、要AR显示的模型,拖入到ImageTarget下(将ImageTarget下原有的物体删除干净)
往StreamingAssets拖你准备图片
在ImageTarget的Target Path写下图片的相对路径(即直接写图片名字.jpg)
多图识别
EasyAR_Setup -> ImageTracker -> Simultaneous Num 改数字
然后复制一个ImageTarget,步骤同上
生成.etd文件,可以不用看
.etd文件可以代替你的.png图片
EasyARSense_3.0.1-final_Basic_Samples_Windows -> HelloARImageTargetDataGenerator -> HelloARImageTargetDataGenerator.sln 打开,找到
int main(int argc, char **argv)
{
std::string saveDir = argc == 2 ? argv[1] : "";
// initialize
auto result = easyar::Engine::initialize("===PLEASE ENTER YOUR KEY HERE===");
将=PLEASE ENTER YOUR KEY HERE=改为自己的密匙
将自己的图片放到assets文件夹下
找到
loadFromImage(tracker, "idback.jpg", "idback", onCompleted);
loadFromImage(tracker, "namecard.jpg", "namecard", onCompleted);
把idback.jpg和idback改成自己的图片
(auto totalImageCount = 2;是调用图片的个数,有几张图片写几个)
点击运行一下
将HelloARImageTargetDataGenerator\x64\Debug下生成的.etd文件拖到StreamingAssets下
##ARCore
我用做了一个AR传送门,蛮好玩的,b站有不少up已经做出来了,就不多说了
ARCore很看重手机的型号,我的手机就运行不了……还是用我表妹的手机测试的
使用ARCore要注意的设置:
官方给的基本设置:
Player Settings > Other Settings > Package Name 创建一个 Java 软件包名称格式的唯一应用 ID。
例如,使用 com.example.helloAR
Player Settings > Other Settings > Minimum API Level Android 7.0 或更高版本(主要看你安装的Android Studio的SDK具体有啥,找不到/不知道就别改,默认)
Player Settings > Other Settings > Target API Level Android 7.0 或更高版本
Player Settings > XR Settings > ARCore Supported
启用