Unit Vuforia AR 学习之ground plane

zheenyuan 2019-10-20

这个必须要吐槽一下,花了一个星期,才把ground plane在iphone5s上跑起来了。中间各种坑。参考了网上的各种资料。最后发现问题出在官网教程有一个问题,所以导致没有办法运行。因此在这里留个贴,希望后续大家不要再这个问题上跌倒了。

系统1Win7, Unity3d 2017.4.10f1, Vuforia 7.0.43,  红米Pro, Android 6, 红米6S, Android 8.
系统2Mac book air, OS 10.10.37, Unity3d 2017.4.10f1, Vuforia 7.0.43, Xcode 9, iphone 5S, iOS 10.3.3

中间各种坑。

1,首先就是按照Unity的官方manual,https://docs.unity3d.com/Manual/vuforia-sdk-overview.html。一步一步的学习制作Vuforia AR,先是完成了Image Targets部分,一切顺利,在系统1,android红米pro上面跑起来了,相安无事。

2, 但是接下来做ground plane的时候就有问题了,unity官方竟然没有教程。其实groundplane是很重要的功能,将来AR一定是基于现实生活环境的,但是Unity竟然没有提供这部分的教程。猜测一下,估计unity是了解到目前这个技术基于手机传感器,精度比较低,虚拟模型位移计算不准确,还有很大瑕疵,所以还不急于推广?不管怎么样,如果Unity没有教程,那么我们就找Vuforia。

Vuforia教程https://library.vuforia.com/content/vuforia-library/en/articles/Solution/ground-plane-guide.html,写的很详细,一步一步照着做呗。但是在系统1红米Pro手机上运行,为毛什么都不发生?镜头里什么都没有?

pic1.

好吧,我承认红米Pro有点老,硬件上不见得支持。(这里还是要吐槽一下Vuforia, 他们有一个支持Ground plane的手机机型列表https://library.vuforia.com/articles/Solution/vuforia-fusion-supported-devices.html,里面的机型比较少,我本来以为是列表不全面,后来才发现真的只有那些列表上的机型才支持!)那我们就换成最新的红米6S(2018年8月刚发布的)还是什么都不发生!好吧,我投降。你列表上面有iphone5S对吧,那我就在iphone上面跑。调试好系统2,iphone5S之后,还是光有镜头,什么都不发生,好吧,这回不怪我了吧,一定是哪里有问题!

3, 参考了网上的各种资料:

https://blog.csdn.net/testiness_wind/article/details/78909705, testiness_wind大神应该是对groundplane理解很深刻的,但是这篇教程缺失了最关键的真机展示环节。

http://www.manew.com/blog-184645-43577.html,这一篇有真机展示环节,但是是基于Unity assetstore上面的示例工程的,没过多技术和操作方面的内容。还有红米note3上都能运行,为毛我的红米6S都不行!!!(后来突然发现红米note3竟然更贵)

http://www.arvrschool.com/read-7293,这一篇有真机展示,说assetstore上面的示例教程无法运行,adroidstudio版本可以运行。但是我又没装Androidstudio,怎么调试呢?

4,示例工程。

后来实在是没办法了,还是把unitystore上面的示例工程跑一边吧。(为什么没有早一点运行这个,实在是因为长城宽带链接不上unityID登陆啊,一直是只能看到unitystore 上面的资源,但是希望下载就显示Unity ID无法登陆,严重吐槽长城宽带!)蹭了公司网络下载了assetsotre示例工程,build到系统1我的红米手机上,我晕,各种提示机型不支持!我投降。换成系统2,iphone5S,成功!为什么示例工程可以,而我自己建立的工程不行?

5 vuforia 分析:
遇到根本原因问题了,简单的照猫画虎看来是不行了,还是埋下头来看代码吧。一共就是加入了2个gameobject, 一个Ground Plane stage, 一个Plane Finder. 其中Ground pLane stage 里面没有什么内容,重点看这个Plane Finder:

Unit Vuforia AR 学习之ground plane
 Plane Finder 里面一共有3个components。
  • Anchor Input Lister Behaviour.
  • Plane Finder Behaviour.
  • Content Positioning behaviour.
5.1 查看了API,Anchor Input Listener Behaviour只是调用一个InputRecievedevent:
Unit Vuforia AR 学习之ground plane
这个InputRecievedevent是一个Unityevent,
Unit Vuforia AR 学习之ground plane
在默认配置里调用了Plane Finder Behaviour里面的performhittest方法。
piC。
这么看起来这个Anchor Input Lister Behaviour. 没什么问题。继续往下。
5.2 Plane Finder Behaviour.里面有Performhittest
方法,有
Unit Vuforia AR 学习之ground plane
 
(未完待续。。。。)