CN111475026B - 一种基于移动终端应用增强虚拟现实技术的空间定位方法 - Google Patents
一种基于移动终端应用增强虚拟现实技术的空间定位方法 Download PDFInfo
- Publication number
- CN111475026B CN111475026B CN202010277053.3A CN202010277053A CN111475026B CN 111475026 B CN111475026 B CN 111475026B CN 202010277053 A CN202010277053 A CN 202010277053A CN 111475026 B CN111475026 B CN 111475026B
- Authority
- CN
- China
- Prior art keywords
- mobile terminal
- virtual
- camera
- model
- pintype
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/01—Indexing scheme relating to G06F3/01
- G06F2203/012—Walk-in-place systems for allowing a user to walk in a virtual environment while constraining him to a given position in the physical environment
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供一种基于移动终端应用增强虚拟现实技术的空间定位方法,包括以下步骤:步骤S1.通过移动终端上的AR应用程序调用摄像头,使得摄像头聚焦于基准面;步骤S2.计算出基准面位置;步骤S3.在基准面上的基准点放置第一个模型;步骤S4.移动摄像头到第二个模型摆放的位置;步骤S5.基准面延伸生成虚拟平面,以摄像头为原点生成虚拟射线;步骤S6.虚拟平面与虚拟射线相交生成新基准点;步骤S7.在新基准点放置第二个模型,即完成空间定位。本发明解决了原有空间定位增强现实技术中的多次定位基准面引发的模型不在同一水平面上的问题。
Description
技术领域
本发明涉及图像模式识别领域、增强虚拟现实领域、增强虚拟现实空间定位领域,更具体地涉及一种基于移动终端应用增强虚拟现实技术的空间定位方法。
背景技术
AR增强虚拟技术是通过移动终端所附带的摄像头捕捉真实的物理空间,并将虚拟物体或动物(以下均称模型)放置于该物理空间中,通过显示设备将模型和真实空间同时呈现出来。
在进行模型放置的时候,有两种方式:
第一种:屏幕定位
不进行空间主动追踪识别,所放置的模型是基于移动终端所捕捉和画面中某一个位置,也可以沿屏幕的二维坐标系移动,一般称之为“屏幕定位”。这种方式所放置的模型感觉是悬浮于真实场景上面,不能与真实环境很好地融合,画面显得不真实,仅能用于很低端的游戏类应用。例如AR相机一类的运用APP,识别人脸后在屏幕上增加一个特效图层,运用前景非常有限。
第二种:空间定位
在增强现实运用启动时,首先会创建一个虚拟的三维空间,同时并记录下此时移动设备在虚拟空间中的位置。设备摄像头开启后,扫描周边环境,例如地面,并将其定义为基准面。该方式在定义基准面以后,AR应用程序将以此基准面为虚拟物体(以下统称模型)的放置平面。此时,观察者这既可以通过屏幕触控来来移动模型以改变和观察者相对位置,也可以让模型不移动,走到模型附近。
这种方式可以实时的扫描追踪实际空间中的各类几何面,并将其添加到虚拟空间中,同时给定一个坐标。换句话说,通过感知观察者周围的环境,构建了一个相应虚拟空间坐标系,并以此为基础放置模型,再与摄像头采集到的真实画面重合,得到一个虚拟与现实重合的效果。
目前绝大多数数码摄像头都是采用相位差对焦,从而逆向计算出对焦点与镜头的距离,即物距。但居于微型摄像头的物理尺寸,有效对焦的距离是非常有限的,基本上不超过5米,超出的5米后,则被设定为+∞,此时就无法获得有效距离。此外,利用相位差的方式逆推物距在垂直于对焦点时,物距相对比较准确。另外,原技术路线只能在以观察者为圆心,半径不到5米的范围内放置模型。虽然通过观察者的移动可以扩大放置空间,但由于摄像头本身的视角有限,一般在105°左右,而人眼视角有168°,若想通过移动设备看到理想虚拟与现实混合效果,放置模型后还必须向后退,而放置的时候必须前移(有效放置距离小于5米)。这样来回走动识别空间不仅非常繁琐,而且引发的问题就是产生了多个基准面,导致放置多个模型时,很可能不在一个水平面上。
发明内容
本发明提供了一种基于移动终端应用增强虚拟现实技术的空间定位方法,以解决原有空间定位增强现实技术中的多次定位基准面引发的模型不在同一水平面上的问题。
为解决上述技术问题,本发明所采用的技术方案是:一种基于移动终端应用增强虚拟现实技术的空间定位方法,包括以下步骤:
步骤S1.通过移动终端上的AR应用程序调用摄像头,使得摄像头聚焦于基准面;
步骤S2.计算出基准面位置;
步骤S3.在基准面上的基准点放置第一个模型;
步骤S4.移动摄像头到第二个模型摆放的位置;
步骤S5.基准面延伸生成虚拟平面,以摄像头为原点生成虚拟射线;
步骤S6.虚拟平面与虚拟射线相交生成新基准点;
步骤S7.在新基准点放置第二个模型,即完成空间定位;
步骤S8.当摆放第N个模型时,重复步骤S4至步骤S7即可。
进一步地,步骤S1包括:
步骤S11.聚焦前,预选一个地面作为基准面,将移动终端上的摄像头垂直向下,且与地面保持一段距离;
步骤S12.聚焦后,生成一个基准面,即虚拟地面。
进一步地,步骤S2包括:
步骤S21.聚焦后,得出基准面的垂直坐标-Z,即可得出基准面的坐标为(0,0,-Z)。
进一步地,步骤S5包括:
步骤S51.倾斜放置移动终端,使移动终端上的摄像头方位角介于水平方向和垂直方向之间。
进一步地,步骤S6包括:
步骤S61.计算出新基准点位置。
进一步地,步骤S61包括:
步骤S611.使用重力传感器得出方位角坐标为(x1,y1,z1);
步骤S612.结合基准面的垂直坐标-Z,即可计算出方位角的虚拟三角形的另外两条边的长度;
步骤S613.通过向量分解计算得到新基准点坐标中的(X,Y);
步骤S614.将基准面的垂直坐标-Z代入新基准点坐标中Z轴坐标;
步骤S615.即可得出新基准点坐标为(X,Y,-Z)。
优选地,步骤S614包括:
步骤S6141.当移动终端在空间上发生位移时,通过惯性陀螺仪获取移动终端在Z轴坐标上的变化量z2;
步骤S6142.用-Z减去z2即可获得新基准点垂直坐标(-Z-z2)。
优选地,当摄像头的方位角发生变化时,方位角坐标的更新设定在点击屏幕需要放置模型的相应事件中,以确保获取的方位角坐标是最新的,最大限度减小新基准点坐标在X轴和Y轴方向上的误差。
优选地,将整个获取新基准点坐标运算过程封装为ARWorldHit函数,在激活放置模型事件和屏幕单击事件时调用该函数,即可返回所需的坐标位置。
优选地,当模型移动时,在激活移动事件响应和手指滑动事件中调用ARWorldHit函数,获得模型所需的目标位置坐标,并确保了模型是沿着地面或墙面移动的。
优选地,当在X轴方向上或Y轴方向上的同一平面上摆放多个模型,识别一次基准面即可。
该方案原理是利用移动设备首次主动识别所确认的基准面后,在点击屏幕时,沿摄像头方向指向的水平分量方向生成虚拟平面延伸面,同时所点击屏幕的方向(即角度)发射一条虚拟射线。射线角度与水平角度小于90°就必然与延伸面相交,交点坐标即放置模型的坐标。这一坐标的垂直方向(Z轴的值)与先前的基准面完全一致,所以能将多个模型的高度误差降至零,同时又省去了多次识别基准面的繁琐操作。
与现有技术相比,本发明具有以下有益效果:本发明在AR应用软件中应用时,仅需在第一次摆放模型前对基准面进行一次识别即可,后续放置模型时即可自动识别基准面,无须再进行主动识别的操作,体验感更好,操作更加流畅。在同一场景中摆放若干个模型时,则可将繁杂的主动识别操作完全简化,大幅提升工作效率。同时,一次识别还将所有模型放置于同一的基准面,避免了出现多次定位基准面时引发的模型不在同一水平面上的情况。消除了原有技术路线真实空间坐标高度误差的问题;消除了原有技术路线移动模型时偶发的悬浮问题;提升了摆放模型的效率和空间范围。
附图说明
图1为本发明一种基于移动终端应用增强虚拟现实技术的空间定位方法的方法步骤示意图。
图2为本发明一种基于移动终端应用增强虚拟现实技术的空间定位方法的实施例二中的步骤示意图。
图3为本发明一种基于移动终端应用增强虚拟现实技术的空间定位方法的基准面的示意图。
图4为本发明一种基于移动终端应用增强虚拟现实技术的空间定位方法的基准点的示意图。
图5为本发明一种基于移动终端应用增强虚拟现实技术的空间定位方法的ARWorldHit函数的示意图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
下面结合实施例对本发明作进一步的描述,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域的普通技术人员在没有做出创造性劳动前提下所获得的其他所用实施例,都属于本发明的保护范围。
请参阅图1至图5,图中所示者为本发明所选用的实施例结构,此仅供说明之用,在专利申请上并不受此种结构的限制。
实施例一
如图1所示,一种基于移动终端应用增强虚拟现实技术的空间定位方法,包括以下步骤:
步骤S1.通过移动终端上的AR应用程序调用摄像头,使得摄像头聚焦于基准面;
步骤S2.计算出基准面位置;
步骤S3.在基准面上的基准点放置第一个模型;
步骤S4.移动摄像头到第二个模型摆放的位置;
步骤S5.基准面延伸生成虚拟平面,以摄像头为原点生成虚拟射线;
步骤S6.虚拟平面与虚拟射线相交生成新基准点;
步骤S7.在新基准点放置第二个模型,即完成空间定位;
步骤S8.当摆放第N个模型时,重复步骤S4至步骤S7即可。
其中,步骤S1包括:
步骤S11.聚焦前,预选一个地面作为基准面,将移动终端上的摄像头垂直向下,且与地面保持一段距离;
步骤S12.聚焦后,生成一个基准面,即虚拟地面。
本实施例中,步骤S2包括:
步骤S21.聚焦后,得出基准面的垂直坐标-Z,即可得出基准面的坐标为(0,0,-Z)。
优选地,步骤S5包括:
步骤S51.倾斜放置移动终端,使移动终端上的摄像头方位角介于水平方向和垂直方向之间。
本方案中,步骤S6包括:
步骤S61.计算出新基准点位置。
进一步地,步骤S61包括:
步骤S611.使用重力传感器得出方位角坐标为(x1,y1,z1);
步骤S612.结合基准面的垂直坐标-Z,即可计算出方位角的虚拟三角形的另外两条边的长度;
步骤S613.通过向量分解计算得到新基准点坐标中的(X,Y);
步骤S614.将基准面的垂直坐标-Z代入新基准点坐标中Z轴坐标;
步骤S615.即可得出新基准点坐标为(X,Y,-Z)。
此方案中,步骤S614包括:
步骤S6141.当移动终端在空间上发生位移时,通过惯性陀螺仪获取移动终端在Z轴坐标上的变化量z2;
步骤S6142.用-Z减去z2即可获得新基准点垂直坐标(-Z-z2)。
更好地,当摄像头的方位角发生变化时,方位角坐标的更新设定在点击屏幕需要放置模型的相应事件中,以确保获取的方位角坐标是最新的,最大限度减小新基准点坐标在X轴和Y轴方向上的误差。
更优地,将整个获取新基准点坐标运算过程封装为ARWorldHit函数,在激活放置模型事件和屏幕单击事件时调用该函数,即可返回所需的坐标位置。
优选的方案中,当模型移动时,在激活移动事件响应和手指滑动事件中调用ARWorldHit函数,获得模型所需的目标位置坐标,并确保了模型是沿着地面或墙面移动的。
较佳地,当在X轴方向上或Y轴方向上的同一平面上摆放多个模型,识别一次基准面即可。
实施例二
如图2所示,步骤如下:
1、通过AR应用程序调用摄像头,使其聚焦于基准面;
2、计算出基准面位置;
3、在基准面上的基准点放置第一个模型;
4、移动摄像头到第二(N)个模型摆放的大致位置;
5.1、以原基准面延伸生成虚拟平面;
5.2、以摄像头为原点生成虚拟射线;
6、虚拟平面与虚拟射线相交生成新基准点;
7、在新的基准点放置第二(N)个模型。
其中,放置第二个模型后,后续摆放模型,只需重复步骤4至步骤7即可。
如图3所示,观察者用移动终端垂直向下识别地面,很容易获得正确的距离,此时误差小于±0.5cm,以此生成的虚拟地面和真实的地面是相吻合的。而当移动终端斜向前方,随着角度的增加,相位差逆推的物距误差也随之放大。在实测中发现,大约超过3米的距离,误差小于±4cm,物距大于4米时逆推的物距误差小于±5cm,超过5米时,多数物距为4.8米左右。此时所构建的虚拟地面或是高于实际地面,或是低于实际地面,以此坐标放置模型也会被相应的抬高或降低,那么我们直接看到虚拟和现实混合后的画面就是模型被放大或缩小了。这一问题在家居领域是无法接受的。而本发明的方案就很好地解决了这一问题。
详细过程如下:
启动AR运用时,设定当前移动终端位置为零位,即三维坐标系(0,0,0),将移动终端水平放置,让摄像头垂直向下,且与地面保持一段距离,理论上小于5m,大于5cm(镜头最小对焦距离)即可,对焦成功后,即可生成一个坐标为(0,0,-Z)的一个基准面,即虚拟地面。
倾斜放置移动终端,此时移动终端摄像头方位角介于水平方向和垂直方向之间,可以利用重力传感器提供精确的方位角(x1,y1,z1),结合基准点的垂直坐标-Z,即可计算出这个虚拟三角形的另外两条边的长度,如图4所示,那么新基准点的坐标中的X,Y可以通过向量分解计算得到,而Z轴值则直接代入基准点的垂直坐标-Z,以消除浮点运算带来的误差,即新基准点坐标为(X,Y,-Z)。
基准点的垂直坐标-Z本身时一个变化量,应为观察者拿着移动终端是可以走动的,或者即便不移动,移动终端本身也可以被抬高或放低,那么如果再代入原来的-Z计算,就会出现错误。可以通过惯性陀螺仪获取移动终端在某一时刻的X轴、Y轴、Z轴坐标上的变化量x2、y2、z2,用-Z减去z2即可获得新基准点垂直坐标(-Z-z2)。这样可以确保观察者无论是移动还是变化移动终端的位置,均不会产生放置模型的垂直误差。
摄像头的方位角也是实时变化的,方位角的坐标的更新设定在点击屏幕需要放置模型的相应事件中,以确保获取的方位角是最新的,最大限度减小X轴、Y轴方向的误差。
将整个运算过程封装为ARWorldHit函数,在激活放置模型事件和屏幕单击事件时调用该函数,即可返回所需的坐标位置。
本发明的技术方案可以解决垂直方向的同一问题。例如,如果需要在墙面上放置两盏壁灯和一幅挂画,那么原有的技术方案需要做三次墙面识别,这样极有可能三个模型不在一个垂直面上,那么有可能看起来左右两边的壁灯就是一个大一个小,而实际情况是这两盏灯一个距离观察者远,一个距离观察者近引起的。而用本发明的技术方案可以通过一次识别基准墙面来解决,区别至少需要同一的平面是在X轴方向上还是Y轴方向上。进一步扩展,设计吊顶也是同样的思路,只不过此时垂直坐标为正值。
本发明的技术方案也运用在了模型的移动上。原有技术方案提供有2D转换3D的函数可用,但出现了X轴、Y轴、Z轴,这3轴自由度的移动,但这一函数运用在家居摆放中是有问题的,因为家居只能放在地面上,或地面移动,不能悬浮在空中。3轴自由度移动就有概率从出现将模型移动至空中的问题,这显然与现实不符。所以在激活移动事件响应和手指滑动事件,调用ARWorldHit函数,就可获得模型所需的目标位置坐标,并确保了是沿着地面或墙面移动,而不会出现漂浮在空中的问题。相同的逻辑也可生成墙面和顶面。
以常用的家装环境虚拟家具摆放为例,一套3室2厅的套房需要摆放家具和软装产品约40~50件,每一次基准面主动识别的操作过程约耗时5秒,则整个摆放过程中基准面主动识别需要耗时4分钟,且每一次识别操作都会影响整个模型放置过程的流畅度和体验感。在此过程中,如果发生识别基准面偏差的问题,还需要重新进行识别,体验感将大打折扣。应用本技术后,所有识别过程仅需要在开始时进行一次,耗时5秒,后续摆放模型过程中没有其它识别操作,体验感更好,操作更加流畅。
ARWorldHit函数如下:
如图5所示,首先需要获取移动终端,即获取移动终端摄像头的控制权限。输入参数ScreenPosition(屏幕位置)和ARFloor_Ref(虚拟平面)。输入ScreenPosition后执行DeprojectScreentoWorld(转换屏幕位置为在虚拟平面上的坐标),随即返回屏幕位置坐标和方向,即获得摄像头的坐标。
然后将摄像头坐标的三维向量赋值给ARFloor_Ref,为下一步延展虚拟平面保证正确的方向。发射虚拟射线,长度设定为100米,可根据实际情况调整虚拟射线长度。
同时,提取摄像头坐标中的Z值,除方向中X轴角度的正切值,并将结果作为返回值,即虚拟平面所需的延展长度。设置ARFloor_Ref沿X轴的延展量。
最后将ARFloor代入函数LineTraceComponent,函数LineTraceComponent为编译器自带的函数,返回HitLocation(坐标),该Location(坐标)即为放置模型所需的坐标。
其中,部分代码如下:
开始自定义:
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2"
bIsPureFunc=True
FunctionReference=(MemberParent=Class'"/Script/Engine.GameplayStatics"',MemberName="DeprojectScreenToWorld")
NodePosX=-16
NodePosY=288
NodeGuid=96CB239F4A2CC610628F24ACEFAD6E6D
获取控制器:
CustomProperties Pin
(PinId=5A203E994503835ED1624881926610E0,PinName="Player",PinToolTip="Player\n玩家控制器对象引用\n\n使用此玩家的视图反向投。
",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Class'"/Script/Engine.PlayerController"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(K2Node_CallFunction_0
412A4EDA48A246D47550069F2C3AB7CA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
输入屏幕2维向量:
CustomProperties Pin
(PinId=E867508545EBEAC91C5D6E80E1A9AD04,PinName="ScreenPosition",PinToolTip="Screen Position\n向量2D结构(按引用)\n\n进行反向投射的2D屏幕空间。
",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.Vector2D"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,LinkedTo=(K2Node_FunctionEntry_0
C293ADCC45B387E2105A01B85196B091,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
解算摄像机在虚拟空间中得坐标Position:
CustomProperties Pin
(PinId=EA152585468CF10F205C489BC0EA7E98,PinName="WorldPosition",PinToolTip="World Position\n向量\n\n(出)场景空间中响应的3D位置。
",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="0,0,
0",AutogeneratedDefaultValue="0,0,0",LinkedTo=(K2Node_CallFunction_96BD04E01468CFFDE6F75A08B117CA5CA,K2Node_CommutativeAssociativeBinaryOperator_2 84A72652426EFC10BA0558BFF5CC6DC9,K2Node_CallFunction_16
4D23550F4734FFA146509AAC575BF48E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
解算摄像机在虚拟空间中得方向Direction:
CustomProperties Pin
(PinId=9402FC1A48C03A79F5BFB5959E3D993F,PinName="WorldDirection",PinToolTip="World Direction\n向量\n\n(出)远离给定2D点处相机的场景空间方向向量。
",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="0,0,
0",AutogeneratedDefaultValue="0,0,0",LinkedTo=(K2Node_CallFunction_3
AF1D4E664B0F7530F11C06ABA6761BA5,K2Node_CallFunction_11
F253198B4E34375DBD6714AE72E383E1,K2Node_CallFunction_20
D9BDCA2C496052F635B595B19D8011A0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
开始重新自定义:
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_7"
bIsPureFunc=True
FunctionReference=(MemberParent=Class'"/Script/Engine.KismetMathLibrary"',MemberName="Tan")
NodePosX=576
NodePosY=768
NodeGuid=26CDDA5A48B5A9A180F2B9866053388A
计算X轴方向夹角得正切值:
CustomProperties Pin
(PinId=352421314CBEE498321A1FAF8F55CDC8,PinName="ReturnValue",PinToolTip="Return Value\n浮点\n\n返回A的正切(以弧度计量)
",Direction="EGPD_Output",PinType.PinCategory="float",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",LinkedTo=(K2Node_CallFunction_22
51BD646243EDBA79F29D779FE11929E1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
开始重新自定义:
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_22"
bIsPureFunc=True
FunctionReference=(MemberParent=Class'"/Script/Engine.KismetMathLibrary"',MemberName="Divide_FloatFloat")
NodePosX=720
NodePosY=704
NodeGuid=5C007F66401B1D7953F9A294503A50BC
返回沿X轴延展量:
CustomProperties Pin
(PinId=71BD1797409700319B4E1997767EDF12,PinName="ReturnValue",PinToolTip="Return Value\n浮点\n\n相除(A/B)
",Direction="EGPD_Output",PinType.PinCategory="float",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",LinkedTo=(K2Node_CallFunction_18
1926624046079CECB2648AA2EEFEC052,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
开始重新自定义:
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_16"
FunctionReference=(MemberParent=Class'"/Script/Engine.PrimitiveComponent"',MemberName="K2_LineTraceComponent")
NodePosX=1664
NodePosY=-16
ErrorType=1
NodeGuid=E762A9784AE7C5608A2CA4AE233A3E7E
虚拟射线起点坐标:
CustomProperties Pin
(PinId=4D23550F4734FFA146509AAC575BF48E,PinName="TraceStart",PinToolTip="Trace Start\n向量\n\n场景空间中追踪的开始
",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="0,0,0",AutogeneratedDefaultValue="0,0,0",LinkedTo=(K2Node_CallFunction_2
EA152585468CF10F205C489BC0EA7E98,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
虚拟射线终点坐标:
CustomProperties Pin
(PinId=2472270E4E4DF4FA660D499451D9AFA9,PinName="TraceEnd",PinToolTip="Trace End\n向量\n\n场景空间中追踪的结束
",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="0,0,0",AutogeneratedDefaultValue="0,0,0",LinkedTo=(K2Node_CommutativeAssociativeBinaryOperator_2
0AFE3E30461F53605EDAB3B040F51942,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
返回虚拟射线与虚拟地面相交得坐标:
CustomProperties Pin
(PinId=175F99C74B6280C1C4667AAB4DCD8C2F,PinName="HitLocation",PinToolTip="Hit Location\n向量
",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="0,0,
0",AutogeneratedDefaultValue="0,0,0",LinkedTo=(K2Node_FunctionResult_09225B4AA4E1C819395E551894D093AED,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
以上所述实施例是用以说明本发明,并非用以限制本发明,所以举例数值的变更或等效元件的置换仍应隶属本发明的范畴。
由以上详细说明,可使本领域普通技术人员明了本发明的确可达成前述目的,实已符合专利法的规定,现提出专利申请。
Claims (3)
1.一种基于移动终端应用增强虚拟现实技术的空间定位方法,其特征在于, 包括以下步 骤:
步骤 S1.通过移动终端上的 AR 应用程序调用摄像头,使得摄像头聚焦于基准面;
步骤 S2.计算出基准面位置;
步骤 S3.在基准面上的基准点放置第一个模型;
步骤 S4.移动摄像头到第二个模型摆放的位置;
步骤 S5.基准面延伸生成虚拟平面,以摄像头为原点生成虚拟射线;
步骤 S5 包括:
步骤 S51.倾斜放置移动终端,使移动终端上的摄像头方位角介于水平方向和垂直方向之 间;
步骤 S6.虚拟平面与虚拟射线相交生成新基准点;
步骤 S6 包括:
步骤 S61.计算出新基准点位置;
步骤 S61 包括:
步骤 S611.使用重力传感器得出方位角坐标为(x1,y1,z1);
步骤 S612.结合基准面的垂直坐标-Z,即可计算出方位角的虚拟三角形的另外两条边的
长度;
步骤 S613.通过向量分解计算得到新基准点坐标中的(X,Y);
步骤 S614.将基准面的垂直坐标-Z 代入新基准点坐标中Z 轴坐标;
步骤 S615.即可得出新基准点坐标为(X,Y,-Z);
步骤 S7.在新基准点放置第二个模型,即完成空间定位;
步骤 S8.当摆放第 N 个模型时,重复步骤 S4 至步骤 S7 即可。
2.如权利要求 1 所述的一种基于移动终端应用增强虚拟现实技术的空间定位方法,其特 征在于,步骤 S1 包括:
步骤 S11.聚焦前, 预选一个地面作为基准面, 将移动终端上的摄像头垂直向下, 且与地 面保持一段距离;
步骤 S12.聚焦后,生成一个基准面,即虚拟地面。
3.如权利要求 1 所述的一种基于移动终端应用增强虚拟现实技术的空间定位方法,其特 征在于,步骤 S2 包括:
步骤 S21.聚焦后,得出基准面的垂直坐标-Z,即可得出基准面的坐标为(0,0,-Z)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010277053.3A CN111475026B (zh) | 2020-04-10 | 2020-04-10 | 一种基于移动终端应用增强虚拟现实技术的空间定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010277053.3A CN111475026B (zh) | 2020-04-10 | 2020-04-10 | 一种基于移动终端应用增强虚拟现实技术的空间定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475026A CN111475026A (zh) | 2020-07-31 |
CN111475026B true CN111475026B (zh) | 2023-08-22 |
Family
ID=71751463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010277053.3A Active CN111475026B (zh) | 2020-04-10 | 2020-04-10 | 一种基于移动终端应用增强虚拟现实技术的空间定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475026B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115937480B (zh) * | 2023-01-06 | 2023-07-04 | 河南开放大学 | 一种基于人工势场的虚拟现实去中心化重定向系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013008257A (ja) * | 2011-06-27 | 2013-01-10 | Celsys:Kk | 画像合成プログラム |
CN105509716A (zh) * | 2015-11-26 | 2016-04-20 | 武大吉奥信息技术有限公司 | 一种基于增强现实技术的地理信息采集方法及装置 |
CN105989623A (zh) * | 2015-02-12 | 2016-10-05 | 上海交通大学 | 基于手持移动设备的增强现实应用的实现方法 |
CN108090968A (zh) * | 2017-12-29 | 2018-05-29 | 光锐恒宇(北京)科技有限公司 | 增强现实ar的实现方法、装置和计算机可读存储介质 |
CN110443850A (zh) * | 2019-08-05 | 2019-11-12 | 珠海优特电力科技股份有限公司 | 目标对象的定位方法及装置、存储介质、电子装置 |
-
2020
- 2020-04-10 CN CN202010277053.3A patent/CN111475026B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013008257A (ja) * | 2011-06-27 | 2013-01-10 | Celsys:Kk | 画像合成プログラム |
CN105989623A (zh) * | 2015-02-12 | 2016-10-05 | 上海交通大学 | 基于手持移动设备的增强现实应用的实现方法 |
CN105509716A (zh) * | 2015-11-26 | 2016-04-20 | 武大吉奥信息技术有限公司 | 一种基于增强现实技术的地理信息采集方法及装置 |
CN108090968A (zh) * | 2017-12-29 | 2018-05-29 | 光锐恒宇(北京)科技有限公司 | 增强现实ar的实现方法、装置和计算机可读存储介质 |
CN110443850A (zh) * | 2019-08-05 | 2019-11-12 | 珠海优特电力科技股份有限公司 | 目标对象的定位方法及装置、存储介质、电子装置 |
Non-Patent Citations (1)
Title |
---|
方伟 ; .3D成像技术在智能手机交互设计中的应用研究.佳木斯大学学报(自然科学版).2018,(05),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111475026A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112862935B (zh) | 游戏角色的运动处理方法及装置、存储介质、计算机设备 | |
KR102009105B1 (ko) | 실시간 가상 장면의 충돌체 사이의 충돌을 검출하기 위한 방법 및 단말과 저장 매체 | |
JP5920352B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN105518584A (zh) | 利用热区识别交互 | |
JP2018106262A (ja) | 不整合検出システム、複合現実システム、プログラム及び不整合検出方法 | |
KR20170062533A (ko) | 공유된 공간 증강 현실 경험을 생성하기 위한 프로젝터 구동 기술 | |
US20220067968A1 (en) | Motion capture calibration using drones with multiple cameras | |
EP2671210A2 (en) | Three-dimensional environment reconstruction | |
CN111475026B (zh) | 一种基于移动终端应用增强虚拟现实技术的空间定位方法 | |
Schönauer et al. | Wide area motion tracking using consumer hardware | |
CN108983954B (zh) | 基于虚拟现实的数据处理方法、装置以及系统 | |
CN107564058B (zh) | 对象位置显示方法及装置 | |
CN110264568B (zh) | 一种三维虚拟模型交互方法和装置 | |
CN106960474B (zh) | 一种基于高度探测器以自动计算3d模型移动后的高度的系统与方法 | |
CN108499109A (zh) | 一种基于ue引擎实现物品可实时单侧缩放的方法 | |
CN117132624B (zh) | 跟随摄像机遮挡检测方法、装置、设备及存储介质 | |
US11600022B2 (en) | Motion capture calibration using drones | |
US11636621B2 (en) | Motion capture calibration using cameras and drones | |
US11282233B1 (en) | Motion capture calibration | |
CN115861581B (zh) | 一种基于混合现实的移动互联云服务方法及系统 | |
US20220076452A1 (en) | Motion capture calibration using a wand | |
US20220076451A1 (en) | Motion capture calibration using a three-dimensional assembly | |
US20240312056A1 (en) | Method and system for determining a three dimensional position | |
Byeon et al. | Mobile AR Contents Production Technique for Long Distance Collaboration | |
CN116095494A (zh) | 一种基于移动端ar的动作检测方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |