一种基于ARkit和二维码的虚拟场景定位方法与流程

文档序号:20833936发布日期:2020-05-22 16:38阅读:501来源:国知局
一种基于ARkit和二维码的虚拟场景定位方法与流程

本发明涉及互联网技术领域,具体的说是一种基于arkit和二维码的虚拟场景定位方法。



背景技术:

当前人们生活在一个互联网信息发达的社会中,随着ar技术的迅速发展,如何使虚拟世界灵活精准的定位投射到现实世界中,是非常重要的;随着互联网和移动互联网的迅猛发展,用户的使用要求也越来越挑剔,对应用软件的用户体验要求也越来越高;现有的虚拟场景模拟定位方法很难将虚拟场景灵活高效的锚固到现实世界中,整个应用的可用性不够稳定。

这时候就需要通过一种将灵活高效的虚拟场景锚固到现实世界的方法,提高整个应用的可用性。



技术实现要素:

针对现有技术中存在的不足,本发明设计了一种基于arkit和二维码的虚拟场景定位方法;能够将虚拟场景灵活高效的锚固到现实世界中,提高整个应用的可用性。

技术方案:本发明解决问题所采用的技术方案为:一种基于arkit和二维码的虚拟场景定位方法,包括以下步骤:

1)根据摄像机截图,将二维码区域颜色数据使用zxing库解码,获得二维码的三个定位点的屏幕坐标及二维码挂载的数据信息;

2)使用arkit技术获得当前扫码的平面,从摄像机位置向三个特征点分别发射三条射线,计算出三条射线与扫码平面的相交位置,即真实世界的二维码的三个特征点在arkit坐标系下的位置;

3)根据步骤2)中的三个特征点坐标计算得到二维码在arkit坐标系下的中心位置与旋转位置;

4)根据二维码的数据信息向服务器请求二维码得到二维码在虚拟场景下的位置、角度及缩放,根据步骤3)中的二维码在arkit坐标系下的位置,减去二维码在虚拟场景的位置,即可得出虚拟场景坐标原点在arkit坐标系下的位置;二维码在arkit坐标系下的角度反向旋转二维码在虚拟场景下的角度即可得出虚拟场景坐标原点在arkit坐标系下的旋转角度;同理可计算出缩放;

5)通过将二维码在服务器对应场景模型信息和二维码在虚拟场景的位置信息动态配置,达到虚拟场景与现实世界灵活结合的目的。

其中,所述步骤1)中具体实现方法为:根据摄像机屏幕ui的扫码框计算该框的屏幕区域rect并对32向上取整,读取该rect范围的颜色数据到color32[]数组colors中,将rgb编码的colors转换成yuv编码的byte[]buffer,并使用zxing库multiformatreader类decodewithstate方法进行解码操作,得到zxing库result类对象,其中特征点在resultpoints属性数组中,二维码存储的字符串数据在text属性中。

其中,所述步骤2)中具体实现方法为:通过resultpoints加rect的最小坐标,得到二维码特征点的屏幕坐标pts,通过摄像机的屏幕射线方法得到三个射线rays,使用arkit的arinterface获取一系列平面,根据步骤1)获取的字符串数据result.text获取二维码粘贴方向(水平或垂直)获取最优的plane数据模型,计算rays和plane的交点,得到二维码三个特征点实际位置,即controlpoints位置。

其中,所述步骤3)中具体实现方法为:通过步骤2)中得到的二维码的三个特征点,其左下角、左上角和右上角的索引分别设置为0、1、2;通过左下角和右上角的均值求出二维码的中心点坐标center,默认二维码的上方空间方向为vup,从二维码的中心到顶部中心计算得出前方向vforward,使用(controlpoints[0]-center)和(controlpoints[1]-center)的叉乘得到上方空间方向vup,通过quaternion.lookrotation(vforward,vup)得出二维码旋转的四元数;再根据现场粘贴二维码量取实际位置,估算二维码虚拟场景坐标,并配置到服务器。

其中,所述步骤4)中具体实现方法为:从result.text中的数据中得到虚拟场景sceneid和二维码maid,通过maid向服务器查询得到二维码在虚拟场景中的位置position和旋转rotation,反向移动和旋转即可得出虚拟场景坐标系中心在arkit坐标系的位置和旋转;根据场景id拉取场景数据加载场景渲染到屏幕。

其中,所述步骤5)中具体实现方法为:根据ar场景和现实世界结合的实际效果,微调整服务器存储二维码的虚拟场景位置,使ar场景和现实世界结合贴切。

有益效果:本发明与现有技术相比,具有以下优点:本发明中基于arkit和二维码技术可将虚拟场景高效灵活的定位到现实世界中,其主要通过获得二维码数据,对二维码颜色数据进行解码,通过arkit技术对二维码数据进行重新计算,获得二维码在虚拟场景中的三个特征点,之后通过旋转、计算二维码各坐标的方法定位二维码在虚拟场景中的位置,然后根据反向转转、计算等操作将其与现实世界结合,从而能够使ar场景与现实世界结合更加的贴切,能够精确定位虚拟场景在现实世界的位置。

附图说明

图1为本发明扫码界面ui图;

图2为本发明中二维码基本结构图。

具体实施方式

下面结合附图和具体实施例,进一步阐明本发明,本实施例在以本发明技术方案为前提下进行实施,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围。

实施例1

本实施1提供一种基于arkit和二维码的虚拟场景定位方法,包括以下步骤:

步骤1):根据图1中屏幕ui的扫码框计算该框的屏幕区域rect并对32向上取整,读取该rect范围的颜色数据到color32[]数组colors中,将rgb编码的colors转换成yuv编码的byte[]buffer,并使用zxing库multiformatreader类decodewithstate方法进行解码操作,得到zxing库result类对象,其中特征点在resultpoints属性数组中,二维码存储的字符串数据在text属性中;

步骤2):通过resultpoints加rect的最小坐标,得到二维码特征点的屏幕坐标pts,通过摄像机的屏幕射线方法得到三个射线rays,使用arkit的arinterface获取一系列平面,根据步骤1)获取的字符串数据result.text获取二维码粘贴方向(水平或垂直)获取最优的plane数据模型,计算rays和plane的交点,得到二维码三个特征点实际位置,即controlpoints位置。

步骤3):二维码的三个特征点如图2所示,其左下角、左上角和右上角的索引分别设置为0、1、2;通过左下角和右上角的均值求出二维码的中心点坐标center,默认二维码的上方空间方向为vup,从二维码的中心到顶部中心计算得出前方向vforward,使用(controlpoints[0]-center)和(controlpoints[1]-center)的叉乘得到上方空间方向vup,通过quaternion.lookrotation(vforward,vup)得出二维码旋转的四元数;再根据现场粘贴二维码量取实际位置,估算二维码虚拟场景坐标,并配置到服务器;

步骤4):从result.text中的数据中得到虚拟场景sceneid和二维码maid,通过maid向服务器查询得到二维码在虚拟场景中的位置position和旋转rotation,反向移动和旋转即可得出虚拟场景坐标系中心在arkit坐标系的位置和旋转;根据场景id拉取场景数据加载场景渲染到屏幕;

步骤5):根据ar场景和现实世界结合的实际效果,微调整服务器存储二维码的虚拟场景位置,使ar场景和现实世界结合贴切。

本发明根据二维码的特征点计算出二维码在arkit坐标系(arkit在真实世界构建的坐标系)下的位置和方向,通过二维码文本信息得出二维码在虚拟场景的位置和方向,把虚拟场景锚固到现实世界。

本发明中基于arkit和二维码技术可将虚拟场景高效灵活的定位到现实世界中,其主要通过获得二维码数据,对二维码颜色数据进行解码,通过arkit技术对二维码数据进行重新计算,获得二维码在虚拟场景中的三个特征点,之后通过旋转、计算二维码各坐标的方法定位二维码在虚拟场景中的位置,然后根据反向转转、计算等操作将其与现实世界结合,从而能够使ar场景与现实世界结合更加的贴切,能够精确定位虚拟场景在现实世界的位置。

上述具体实施方式只是本发明的一个优选实施例,并不是用来限制本发明的实施与权利要求范围的,凡依据本发明申请专利保护范围内容做出的等效变化和修饰,均应包括于本发明专利申请范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1