ARkit 收藏本版 已有4人收藏 +发表新主题
查看: 26268|回复: 5
打印 上一主题 下一主题

ARKit 与Unity桥接

[复制链接]

ARKit 与Unity桥接

我揍四謯尅 发表于 2017-8-8 17:53:42 浏览:  26268 回复:  5 只看该作者 复制链接
本帖最后由 我揍四謯尅 于 2017-8-8 18:09 编辑

一:ARkit
1.ARkit 们看看它到底带来了什么功能:
       第一,快速稳定的运动定位,非常稳定且准确,说明精度很不错,说明鲁棒性很好,渲染模型很流畅,实时性和算法能耗都深度优化过,尺度估计,估计整个场景和模型的走动,对各个开发平台或引擎的支持。
2.目前ARkit有何不足:
       三维重建的能力,目前的ARkit仅仅支持平面的“重建”,这里姑且先算做重建,因为是否支持垂直面,任意角度的平面,甚至多个平面目前都还不确定(从目前发出来的文档看只支持水平面,说明平面的拟合可能是依赖于IMU的,仅用部分点云判断深度信息)。就算ARkit包含完整的平面重建能力,对于AR应用来说依然还是不足够的。
就是识别的能力:
与Vuforia 对比他没有识别物体,这种算法!他有一个跟踪类,里面具体算法效果,从现在看能够识别平面!其余的没有!
       1.苹果生态上不再需要第三方AR SDK
       2.对开发者而言,仅需了解跟进ARKit。
       3.目前的能力还有限,9月份看iPhone 8 。
       4.对各个开发平台或引擎的支持。
对unity 开发人员来说:
       ARKit对于熟悉iOS原生开发的开发者来说,非常容易上手;对于习惯了基于Unity做AR开发的国内开发者来说,则需要掌握一定的OC或Swift 语言。功能上,ARKit和当下的AR SDK有一定的区别,它的功能里面没有包含图像识别、云识别等基础的AR功能,并且它不是一个跨平台的开发工具。
应用范围:
       ARKit更像是苹果提供给iOS开发者的一个AR SLAM功能开发包。ARKit的SLAM表现是很好的,对基于AR SLAM功能来开发应用的开发者来说,是一个福音。所以,如果开发者只面向iOS ipohne6S以及以上机型市场,且应用开发不需要图像识别、云识别等基础AR功能的前提下,ARKit会是很好的选择。
SLAM解释:移动机器人的同步自定位与地图创建研究进展,真正全自主移动机器人的关键。
https://www.leiphone.com/news/201605/5etiwlnkWnx7x0zb.html

二:Unity与ARKit
       Apple 提供一个开源的Unity-ARKit-Plugin 插件。是专门为ARKit制作的unity包!这个插件公开了ARKit SDK的世界跟踪能力,显示了摄像头的视频输入、平面检测和更新、点云提取、光估计,以及为他们的AR项目向Unity开发人员测试API。这个插件是一个预览质量构建,可以帮助您快速启动并快速运行此技术,但是实现和api可能会改变以迎合底层技术。
       要求配置:
          unity版本,v5.6.1p1 +
          iOS 11 +
          Xcode beta 9和最新的iOS SDK,包含了ARKit框架
支持ARKit的iOS设备(iPhone 6S或更高版本,iPad(2017年)或以后)A9含A9以上的处理器。
    1.在iOS里实现AR场景的,模型只能读SCN后缀和obj后缀的模型,OBJ的模型是没有动画的。!(然后效果是比较差的,还是有很多局限性的,这块我还要进一步的研究ARKit);
    2.在unity方面,具体跟unity效果对比我不知道,但是楚发是认可的,ARKit的效果的。(还是需要进一步的研究,和深挖的,目前都是基本的)
下面是ARKit在unity流程顺序:
       1。读读ARKit和它是如何工作的高水平(https://developer.apple.com/documentation/arkit/understanding_augmented_reality)。这个插件提供了与ARKit本地接口相对应的脚本API,然后通过创建一些使用该接口的GameObject组件来建立它。
       2。请参考本项目中的示例场景,了解我们如何构建提供的ARKit示例应用程序。UnityARSessionNativeInterface。cs和NativeInterface文件夹具有最低级别的API。详情见下文。
       3。获得一个基于“增大化现实”技术的使用UnityARSessionNativeInterface.GetARSessionNativeInterface原生会话界面()。让我们在本教程中调用这个m_session。(见UnityARCameraManager.cs)
       4。创建一个ARSession通过调用m_session.RunWithConfig(配置),将一个ARKitWorldTrackingSessionConfiguration配置(6自由度)或ARKitSessionConfiguration(3自由度)与相应的参数设置来确定你想要什么样的会话。还可以使用m_session初始化。RunWithConfigAndOption(config,option),如果其中一个已经启动,则允许重置会话。(见UnityARCameraManager.cs))
       5。每一次更新,使用m_session . getcamerapose()来获得对摄像机位置和旋转的ARKit理解。使用改变坐标系统的效用函数来确定在统一场景中摄像机的位置和旋转应该是什么。例如camera.transform。localPosition = UnityARMatrixOps.GetPosition(矩阵);camera.transform。localRotation = UnityARMatrixOps。GetRotation(矩阵);(见UnityARCameraManager.cs)
       6。每次更新,使用m_session。getcamera投影()来获取相机投影参数和使用相机的ARKit理解。在Unity相机上设置一个投影矩阵(见unityarcameramanager . cs)
       7。在主相机上,添加UnityARVideo单行为组件,并在检查器中设置清楚的材料,以指向项目中的YUVMaterial。你可以从源代码中看到它的功能:每一个帧,它都采用两个纹理来组成ARKit想要从相机中显示出来的视频,并使用YUVMaterial着色器将它们组合到由相机呈现的背景中。(见UnityARVideo,cs)
       8。此时,您应该能够在场景中放置一堆3D对象,构建并运行它,并能够看到您放置的对象,并在场景中移动设备,从而在场景中移动设备。
       9。您可以使用ARKit提供HitTest API来与场景交互。看到https://developer.apple.com/documentation/arkit/arhittestresult.resulttype类型的东西你可以在现场。m_session。HitTest(point,resultTypes)将返回命中结果的列表。您可以使用结果来确定放置虚拟对象的位置。(见UnityARHitTestExample.cs)
       10。如果你有要求ARKit为你做飞机检测在会话中配置,可以钩到ARKit返回的事件对于那些通过插件:UnityARSessionNativeInterface。ARAnchorAddedEvent UnityARSessionNativeInterface。ARAnchorUpdatedEvent,UnityARSessionNativeInterface.ARAnchorRemovedEvent。所有这些的代表都采用了形式锚点更新(ARPlaneAnchor ARPlaneAnchor)。您可以选择渲染与这些飞机相对应的游戏对象,或者仅仅使用它们来“锚定”您的虚拟内容。(见UnityARAnchorManager.cs)
       11.如果你想获得ARKit帧更新,包括点云数据(https://developer.apple.com/documentation/arkit/arpointcloud),钩到UnityARSessionNativeInterface.ARFrameUpdatedEvent事件。委托的形式ARFrameUpdated(unityarcamera),你可以从unityarcamera.pointCloudData获得点云数据。(见PointCloudParticleExample.cs)
       12。在前面的步骤中使用ARFrameUpdateEvent还可以使用更新摄像机的位置、旋转和投影矩阵(而不是步骤5和步骤6),但是要注意,这将以ARKit的速度更新,而不是更新统一渲染引擎的速率。您可能必须使用提供的实用功能来获取正确的坐标系统的结果。13。您可以获得场景的光估计(https://developer.apple.com/documentation/arkit/arlightestimate)通过调用m_session.GetARAmbientIntensity()在每一个更新。(见UnityARAmbient.cs)

三: Unity  code追踪:
UnityARCameraNearFar
1.unity 入口。!获取相机的距离,物体和相机距离小于最近和大于最远都看不到(在视野范围内)
    void UpdateCameraClipPlanes()
    {
        currentNearZ = attachedCamera.nearClipPlane;
        currentFarZ = attachedCamera.farClipPlane;
        UnityARSessionNativeInterface.GetARSessionNativeInterface ().SetCameraClipPlanes (currentNearZ, currentFarZ);   
    }
2.UnityARSessionNativeInterface (这个类里面就是创建一个AR,和iOS搭建起来)
        public static UnityARSessionNativeInterface GetARSessionNativeInterface()
        这个方法就返回一个AR场景。
        如果是unity编辑器,他就调用unity_CreateNativeARSession时时获取相机的各种属性来创建一个m_NativeARSession,
        private static UnityARCamera s_Camera;
        这个相机下面的全部都是外部方法就是用这些方法来设置的
        最后通过m_session.RunWithConfig 来运行一个AR。
3.UnityARCameraManager
    void Update ()
    {
        if (m_camera != null)
        {
            // JUST WORKS!            
            Matrix4x4 matrix = m_session.GetCameraPose();
            m_camera.transform.localPosition = UnityARMatrixOps.GetPosition(matrix);
            m_camera.transform.localRotation = UnityARMatrixOps.GetRotation (matrix);
            m_camera.projectionMatrix = m_session.GetCameraProjection ();
        }
    }
4.UnityARHitTestExample
这是一个ARkit追踪类的一个类型。。!
这里面是获取显示的内容的,AR追踪的是什么物体。。!



【转载】
ARKit技术交流qq群:482631386
ARVR训练营:www.arvrthink.com

分享至:
| 人收藏
回复

使用道具 举报

该用户从未签到

沙发
重庆生活网l 发表于 2017-10-25 21:51:43 只看该作者
顶你,支持楼主!有意思













第五代QQ机器人QQ群机器人论坛QQ机器人智能客服机器人QQplus机器人QQ群互联机器人..联系QQ800829129 QQ群28352615
回复 支持 反对

使用道具 举报

该用户从未签到

板凳
重庆生活网l 发表于 2017-10-26 18:37:34 只看该作者
交流贴,继续努力发好帖













第五代QQ机器人QQ群机器人论坛QQ机器人智能客服机器人QQplus机器人QQ群互联机器人..联系QQ4000017854
回复 支持 反对

使用道具 举报

该用户从未签到

地板
Scarlett_1990 发表于 2017-11-16 10:06:19 只看该作者
ARKit 入门到精通视频教程地址:
蛮牛地址:   http://edu.manew.com/course/396
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2019-3-25 21:42
  • 签到天数: 2 天

    [LV.1]初来乍到

    5#
    wj7636 发表于 2019-3-17 13:31:16 只看该作者
    谁陪我一起水咩??? 尼玛甚是无聊啊!!!!            悬浮门 http://www.ssmdd.com
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-3-25 21:42
  • 签到天数: 2 天

    [LV.1]初来乍到

    6#
    wj7636 发表于 2019-4-10 17:12:22 只看该作者
    【无论是多么无聊的帖子我都会去的】!! 悬浮门http://www.ssmdd.com
    回复 支持 反对

    使用道具 举报

    *滑动验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Copyright © 2013-2017 ARinChina-增强现实中国技术论坛   All Rights Reserved.