CN112657192B - 一种碰撞检测方法及装置 - Google Patents
一种碰撞检测方法及装置 Download PDFInfo
- Publication number
- CN112657192B CN112657192B CN202011561290.9A CN202011561290A CN112657192B CN 112657192 B CN112657192 B CN 112657192B CN 202011561290 A CN202011561290 A CN 202011561290A CN 112657192 B CN112657192 B CN 112657192B
- Authority
- CN
- China
- Prior art keywords
- sphere
- virtual camera
- collision
- obstacle
- determining
- 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
Images
Landscapes
- Image Analysis (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供一种碰撞检测方法及装置,其中所述碰撞检测方法包括:根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置,以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度,根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种碰撞检测方法及装置、计算设备和计算机可读存储介质。
背景技术
目前的三维场景中,在三维场景中的虚拟角色处于靠近三维场景中的墙壁或边界并且虚拟角色的视角处于朝向墙壁或边界的方向的情况下,就会产生虚拟角色的视锥与三维场景中的墙壁或边界发生碰撞的情况,导致产生系统漏洞,例如看到空白部分等三维场景的开发人员不希望出现的问题。
另外,目前提供的碰撞检测方法是利用镜头位置和镜头的观察点之间的射线进行碰撞检测;若检测到碰撞,则将镜头位置设置到碰撞位置前;在存在碰撞但射线未检测到时,则三维场景的画面显示区域可能会出现穿模的情况。
因此,在三维场景设计时如何能够避免出现类似的问题是本领域技术人员需要解决的技术问题。
发明内容
有鉴于此,本申请实施例提供了一种碰撞检测方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种碰撞检测方法,包括:
根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置;
以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体;
在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度;
根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值。
可选的,建立所述虚拟相机的包络球体之前,还包括:
确定所述画面显示区域对应的宽度值以及高度值,并根据所述宽度值以及所述高度值二者之间的大小关系确定所述预设长度阈值。
可选的,所述根据所述宽度值以及高度值二者之间的大小关系确定所述预设长度阈值,包括:
将所述宽度值以及所述高度值二者之间的大小关系进行比对,并将比对结果中的较大值的二分之一作为所述预设长度阈值。
可选的,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,包括:
在所述视野范围内的所述至少一个障碍物中设置检测点,并确定所述检测点与所述包络球体的球心之间的检测距离;
若所述检测距离大于等于所述包络球体的半径,则所述包络球体与所述至少一个障碍物未发生碰撞;
若所述检测距离小于所述包络球体的半径,则所述包络球体与所述至少一个障碍物发生碰撞,并将与所述包络球体发生碰撞的障碍物确定为目标障碍物。
可选的,所述根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度,包括:
确定所述目标障碍物中至少一个检测点与所述包络球体的球心之间的至少一个距离值;
将所述至少一个距离值中小于等于预设阈值的距离值确定为所述包络球体与所述目标障碍物的碰撞深度。
可选的,所述根据所述碰撞深度确定所述虚拟相机的移动参数,包括:
计算所述包络球体的半径与所述碰撞深度之间的差值,并将所述差值作为所述虚拟相机的移动距离;
将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点,并以所述包络球体的球心为端点,沿球心至所述目标检测点方向生成第一射线,并将所述第一射线的延伸方向的反方向作为所述虚拟相机的移动方向。
可选的,所述移动参数包括镜头转动参数;
相应的,所述根据所述碰撞深度确定所述虚拟相机的移动参数,包括:
根据所述碰撞深度确定所述虚拟相机的焦点移动位置;
以所述虚拟相机的当前位置为端点,沿所述端点至所述焦点移动位置方向生成第二射线,并以所述虚拟相机的当前位置为端点,沿所述端点至所述焦点位置方向生成第三射线;
将所述第二射线与所述第三射线之间形成夹角的角度作为所述虚拟相机的镜头转动角度;
将所述第三射线旋转至所述第二射线对应的旋转方向作为所述虚拟相机的镜头转动方向。
可选的,所述根据所述碰撞深度确定所述虚拟相机的焦点移动位置,包括:
将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点;
计算所述目标检测点与所述画面显示区域的水平边界的第一垂直距离;
将所述焦点位置沿垂直方向移动所述第一垂直距离后的位置作为所述焦点移动位置;或者,
计算所述目标检测点与所述画面显示区域的垂直边界的第二垂直距离;
将所述焦点位置沿水平方向移动所述第二垂直距离对应的位置作为所述焦点移动位置。
根据本申请实施例的第二方面,提供了一种碰撞检测装置,包括:
确定模块,被配置为根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置;
建立模块,被配置为以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体;
检测模块,被配置为在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度;
调整模块,被配置为根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述碰撞检测方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述碰撞检测方法的步骤。
本申请实施例中,根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置,以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度,根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值;
根据三维游戏场景中虚拟相机当前镜头近平面的宽度和高度信息,确定包络球体的直径,即取近平面的宽度值和高度值中的较大值作为包络球体的半径进行碰撞检测,有利于提高检测结果的准确性。
附图说明
图1是本申请实施例提供的计算设备的结构框图;
图2是本申请实施例提供的碰撞检测方法的流程图;
图3是本申请实施例提供的碰撞检测过程的示意图;
图4是本申请实施例提供的虚拟相机移动过程的示意图;
图5是本申请实施例提供的虚拟相机的镜头转动效果的示意图;
图6是本申请实施例提供的碰撞检测方法的处理流程图;
图7是本申请实施例提供的碰撞检测装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。
在本申请中,提供了一种碰撞检测方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示碰撞检测方法中的步骤。图2示出了根据本申请一实施例的碰撞检测方法的流程图,包括步骤202至步骤208。
步骤202,根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置。
具体的,在三维游戏场景中,若虚拟角色处于靠近场景中的墙壁、边界或者障碍物的位置,并且虚拟角色的视角处于朝向墙壁、边界或者障碍物的方向的情况下,则三维游戏场景的画面显示区域可能会出现穿模的情况(画面显示区域对应的视野范围内会出现镜头穿插进障碍物模型的情况),并且目前多采用镜头位置和镜头的观察点之间的射线进行碰撞检测,若检测到碰撞,则将镜头位置设置到碰撞位置前,但这种检测方式可能存在检测结果不够精准,从而仍无法避免部分可能存在的穿模现象的情况,而本申请实施例则采用包络球体进行碰撞检测,以保证检测结果的准确性。
实际应用中,在建立虚拟相机的包络球体之前,需先确定包络球体的球心,本申请实施例先根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置,并将所述焦点位置作为球心,如图3所示,虚拟相机的焦点位置为点O,则以所述点O为球心在所述三维游戏场景中建立包络球体。
步骤204,以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体。
具体的,确定球心之后,还需确定包络球体的半径,本申请实施例通过确定所述画面显示区域对应的宽度值以及高度值,并根据所述宽度值以及所述高度值二者之间的大小关系确定所述预设长度阈值(包络球体的半径),进一步的,根据所述宽度值以及高度值二者之间的大小关系确定所述预设长度阈值,即将所述宽度值以及所述高度值二者之间的大小关系进行比对,并将比对结果中的较大值的二分之一作为所述预设长度阈值。
实际应用中,可选择将画面显示区域的宽度值和高度值中的较大值作为直径建立所述虚拟相机的包络球体,以利用所述包络球体对所述画面显示区域对应的视野范围进行碰撞检测,从而保证检测结果的准确性。
如图3所示,31为画面显示区域,从图中可以看出,所述画面显示区域的宽度值大于高度值,因此,选择将宽度值作为包络球体的半径,即包络球体的半径r=1/2W,W为画面显示区域的宽度,以焦点位置O为圆心,以所述画面显示区域的宽度值为直径(宽度值的1/2为半径)建立包络球体32。
步骤206,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度。
具体的,在三维游戏场景中通常存在多个墙体、边界或者类似于石头、山体、树木等障碍物,因此,在虚拟相机的镜头靠近三维游戏场景中的障碍物的情况下,三维游戏场景的画面显示区域可能会出现穿模的情况,而本申请实施例通过建立包络球体以对画面显示区域的视野范围内进行碰撞检测,以确定视野范围内是否存在障碍物,从而避免出现画面显示区域对应的视野范围内会出现镜头穿插进障碍物模型的这种情况。可选的,本申请通过Sphere Sweep(球面扫描)算法对所述包络球体32进行碰撞检测。
另外,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,即在所述视野范围内的所述至少一个障碍物中设置检测点,并确定所述检测点与所述包络球体的球心之间的检测距离;若所述检测距离大于等于所述包络球体的半径,则所述包络球体与所述至少一个障碍物未发生碰撞;若所述检测距离小于所述包络球体的半径,则所述包络球体与所述至少一个障碍物发生碰撞,并将与所述包络球体发生碰撞的障碍物确定为目标障碍物。
具体的,可将视野范围内的至少一个障碍物与所述包络球体做相交计算,以确定所述至少一个障碍物与所述包络球体是否存在重叠或相交的部分,或确定所述至少一个障碍物是否落入所述包络球体内,具体可在所述至少一个障碍物中设置至少一个检测点,并确定所述至少一个检测点是否落入所述包络球体的检测范围内,若存在任意一个检测点落入所述包络球体的检测范围内(检测点与所述包络球体的球心之间的检测距离小于所述包络球体的半径),则确定所述包络球体与落入包络球体内的检测点所属障碍物发生碰撞。
确定目标障碍物后,即可确定包络球体与障碍物的碰撞深度,即确定所述目标障碍物中至少一个检测点与所述包络球体的球心之间的至少一个距离值,将所述至少一个距离值中小于等于预设阈值的距离值确定为所述包络球体与所述目标障碍物的碰撞深度。
如图3所示,在画面显示区域内障碍物33中设置3个检测点,分别为检测点A、检测点B以及检测点C,并确定检测点A、检测点B落入所述包络球体32的检测范围内,即检测点A和检测点B分别与所述包络球体的球心之间的检测距离均小于所述包络球体32的半径r,因此,可确定障碍物33与包络球体32发生碰撞,并将障碍物33确定为目标障碍物,然后确定障碍物33中落入包络球体32中的检测点A与所述包络球体32的球心0之间的距离值x1,以及障碍物33中落入包络球体32中的检测点B与所述包络球体32的球心0之间的距离值x2,并将距离值x1和距离值x2中小于等于预设阈值的距离值(距离值x1和距离值x2中的较小值)确定为所述包络球体32与所述障碍物33的碰撞深度。
确定碰撞深度后即可根据所述碰撞深度确定虚拟相机的移动参数,以根据移动参数调整虚拟相机的位置,使得调整后的画面显示区域对应的视野范围内不存在障碍物与包络球体发生碰撞,从而避免穿模情况发生。
步骤208,根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值。
具体的,确定目标障碍物与包络球体的碰撞深度后,可根据所述碰撞深度确定所述虚拟相机的移动参数,以根据所述移动参数移动虚拟相机,使得移动后的虚拟相机所显示的画面显示区域对应的视野范围内不存在穿模现象。
具体的移动参数确定过程,即计算所述包络球体的半径与所述碰撞深度之间的差值,并将所述差值作为所述虚拟相机的移动距离,将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点,并以所述包络球体的球心为端点,沿球心至所述目标检测点方向生成第一射线,并将所述第一射线的延伸方向的反方向作为所述虚拟相机的移动方向;根据所述移动方向以及所述移动距离移动所述虚拟相机即可。
如图4所示,包络球体32的半径r与碰撞深度(线段OA的值)之间的差值即为线段AD的值,因此,可将线段AD的值作为虚拟相机的移动距离;另外,由于障碍物33中落入包络球体32内的检测点为检测点A和检测点B,而检测点A距球心O的距离值小于检测点B距球心O的距离值,因此,将检测点A确定为目标检测点,并将与由球心O指向检测点A的方向相反的方向(球心O指向球心O′的方向)作为虚拟相机的移动方向(以包络球体32的球心O为端点,沿球心O至目标检测点A方向生成第一射线,并将所述第一射线的延伸方向的反方向作为所述虚拟相机的移动方向)。
确定虚拟相机的移动距离以及移动方向后,按照所述移动距离以及移动方向移动虚拟相机,移动后虚拟相机的焦点位置为O′,移动后虚拟相机的画面显示区域为31′,以所述焦点位置O′为球心,画面显示区域的宽度值W为直径建立的虚拟相机的包络球体为32′,移动后的画面显示区域内至少一个障碍物与包络球体的碰撞深度小于预设阈值,从而使得移动后的虚拟相机所显示的画面显示区域对应的视野范围内不出现穿模现象。
另外,本申请实施例中,所述移动参数包括镜头转动参数,因此,根据所述碰撞深度确定所述虚拟相机的移动参数,即根据所述碰撞深度确定所述虚拟相机的镜头转动参数,具体为:根据所述碰撞深度确定所述虚拟相机的焦点移动位置,以所述虚拟相机的当前位置为端点,沿端点至所述焦点移动位置的方向生成第二射线,并以所述虚拟相机的当前位置为端点,沿端点至所述焦点位置方向生成第三射线,将所述第二射线与所述第三射线之间形成夹角的角度作为所述虚拟相机的镜头转动角度,将所述第三射线旋转至所述第二射线对应的旋转方向作为所述虚拟相机的镜头转动方向,在根据镜头转动角度及镜头转动方向转动镜头即可,转动后虚拟相机所显示的画面显示区域对应的视野范围内不存在穿模现象(调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值)。
具体实施时,根据所述碰撞深度确定所述虚拟相机的焦点移动位置,具体可通过以下方式实现:
将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点;
计算所述目标检测点与所述画面显示区域的水平边界的第一垂直距离;
将所述焦点位置沿垂直方向移动所述第一垂直距离后的位置作为所述焦点移动位置;或者,
计算所述目标检测点与所述画面显示区域的垂直边界的第二垂直距离;
将所述焦点位置沿水平方向移动所述第二垂直距离对应的位置作为所述焦点移动位置。
具体的,若要将镜头的焦点位置沿画面显示区域的垂直方向进行移动,则可计算目标检测点与画面显示区域的水平边界的第一垂直距离,并将所述第一垂直距离作为焦点的移动距离,或者,若要将镜头的焦点位置沿画面显示区域的水平方向进行移动,则计算目标检测点与画面显示区域的垂直边界的第二垂直距离,并将所述第二垂直距离作为焦点的移动距离,在确定焦点的移动距离以及移动方向后,可根据所述移动距离以及移动方向确定镜头转动方向以及镜头转动角度,从而转动镜头,使得转动后虚拟相机所显示的画面显示区域对应的视野范围内不存在穿模现象。
如图5所示,将镜头的焦点位置沿画面显示区域的水平方向进行移动,因此计算目标检测点A与画面显示区域的垂直边界的垂直距离(线段AE的值),并将线段AE的值作为焦点的移动距离,将与由球心O指向检测点A的方向相反的方向(球心O指向球心O″的方向)作为焦点的移动方向,因此,可将线段PO转向线段PO″对应的转动方向作为虚拟相机的镜头转动方向,并将线段PO与线段PO″之间形成的夹角α作为虚拟相机的镜头转动角度(以虚拟相机的当前位置P为端点,沿端点P至所述焦点移动位置O″方向生成第二射线,并以虚拟相机的当前位置P为端点,沿端点P至所述焦点位置O方向生成第三射线,将所述第二射线与所述第三射线之间形成夹角的角度α作为所述虚拟相机的镜头转动角度)。
确定虚拟相机的镜头转动方向以及镜头转动角度后,按照所述镜头转动方向以及镜头转动角度转动虚拟相机的镜头,转动后虚拟相机的焦点位置为O″,移动后虚拟相机的画面显示区域为31″,以所述焦点位置O″为球心,画面显示区域的宽度值W为直径建立的虚拟相机的包络球体为32″,移动后的画面显示区域内至少一个障碍物与包络球体的碰撞深度小于预设阈值,从而使得移动后的虚拟相机所显示的画面显示区域对应的视野范围内不出现穿模现象。
本申请实施例中,根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置,以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度,根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值;
根据三维游戏场景中虚拟相机当前镜头近平面的宽度和高度信息,确定包络球体的直径,即取近平面的宽度值和高度值中的较大值作为包络球体的半径进行碰撞检测,有利于提高检测结果的准确性。
图6示出了本申请一实施例的碰撞检测方法,该碰撞检测方法以对移动虚拟相机以避免穿模现象为例进行描述,包括步骤602至步骤620。
步骤602,根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置。
步骤604,确定画面显示区域对应的宽度值以及高度值。
步骤606,将宽度值以及高度值二者之间的大小关系进行比对,并将比对结果中的较大值的二分之一作为预设长度阈值。
步骤608,以所述焦点位置为球心,所述预设长度阈值为半径建立所述虚拟相机的包络球体。
步骤610,在所述视野范围内的至少一个障碍物中设置检测点,并确定所述检测点与所述包络球体的球心之间的检测距离。
若所述检测距离大于等于所述包络球体的半径,则所述包络球体与所述至少一个障碍物未发生碰撞;
若所述检测距离小于所述包络球体的半径,则所述包络球体与所述至少一个障碍物发生碰撞,并将与所述包络球体发生碰撞的障碍物确定为目标障碍物。
步骤612,确定所述目标障碍物中至少一个检测点与所述包络球体的球心之间的至少一个距离值。
步骤614,将所述至少一个距离值中小于等于预设阈值的距离值确定为所述包络球体与所述目标障碍物的碰撞深度。
步骤616,计算所述包络球体的半径与所述碰撞深度之间的差值,并将所述差值作为所述虚拟相机的移动距离。
步骤618,将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点,并以所述包络球体的球心为端点,沿球心至所述目标检测点方向生成第一射线,并将所述第一射线的延伸方向的反方向作为所述虚拟相机的移动方向。
步骤620,根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值。
本申请根据三维游戏场景中虚拟相机当前镜头近平面的宽度和高度信息,确定包络球体的直径,即取近平面的宽度值和高度值中的较大值作为包络球体的半径进行碰撞检测,有利于提高检测结果的准确性,另外,在确定虚拟相机的移动距离以及移动方向后,可根据所述移动距离以及移动方向移动距离,使得移动后虚拟相机所显示的画面显示区域对应的视野范围内不存在穿模现象。
与上述方法实施例相对应,本申请还提供了碰撞检测装置实施例,图7示出了本申请一个实施例的碰撞检测装置的结构示意图。如图7所示,该装置700包括:
确定模块702,被配置为根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置;
建立模块704,被配置为以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体;
检测模块706,被配置为在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度;
调整模块708,被配置为根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值。
可选的,所述碰撞检测装置,还包括:
预设长度阈值确定模块,被配置为确定所述画面显示区域对应的宽度值以及高度值,并根据所述宽度值以及所述高度值二者之间的大小关系确定所述预设长度阈值。
可选的,所述预设长度阈值确定模块,包括:
预设长度阈值确子模块,被配置为将所述宽度值以及所述高度值二者之间的大小关系进行比对,并将比对结果中的较大值的二分之一作为所述预设长度阈值。
可选的,所述检测模块706,包括:
检测距离确定子模块,被配置为在所述视野范围内的所述至少一个障碍物中设置检测点,并确定所述检测点与所述包络球体的球心之间的检测距离;
第一检测子模块,被配置为若所述检测距离大于等于所述包络球体的半径,则所述包络球体与所述至少一个障碍物未发生碰撞;
第二检测子模块,被配置为若所述检测距离小于所述包络球体的半径,则所述包络球体与所述至少一个障碍物发生碰撞,并将与所述包络球体发生碰撞的障碍物确定为目标障碍物。
可选的,所述检测模块706,还包括:
距离值确定子模块,被配置为确定所述目标障碍物中至少一个检测点与所述包络球体的球心之间的至少一个距离值;
碰撞深度确定子模块,被配置为将所述至少一个距离值中小于等于预设阈值的距离值确定为所述包络球体与所述目标障碍物的碰撞深度。
可选的,所述调整模块708,包括:
移动距离确定子模块,被配置为计算所述包络球体的半径与所述碰撞深度之间的差值,并将所述差值作为所述虚拟相机的移动距离;
移动方向确定子模块,被配置为将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点,并以所述包络球体的球心为端点,沿球心至所述目标检测点方向生成第一射线,并将所述第一射线的延伸方向的反方向作为所述虚拟相机的移动方向。
可选的,所述移动参数包括镜头转动参数;
相应的,所述调整模块708,还包括:
焦点移动位置确定子模块,被配置为根据所述碰撞深度确定所述虚拟相机的焦点移动位置;
射线生成子模块,被配置为以所述虚拟相机的当前位置为端点,沿所述端点至所述焦点移动位置方向生成第二射线,并以所述虚拟相机的当前位置为端点,沿所述端点至所述焦点位置方向生成第三射线;
镜头转动角度确定子模块,被配置为将所述第二射线与所述第三射线之间形成夹角的角度作为所述虚拟相机的镜头转动角度;
镜头转动方向确定子模块,被配置为将所述第三射线旋转至所述第二射线对应的旋转方向作为所述虚拟相机的镜头转动方向。
可选的,所述焦点移动位置确定子模块,包括:
目标检测点确定单元,被配置为将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点;
第一垂直距离计算单元,被配置为计算所述目标检测点与所述画面显示区域的水平边界的第一垂直距离;
第二焦点移动位置确定单元,被配置为将所述焦点位置沿垂直方向移动所述第一垂直距离后的位置作为所述焦点移动位置;或者,
第二垂直距离计算单元,被配置为计算所述目标检测点与所述画面显示区域的垂直边界的第二垂直距离;
第二焦点移动位置确定单元,被配置为将所述焦点位置沿水平方向移动所述第二垂直距离对应的位置作为所述焦点移动位置。
需要说明的是,装置权利要求中的各组成部分应当理解为实现该程序流程各步骤或该方法各步骤所必须建立的功能模块,各个功能模块并非实际的功能分割或者分离限定。由这样一组功能模块限定的装置权利要求应当理解为主要通过说明书记载的计算机程序实现该解决方案的功能模块构架,而不应当理解为主要通过硬件方式实现该解决方案的实体装置。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的碰撞检测方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述碰撞检测方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的碰撞检测方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述碰撞检测方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。
Claims (11)
1.一种碰撞检测方法,其特征在于,包括:
根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置;
以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体;
在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度;
根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值;
其中,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,包括:在所述视野范围内的所述至少一个障碍物中设置至少一个检测点,并确定所述检测点与所述包络球体的球心之间的检测距离,若所述检测距离小于所述包络球体的半径,则所述包络球体与所述至少一个障碍物发生碰撞,并将与所述包络球体发生碰撞的障碍物确定为目标障碍物;
其中,根据碰撞深度确定所述虚拟相机的移动参数,根据所述移动参数移动所述虚拟相机,包括:将所述包络球体的半径与所述碰撞深度之间的差值作为所述虚拟相机的移动距离;将所述包络球体的球心指向目标检测点的方向相反的方向作为所述虚拟相机的移动方向;所述虚拟相机的移动参数还包括:镜头转动参数;所述镜头转动参数包括:镜头转动角度和镜头转动方向。
2.根据权利要求1所述的碰撞检测方法,其特征在于,建立所述虚拟相机的包络球体之前,还包括:
确定所述画面显示区域对应的宽度值以及高度值,并根据所述宽度值以及所述高度值二者之间的大小关系确定所述预设长度阈值。
3.根据权利要求2所述的碰撞检测方法,其特征在于,所述根据所述宽度值以及高度值二者之间的大小关系确定所述预设长度阈值,包括:
将所述宽度值以及所述高度值二者之间的大小关系进行比对,并将比对结果中的较大值的二分之一作为所述预设长度阈值。
4.根据权利要求1所述的碰撞检测方法,其特征在于,在所述视野范围内的所述至少一个障碍物中设置至少一个检测点,并确定所述检测点与所述包络球体的球心之间的检测距离之后,还包括:
若所述检测距离大于等于所述包络球体的半径,则所述包络球体与所述至少一个障碍物未发生碰撞。
5.根据权利要求4所述的碰撞检测方法,其特征在于,所述根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度,包括:
确定所述目标障碍物中至少一个检测点与所述包络球体的球心之间的至少一个距离值;
将所述至少一个距离值中小于等于预设阈值的距离值确定为所述包络球体与所述目标障碍物的碰撞深度。
6.根据权利要求5所述的碰撞检测方法,其特征在于,将所述包络球体的球心指向目标检测点的方向相反的方向作为所述虚拟相机的移动方向,包括:
将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点,并以所述包络球体的球心为端点,沿球心至所述目标检测点方向生成第一射线,并将所述第一射线的延伸方向的反方向作为所述虚拟相机的移动方向。
7.根据权利要求5所述的碰撞检测方法,其特征在于,所述移动参数包括镜头转动参数;
相应的,所述根据所述碰撞深度确定所述虚拟相机的移动参数,包括:
根据所述碰撞深度确定所述虚拟相机的焦点移动位置;
以所述虚拟相机的当前位置为端点,沿所述端点至所述焦点移动位置方向生成第二射线,并以所述虚拟相机的当前位置为端点,沿所述端点至所述焦点位置方向生成第三射线;
将所述第二射线与所述第三射线之间形成夹角的角度作为所述虚拟相机的镜头转动角度;
将所述第三射线旋转至所述第二射线对应的旋转方向作为所述虚拟相机的镜头转动方向。
8.根据权利要求7所述的碰撞检测方法,其特征在于,所述根据所述碰撞深度确定所述虚拟相机的焦点移动位置,包括:
将所述至少一个距离值中小于等于预设阈值的距离值对应的检测点作为目标检测点;
计算所述目标检测点与所述画面显示区域的水平边界的第一垂直距离;
将所述焦点位置沿垂直方向移动所述第一垂直距离后的位置作为所述焦点移动位置;或者,
计算所述目标检测点与所述画面显示区域的垂直边界的第二垂直距离;
将所述焦点位置沿水平方向移动所述第二垂直距离对应的位置作为所述焦点移动位置。
9.一种碰撞检测装置,其特征在于,包括:
确定模块,被配置为根据三维游戏场景的画面显示区域确定虚拟相机的焦点位置;
建立模块,被配置为以所述焦点位置为球心,预设长度阈值为半径建立所述虚拟相机的包络球体;
检测模块,被配置为在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,并根据检测结果确定所述包络球体与至少一个目标障碍物的碰撞深度,其中,在所述包络球体范围内,对所述画面显示区域对应的视野范围内的至少一个障碍物进行碰撞检测,包括:在所述视野范围内的所述至少一个障碍物中设置至少一个检测点,并确定所述检测点与所述包络球体的球心之间的检测距离,若所述检测距离小于所述包络球体的半径,则所述包络球体与所述至少一个障碍物发生碰撞,并将与所述包络球体发生碰撞的障碍物确定为目标障碍物;
调整模块,被配置为根据所述碰撞深度确定所述虚拟相机的移动参数,并根据所述移动参数移动所述虚拟相机,以调整所述画面显示区域对应的视野范围,调整后的画面显示区域对应的视野范围内所述至少一个目标障碍物与所述包络球体的碰撞深度小于预设阈值,其中,根据碰撞深度确定所述虚拟相机的移动参数,根据所述移动参数移动所述虚拟相机,包括:将所述包络球体的半径与所述碰撞深度之间的差值作为所述虚拟相机的移动距离;将所述包络球体的球心指向目标检测点的方向相反的方向作为所述虚拟相机的移动方向;所述虚拟相机的移动参数还包括:镜头转动参数;所述镜头转动参数包括:镜头转动角度和镜头转动方向。
10.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述指令时实现权利要求1-8任意一项所述方法的步骤。
11.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1-8任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011561290.9A CN112657192B (zh) | 2020-12-25 | 2020-12-25 | 一种碰撞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011561290.9A CN112657192B (zh) | 2020-12-25 | 2020-12-25 | 一种碰撞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112657192A CN112657192A (zh) | 2021-04-16 |
CN112657192B true CN112657192B (zh) | 2023-05-09 |
Family
ID=75408943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011561290.9A Active CN112657192B (zh) | 2020-12-25 | 2020-12-25 | 一种碰撞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112657192B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114529604B (zh) * | 2022-01-25 | 2022-12-13 | 广州极点三维信息科技有限公司 | 一种空间物体定向碰撞检测方法、系统装置及介质 |
CN114470775A (zh) * | 2022-01-27 | 2022-05-13 | 腾讯科技(深圳)有限公司 | 虚拟场景中的对象处理方法、装置、设备及存储介质 |
CN117710368B (zh) * | 2024-02-05 | 2024-04-30 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、设备、介质及程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108499105A (zh) * | 2018-04-16 | 2018-09-07 | 腾讯科技(深圳)有限公司 | 在虚拟环境中进行视角调整的方法、装置及存储介质 |
CN110689570A (zh) * | 2019-09-29 | 2020-01-14 | 北京达佳互联信息技术有限公司 | 虚拟形象直播方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7486811B2 (en) * | 1996-09-16 | 2009-02-03 | The Research Foundation Of State University Of New York | System and method for performing a three-dimensional virtual examination of objects, such as internal organs |
-
2020
- 2020-12-25 CN CN202011561290.9A patent/CN112657192B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108499105A (zh) * | 2018-04-16 | 2018-09-07 | 腾讯科技(深圳)有限公司 | 在虚拟环境中进行视角调整的方法、装置及存储介质 |
CN110689570A (zh) * | 2019-09-29 | 2020-01-14 | 北京达佳互联信息技术有限公司 | 虚拟形象直播方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
[美]Jason Gregory 著,叶劲峰 译."12.3.7.2 形状投射".《游戏引擎架构》.电子工业出版社,2014,564-566. * |
Also Published As
Publication number | Publication date |
---|---|
CN112657192A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112657192B (zh) | 一种碰撞检测方法及装置 | |
US11301954B2 (en) | Method for detecting collision between cylindrical collider and convex body in real-time virtual scenario, terminal, and storage medium | |
CN109242961B (zh) | 一种脸部建模方法、装置、电子设备和计算机可读介质 | |
US9789403B1 (en) | System for interactive image based game | |
CN108875804B (zh) | 一种基于激光点云数据的数据处理方法和相关装置 | |
CN110276308B (zh) | 图像处理方法及装置 | |
WO2012148925A1 (en) | Devices, methods and apparatuses for homography evaluation involving a mobile device | |
US11367195B2 (en) | Image segmentation method, image segmentation apparatus, image segmentation device | |
CN110378994B (zh) | 人脸建模方法及相关产品 | |
CN112019768A (zh) | 一种视频生成方法、装置及电子设备 | |
US20190079158A1 (en) | 4d camera tracking and optical stabilization | |
CN108367436B (zh) | 针对三维空间中的对象位置和范围的主动相机移动确定 | |
CN109344702A (zh) | 基于深度图像和彩色图像的行人检测方法及装置 | |
CN111680574B (zh) | 一种人脸检测方法、装置、电子设备和存储介质 | |
CN112053427A (zh) | 一种点云的特征提取方法、装置、设备及可读存储介质 | |
CN110478903B (zh) | 一种虚拟摄像机的控制方法和装置 | |
CN112529006B (zh) | 全景图片的检测方法、装置、终端及存储介质 | |
CN110309721B (zh) | 视频处理方法、终端和存储介质 | |
CN110097061B (zh) | 一种图像显示方法及装置 | |
CN113450459B (zh) | 目标物的三维模型构建方法及装置 | |
WO2018140397A1 (en) | System for interactive image based game | |
CN117095038A (zh) | 用于激光扫描仪的点云滤波方法及系统 | |
CN109920057A (zh) | 一种视点变换方法及装置、计算设备及存储介质 | |
CN111275611A (zh) | 三维场景中物体深度确定方法、装置、终端及存储介质 | |
CN108205820B (zh) | 平面的重建方法、融合方法、装置、设备及存储介质 |
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 | ||
CB02 | Change of applicant information |
Address after: 519000 room 402, Room 401, No. 327, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province Applicant after: Zhuhai Xishanju Digital Technology Co.,Ltd. Address before: 519000 room 402, Room 401, No. 327, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province Applicant before: ZHUHAI SEASUN MOBILE GAME TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |