Unity8.物体空间定位(VuforiaAR)日志

实现主要参考:VuforiaAR物体空间定位(设备跟踪):http://blog.sina.com.cn/s/blog_8082aa610102x83i.html

 

高通 Vuforia SDK + Unity3D制作简易Android AR app

https://tieba.baidu.com/p/5086865037?red_tag=0740748620&traceid=

使用高通 Vuforia SDK http://www.cnblogs.com/mrmocha/p/9737448.html

EasyAR使用:https://www.easyar.cn/doc/EasyAR%20SDK/Getting%20Started/2.0/Setting-up-EasyAR-Unity-SDK.html

Easyar官方有一个关于模型的平移缩放的教程,点击查看,:

https://blog.csdn.net/qumoy/article/details/78228754

EasyAR开发技巧---模型交互操作:http://forum.easyar.cn/portal.php?mod=view&aid=5

脱卡:http://forum.easyar.cn/portal.php?mod=view&aid=28

ARCamera下也添加一个模型,并设置这个模型在你相机下的位置大小等参数(这里各位开发者可以将模型大小和位置修改为一致)

 

AR SDK基本分为几个主要功能。

1)动作捕捉:使用手机的传感器和相机,ARCore可以准确感知手机的位置和姿态,并改变显示的虚拟物体的位置和姿态

2)环境感知:感知平面,比如你面前的桌子、地面,在虚拟空间中准确复现这个平面

3)光源感知:使用手机的环境光传感器,感知环境光照情况,对应调整虚拟物体的亮度、阴影和材质,让它看起来更融入环境。

目前市面上有三款比较主流的AR SDK能支持unity进行AR的开发。分别是VuforiaARcoreARkit

ARcore是谷歌公司研发的AR SDK,软件开发者现在就可以下载它去开发Android平台上的增强现实应用,或者为他们的App增加增强现实功能。ARcore支持动作捕捉,环境感知与光源感知。是一个比较完善的AR SDK。缺陷在于目前只支持谷歌手机以及新版的三星手机,能支持的手机不多,开发成本略高。

ARkit是苹果公司研发的AR SDK,同样也支持动作捕捉,环境感知与光源感知,支持ARKitiOS设备为iPhone SEiPhone6siPhone 6s PlusiPhone 7iPhone 7 PlusiPad Pro (所有型号)9.7英寸iPad(2017)。缺点在于开发成本也相对昂贵,除了需要一部支持ARkit的设备以外,还需要一台支持苹果系统的电脑以及一个一年99美元的开发者账户。

Vuforia相对前几者而言相对简单,适合初级入门。它的原理其实就是图像识别,通过分析一张图片来确定一个平面,然后在这个平面上进行创作。不过目前暂不支持环境感知与光源感知,必须要通过特定的图片来识别平面,Vuforia的优势在于识别出来的平面相对而言比较稳定,只要摄像机能捕捉到有图片,那识别的平面基本不会出现抖动或者错位,这一点是环境感知暂时无法超越的地方。除此之外,Vuforia开发成本相对较低,并且支持大多数安卓系统。

EasyAR使用介绍:https://www.zhihu.com/question/35001692

于是老样子导入unity包进unity,发现image target的图片丢了,看了看文档,再想起之前用的是unity4.6版本,而这次是unity5 ,应该就是版本问题,果然换回unity4就没问题。

于是再次打包发布,这次不黑屏了,直接跳出字样是我的bundle idappid不符,该了多遍未果,于是就上QQ群问,折腾了一遍,发现是bundle的填写格式问题,得把com.company.productunitybundle端填写一致,appid也是一样。

EasyAR从我的使用体验上来看,相对Vuforia等国外产品使用简单、编程友好,随着更新推进,现在文档相对比较完善,目前除了视频存在问题以外,整体非常满意,自定义识别图比Vuforia更人性化,如果从功能特性、深度定制这两个方面来说略显不足,因为代码封装比较彻底,这种需求采用原生开发会比较好点,跨平台、免费、无水印是亮点,国产AR引擎做到这样感觉非常不错了,因为阅读ARToolkit的代码感觉非常复杂,其次就是现在社区缺乏活力,感觉无论从官方还是开发者都比较沉闷,每次到论坛里都发现没有什么有价值的内容,基本不更新。

某位博主写的关于EasyAR的四篇博客,基本覆盖了现在EasyAR的功能,更多的内容请看文档和官方示例:

http://qinyuanpei.com/2015/10/30/have-a-taste-of-easyar-01.html

http://qinyuanpei.com/2015/11/03/have-a-taste-of-easyar-02.html

http://qinyuanpei.com/2015/12/09/have-a-taste-of-easyar-03.html

http://qinyuanpei.com/2015/12/09/have-a-taste-of-easyar-04.html

可以访问最后一个地址,进入博客以后,这几篇文章是以系列形式撰写的

使用easyAR

为了初始化 EasyAR SDK,需要先在网页系统中生成key

登录 www.easyar.cn ,点击 开发中心-License管理 ,添加License Key

填写的app name

导入sdk后多出的文件

需要填app keylicense生成的长key,复制):

Bundle ID

 

com.Company.XXX

 

Bundle ID(iOS): com.Company.ARDesign

PackageName (Android): com.Company.ARDesign

SDK License Key:

UiyP1RsCJfAy4HCDoDDLBzHvwbjwAWRmL5vjIM1OeWdlzIles9jL4NDL17PSYJGYgrcxWXmnpieecy8EFGX7OJCaRwGfOVAq1THCYEB0wWqqJBYoSY5Y0EU7EY8qOmzUwOVoi22dG3kVIofpjNHqLQVGiarpXRn4XC3cub0JL7cL3uBpdA6OMTJlTUc4VShlKFy2ufYY

注:该SDK License Key对应的SDK版本为2.x。请在项目工程中输入SDK License KeySDK License Key必须和Bundle ID对应使用

 

我们在FileBuild Setting之后点击Player Setting,选择对应的platform. 

最后也是最关键的一部分,我们的Graphics API 使用的是OpenGLES2.如图:

http://zj-test.sightp.com/社区图片-渲染模型+脱卡/15.png

Easyar

高通有设备跟踪:

http://s7.sinaimg.cn/mw690/002lUyiJzy7knz8Jd8qb6

使用高通

支持包在File-Build setting的XR settings中可以下载

安装路径和引擎安装路径的Editor文件夹平级,否则fail to locate Unity.exe

高通文档:https://library.vuforia.com/content/vuforia-library/en/getting-started/overview.html

高通key

AdVxRLL/AAABme1DxPOD7U/ThXafckcdIOIf1wbO6UHxUYn34bEigse8MNkkRPvugeNSuBt76X0pTUI/RJbVdSyjqCX3fh2tEbnir/W95IsQDFyfFzQTcL5ZFqOKFM1ORNGVAOB5OYymoCuNs+e+ES3pptf5nQv7CHCtdt2vBqV4wYRT4CZyx/6w82JgbwLCS4APs4lQ6h/83qgHkCZwKofaAGwL3mUMdRQkOp6jgE90rG+thJ7/Kmr8SdW2jQK7Bpz33faRynX8VJ3o7zTNmE7stCIcg6KhFHIrehunCTuCz/UYKe5WCaOlENBlUINrAQjLZghrEZlxaPJ+KiWiDwOqAQt0fKPJ9Nsto59WI2pGFqz8xp1sOEnY

Plan Type: Develop

Status: Active

License UUID: 781a4c7065c34df093c42da582807dad

Permissions:

  • Advanced Camera
  • External Camera
  • Model Targets
  • Watermark

History:

  • License Created - Today 16:45

 

参考http://blog.sina.com.cn/s/blog_8082aa610102x83i.html

需要注意一点设备需要有陀螺仪

启动程序转动摄像头,我们会发现模型就固定现实场景的某个位置,不会固定在屏幕的某个位置。这就实现了物体空间定位的效果

报错

Exception in callback: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object

  at Vuforia.VuforiaManager.Update (ScreenOrientation counterRotation, System.Boolean& reapplyOldState) [0x00000] in <filename unknown>:0

  at Vuforia.VuforiaARController.UpdateStatePrivate (Boolean forceUpdate, Boolean reapplyOldState) [0x00000] in <filename unknown>:0

  at Vuforia.VuforiaARController.UpdateState (Boolean forceUpdate, Boolean reapplyOldState) [0x00000] in <filename unknown>:0

  at Vuforia.DigitalEyewearARController.Update () [0x00000] in <filename unknown>:0

  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)

  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x000d0] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222

  --- End of inner exception stack trace ---

  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x000eb] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232

  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115

  at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000b9] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Delegate.cs:443

  at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00018] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/MulticastDelegate.cs:71

  at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Delegate.cs:415

  at Vuforia.DelegateHelper.InvokeDelegate (System.Delegate action, System.Object[] args) [0x00000] in <filename unknown>:0

UnityEngine.Debug:LogError(Object)

Vuforia.DelegateHelper:InvokeDele

可能是误删(丢失了某个文件)尝试全部删除后重新导入

识别图片与其上物体的大小比例可能会影响效果

发现电脑中无法实现物体空间定位(可能是因为没有陀螺仪)但手机可以

注意需要定位的物体与ARCamera平级

识别(最后不需要)

参考高通文档:https://library.vuforia.com/content/vuforia-library/en/getting-started/overview.html

教程集合:http://www.arvrschool.com/read.php?tid=325&fid=21

Vuforia介绍 https://www.cnblogs.com/mrmocha/p/9737448.html

1.相机的世界中心设置

a.SPECIFIC_TARGET:制定一个物体作为世界中心坐标

b.FIRST_TARGET:摄像机所照射到的第一个需要识别的目标为世界中心坐标

C.CAMERA:摄像机为世界中心的坐标

D.DEVICE_TRACKING:设备追踪(以我们设备正在追踪的物体为世界中心坐标)

警告(但无影响):

Vuforia Configuration "No webcam profile has been found"

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Unity 是一款广泛用于游戏开发的跨平台引擎,它支持多种操作系统和设备,包括 iOS(苹果的移动操作系统)。而 com.ptc.vuforia.engine 则是 Unity 中用来支持增强现实(AR)功能的一个插件。 在 Unity 中打包 iOS 平台,我们首先需要确保已经安装了适用于 iOS 的开发环境及相关证书。然后,在 Unity 中进行以下步骤来进行打包: 1. 首先,选择菜单栏中的 File(文件)--> Build Settings(构建设置)打开构建设置窗口。 2. 在构建设置窗口中,选择 iOS 平台,并点击 Switch Platform(切换平台)按钮。Unity 将会重新编译项目以适应 iOS 平台。 3. 然后,点击 Player Settings(播放器设置)按钮,打开 Player Settings 窗口。 4. 在 Player Settings 窗口中,我们需要设置一些 iOS 相关的选项,包括应用程序的图标、权限、名称等。 5. 在设置完成后,点击 Build(构建)按钮,选择一个目录来保存生成的 Xcode 项目。 6. Unity 将会自动导出 Xcode 项目文件,我们可以使用 Xcode 来进一步修改和打包应用程序。 7. 打开导出的 Xcode 项目,在 Xcode 中选择合适的开发证书和设备,然后进行编译和打包。 8. 最终,我们将得到一个用来在 iOS 设备上安装和运行的应用程序。 需要注意的是,如果项目中使用了 com.ptc.vuforia.engine 这个插件来支持 AR 功能,我们需要确保该插件已经正确导入到 Unity 项目中,并且在打包 iOS 时也包含了相关的资源文件和设置。 总而言之,Unity 提供了便捷的打包方式来将游戏或应用程序导出到 iOS 平台,并且通过 com.ptc.vuforia.engine 这个插件,我们可以进一步增强应用程序的功能,实现更出色的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值