CN116049505B - 屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质 - Google Patents

屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116049505B
CN116049505B CN202310340828.0A CN202310340828A CN116049505B CN 116049505 B CN116049505 B CN 116049505B CN 202310340828 A CN202310340828 A CN 202310340828A CN 116049505 B CN116049505 B CN 116049505B
Authority
CN
China
Prior art keywords
bounding box
screen space
tag
current
array
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
Application number
CN202310340828.0A
Other languages
English (en)
Other versions
CN116049505A (zh
Inventor
柳遵梁
李云飞
闻建霞
谷军年
刘俊杰
朱琴琴
李景飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Meichuang Technology Co ltd
Original Assignee
Hangzhou Meichuang Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Meichuang Technology Co ltd filed Critical Hangzhou Meichuang Technology Co ltd
Priority to CN202310340828.0A priority Critical patent/CN116049505B/zh
Publication of CN116049505A publication Critical patent/CN116049505A/zh
Application granted granted Critical
Publication of CN116049505B publication Critical patent/CN116049505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/909Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using geographical or spatial information, e.g. location
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Library & Information Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明实施例公开了屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质。方法包括:搭建3D场景;创建Rbush树实例对象,并创建Map对象;获取需要在3D场景中绘制的标签,以得到标签数组;遍历标签数组;获取当前标签的世界空间位置、屏幕空间位置;计算当前标签的包围盒;利用Rbush树实例对象确定与包围盒相交的屏幕空间包围盒数组;判断当前标签的屏幕空间位置是否存在包围盒;若否,则将包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;将当前标签加入3D场景中,在3D场景中绘制当前标签。通过实施本发明实施例的方法可实现不需要手动设置标签的渲染顺序,保证当前屏幕空间不存在相互重叠的标签。

Description

屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质
技术领域
本发明涉及标签检测方法,更具体地说是指屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质。
背景技术
大多数基于WEBGL的项目需要渲染大量的标签或者文字,用于标记各种建筑物的名称或者建筑物的类型,在多数情况下标签随着相机远近会进行不同程度的缩放,导致文字相互重叠,透明标签渲染次序会相互干扰,对于用户来说标签的辨识度不高,用户体验极为不友好,为解决此类问题特设此发明。
在实际开发过程中,基于WEBGL(3D绘图协议,Web Graphics Library)的标签绘制是任意WEBGL项目都需要的重要组件,一般为了解决标签绘制相互重叠,会使用标签到相机的距离偏移标签的位置,并且需要手动设置标签的渲染顺序,解决标签相互重叠导致的渲染次序,这种偏移或者绘制顺序是需要手动设置,调试难度大并且重叠的标签也会被绘制,渲染性能较差。
因此,有必要设计一种新的方法,实现不需要手动设置标签的渲染顺序,保证了当前屏幕空间不存在相互重叠的标签,提高了用户对标签的辨识度,不需要手动按距离设置标签的偏移量。
发明内容
本发明的目的在于克服现有技术的缺陷,提供屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质。
为实现上述目的,本发明采用以下技术方案:屏幕空间标签碰撞检测方法,包括:
搭建3D场景;
利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象;
获取需要在所述3D场景中绘制的标签,以得到标签数组;
遍历所述标签数组;
对所述标签组内的每个标签,获取当前标签的世界空间位置;
获取当前标签的屏幕空间位置;
计算当前标签在屏幕空间的包围盒;
利用所述Rbush树实例对象确定与当前标签的包围盒相交的屏幕空间包围盒数组;
根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒;
若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;
将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签。
其进一步技术方案为:所述利用所述Rbush树实例对象判断当前标签的屏幕空间位置是否存在包围盒之后,还包括:
若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测;
当所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交,则执行所述将当前标签对应的包围盒存入Rbush树内;当所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交,则停止遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并隐藏当前标签。
其进一步技术方案为:所述获取需要在所述3D场景中绘制的标签,以得到标签数组,包括:
获取需要在3D场景中绘制的标签信息;
将所述标签信息存于数组中,以得到标签数组。
其进一步技术方案为:当前标签在屏幕空间的包围盒包括当前标签的宽高以及当前标签在屏幕空间内的位置信息。
其进一步技术方案为:所述根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒,包括:
确定与所述包围盒相交的屏幕空间包围盒数组的长度,以得到数组长度;
根据所述数组长度判断所述当前标签的屏幕空间内是否有其他标签;
若所述当前标签的屏幕空间内没有其他标签,则确定所述当前标签的屏幕空间位置没有存在包围盒;
若所述当前标签的屏幕空间内有其他标签,则确定所述当前标签的屏幕空间位置存在包围盒。
其进一步技术方案为:所述遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测,包括:
遍历与当前标签的包围盒相交的屏幕空间包围盒数组;
对于与当前标签的包围盒相交的屏幕空间包围盒数组每个包围盒,获取所述屏幕空间包围盒数组内的包围盒,以得到待遍历包围盒;
采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果;
判断所述检测结果是否是所述待遍历包围盒与当前标签的包围盒存在空间相交;
若所述检测结果是所述待遍历包围盒与当前标签的包围盒存在空间相交,则确定所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交;
若所述检测结果不是所述待遍历包围盒与当前标签的包围盒存在空间相交,则当所有待遍历包围盒都与当前标签的包围盒不存在空间相交,确定所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交。
其进一步技术方案为:所述采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果,包括:
利用所述待遍历包围盒的信息,通过Map对象获取所述待遍历包围盒对应的标签的信息;
提取所述待遍历包围盒对应的标签内每个单体元素的宽高信息,并构建每个单体屏幕空间包围盒信息,以得到第一单体信息;
提取当前标签的包围盒对应的标签每个单体元素,并构建每个单体的屏幕空间包围盒,以得到第二单体信息;
根据所述第一单体信息以及所述第二单体信息通过二维AABB检测算法进行碰撞检测,以得到检测结果。
本发明还提供了屏幕空间标签碰撞检测装置,包括:
搭建单元,用于搭建3D场景;
创建单元,用于利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象;
标签数组形成单元,用于获取需要在所述3D场景中绘制的标签,以得到标签数组;
遍历单元,用于遍历所述标签数组;
第一位置获取单元,用于对所述标签组内的每个标签,获取当前标签的世界空间位置;
第二位置获取单元,用于获取当前标签的屏幕空间位置;
包围盒计算单元,用于计算当前标签在屏幕空间的包围盒;
数组确定单元,用于利用所述Rbush树实例对象确定与所述包围盒相交的屏幕空间包围盒数组;
判断单元,用于根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒;
第一存入单元,用于若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;
第二存入单元,用于将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签。
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的方法。
本发明与现有技术相比的有益效果是:本发明通过构建Rbush树实例对象以及Map对象,使用屏幕空间碰撞检测,判断当前标签对应的屏幕空间是否已经存在标签,后序加入的标签不会被绘制,保证当前屏幕空间只有一个标签被绘制,实现不需要手动设置标签的渲染顺序,保证了当前屏幕空间不存在相互重叠的标签,提高了用户对标签的辨识度,不需要手动按距离设置标签的偏移量。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的屏幕空间标签碰撞检测方法的应用场景示意图;
图2为本发明实施例提供的屏幕空间标签碰撞检测方法的流程示意图;
图3为本发明实施例提供的屏幕空间标签碰撞检测方法的子流程示意图;
图4为本发明实施例提供的屏幕空间标签碰撞检测方法的子流程示意图;
图5为本发明实施例提供的屏幕空间标签碰撞检测方法的子流程示意图;
图6为本发明实施例提供的屏幕空间标签碰撞检测方法的子流程示意图;
图7为本发明实施例提供的屏幕空间标签碰撞检测装置的示意性框图;
图8为本发明实施例提供的屏幕空间标签碰撞检测装置的标签数组形成单元的示意性框图;
图9为本发明实施例提供的屏幕空间标签碰撞检测装置的判断单元的示意性框图;
图10为本发明实施例提供的屏幕空间标签碰撞检测装置的相交检测单元的示意性框图;
图11为本发明实施例提供的屏幕空间标签碰撞检测装置的碰撞检测子单元的示意性框图;
图12为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的屏幕空间标签碰撞检测方法的应用场景示意图。图2为本发明实施例提供的屏幕空间标签碰撞检测方法的示意性流程图。该屏幕空间标签碰撞检测方法应用于服务器中。该服务器与终端进行数据交互,减少手动处理3D标签的偏移,简化了开发过程中的数据配置,对于重叠的3D标签,通过屏幕空间碰撞检测,避免重叠标签的绘制,减少了3D标签的绘制数量,提升了渲染性能,同时也不需要对重叠标签渲染次序进行排版。
图2是本发明实施例提供的屏幕空间标签碰撞检测方法的流程示意图。如图2所示,该方法包括以下步骤S110至S230。
S110、搭建3D场景。
在本实施例中,搭建场景不限于任何WEBGL引擎,目前先以threejs引擎为基础,搭建3D基础环境,用于展示大规模不重叠的3D标签绘制。
具体地,创建3D场景的相机、灯光、场景容器等基础3D组件,搭建3D场景。
S120、利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象。
在本实施例中,利用Rbush库创建一个Rbush树实例对象rbush,用于收集当前屏幕空间中的标签包围盒数据,并且对收取到的数据进行增、删、改、查。同时创建javascript的Map对象M,key为包围盒数据,value值对应的当前标签信息。
S130、获取需要在所述3D场景中绘制的标签,以得到标签数组。
在本实施例中,标签数组是指需要在3D场景中绘制的标签。
在一实施例中,请参阅图3,上述的步骤S130可包括步骤S131~S132。
S131、获取需要在3D场景中绘制的标签信息;
S132、将所述标签信息存于数组中,以得到标签数组。
具体地,收集3D场景中需要的绘制的标签信息存于数组A中,信息包含当前标签是否可见、当前标签的图片或者文字信息、标签内部每个元素单体的宽高以及相对于标签原点的偏移、当前标签整体的位置信息以及当前标签的整体大小信息,同时也可以对数组A中的标签按照优先级信息进行排序。
S140、遍历所述标签数组。
在本实施例中,对于数组A内的每个标签信息进行遍历,执行下述的步骤。
S150、对所述标签组内的每个标签,获取当前标签的世界空间位置。
S160、获取当前标签的屏幕空间位置。
在本实施例中,提取当前标签在世界空间中的整体的位置以及标签的宽高信息,利用3D空间中相机的投影变换,将标签在世界空间中的宽高信息和位置信息变换到NDC(归一化设备)空间也就是投影空间,统称屏幕空间。利用WEBGL的canvas宽高,计算屏幕空间中当前标签的位置和宽高数据,投影空间中的取值范围为-1到1,通过与canvas的宽高相乘,可获取到canvas屏幕空间中的数据。
S170、计算当前标签在屏幕空间的包围盒。
在本实施例中,当前标签在屏幕空间的包围盒包括当前标签的宽高以及当前标签在屏幕空间内的位置信息。
具体地,通过当前标签屏幕空间中的宽高信息和位置信息创建当前标签屏幕空间包围盒B,包围盒B中包含当前标签屏幕空间的位置信息和宽高信息。
S180、利用所述Rbush树实例对象确定与当前标签的包围盒相交的屏幕空间包围盒数组。
在本实施例中,屏幕空间包围盒数组是指与当前标签的包围盒相交的所有屏幕空间包围盒构成的数组。
利用Rbush树实例对象结合获取的当前标签屏幕空间包围盒B,查询所有与包围盒B相交的屏幕空间包围盒数组C。
S190、根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒。
在一实施例中,请参阅图4,上述的步骤S190可包括步骤S191~S194。
S191、确定与所述包围盒相交的屏幕空间包围盒数组的长度,以得到数组长度;
S192、根据所述数组长度判断所述当前标签的屏幕空间内是否有其他标签;
S193、若所述当前标签的屏幕空间内没有其他标签,则确定所述当前标签的屏幕空间位置没有存在包围盒;
S194、若所述当前标签的屏幕空间内有其他标签,则确定所述当前标签的屏幕空间位置存在包围盒。
具体地,获取到的屏幕空间包围盒数组C的长度进行判断,如果数组C的长度判断当前屏幕空间是否有其他标签,如果没有其他标签,则将当前标签的屏幕空间包围盒B存放于Rbush树,同时将B对应的标签信息存入到Map对象M,如果存在则需要进一步碰撞检测,判断当前屏幕空间是否已经存在标签。
如果数组C的长度等于0,当前屏幕空间没有其他标签;如果数组C的长度大于0,当前屏幕空间有其他标签,需要进一步进行碰撞检测,判断当前位置是否存在与当前标签相交的标签,遍历数组C。
S200、若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中。
S210、将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签。
S220、若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测。
在一实施例中,请参阅图5,上述的步骤S220可包括步骤S221~S226。
S221、遍历与当前标签的包围盒相交的屏幕空间包围盒数组;
S222、对于与当前标签的包围盒相交的屏幕空间包围盒数组每个包围盒,获取所述屏幕空间包围盒数组内的包围盒,以得到待遍历包围盒。
在本实施例中,待遍历包围盒是指屏幕空间包围盒数组内的包围盒。
S223、采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果。
在本实施例中,检测结果是指所述待遍历包围盒以及当前标签的包围盒是否有相交部分。
在一实施例中,请参阅图6,上述的步骤S223可包括步骤S2231~S2234。
S2231、利用所述待遍历包围盒的信息,通过Map对象获取所述待遍历包围盒对应的标签的信息;
S2232、提取所述待遍历包围盒对应的标签内每个单体元素的宽高信息,并构建每个单体屏幕空间包围盒信息,以得到第一单体信息;
S2233、提取当前标签的包围盒对应的标签每个单体元素,并构建每个单体的屏幕空间包围盒,以得到第二单体信息;
S2234、根据所述第一单体信息以及所述第二单体信息通过二维AABB检测算法进行碰撞检测,以得到检测结果。
S224、判断所述检测结果是否是所述待遍历包围盒与当前标签的包围盒存在空间相交;
S225、若所述检测结果是所述待遍历包围盒与当前标签的包围盒存在空间相交,则确定所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交;
S226、若所述检测结果不是所述待遍历包围盒与当前标签的包围盒存在空间相交,则当所有待遍历包围盒都与当前标签的包围盒不存在空间相交,确定所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交。
在本实施例中,获取数组C中的包围盒D,通过Map对象M,利用包围盒信息D,获取包围盒对应的标签的信息,提取包围盒D对应的标签内,每个单体元素的宽高信息E,构建每个单体屏幕空间包围盒信息F;提取包围盒B对应的标签每个单体元素G,构建每个单体的屏幕空间包围盒H;将F和H通过二维AABB检测算法进行碰撞检测,如果数组C中存在包围盒D与当前标签包围盒B相交的F和H,则停止遍历数组C,当前标签不能进行渲染;如果数组C中没有一个包围盒D与当前标签包围盒B相交的F和H,则将当前标签包围盒B存入rbush对象中,同时将包围盒B对应的标签信息存入到第二步对象M中,将当前标签加入到3D场景进行渲染。
数组A遍历完毕,则表示当前帧的3D标签处理完毕,进入3D渲染环节,如果未遍历完毕,则继续遍历数组A。当然也可以确认一个标签无重复后,先进行标签渲染。
S230、当所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交,则执行所述将当前标签对应的包围盒存入Rbush树内;当所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交,则停止遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并隐藏当前标签。
上述的屏幕空间标签碰撞检测方法,减少手动处理3D标签的偏移,简化了开发过程中的数据配置,对于重叠的3D标签,通过屏幕空间碰撞检测,避免重叠标签的绘制,减少了3D标签的绘制数量,提升了渲染性能,同时也不需要对重叠标签渲染次序进行排版。
上述的屏幕空间标签碰撞检测方法,通过构建Rbush树实例对象以及Map对象,使用屏幕空间碰撞检测,判断当前标签对应的屏幕空间是否已经存在标签,后序加入的标签不会被绘制,保证当前屏幕空间只有一个标签被绘制,实现不需要手动设置标签的渲染顺序,保证了当前屏幕空间不存在相互重叠的标签,提高了用户对标签的辨识度,不需要手动按距离设置标签的偏移量。
图7是本发明实施例提供的一种屏幕空间标签碰撞检测装置300的示意性框图。如图7所示,对应于以上屏幕空间标签碰撞检测方法,本发明还提供一种屏幕空间标签碰撞检测装置300。该屏幕空间标签碰撞检测装置300包括用于执行上述屏幕空间标签碰撞检测方法的单元,该装置可以被配置于服务器中。具体地,请参阅图7,该屏幕空间标签碰撞检测装置300包括搭建单元301、创建单元302、标签数组形成单元303、遍历单元304、第一位置获取单元305、第二位置获取单元306、包围盒计算单元307、数组确定单元308、判断单元309、第一存入单元310、第二存入单元311、相交检测单元312以及标签处理单元313。
搭建单元301,用于搭建3D场景;创建单元302,用于利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象;标签数组形成单元303,用于获取需要在所述3D场景中绘制的标签,以得到标签数组;遍历单元304,用于遍历所述标签数组;第一位置获取单元305,用于对所述标签组内的每个标签,获取当前标签的世界空间位置;第二位置获取单元306,用于获取当前标签的屏幕空间位置;包围盒计算单元307,用于计算当前标签在屏幕空间的包围盒;数组确定单元308,用于利用所述Rbush树实例对象确定与所述包围盒相交的屏幕空间包围盒数组;判断单元309,用于根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒;第一存入单元310,用于若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;第二存入单元311,用于将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签。相交检测单元312,用于若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测;标签处理单元313,用于当所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交,则执行所述将当前标签对应的包围盒存入Rbush树内;当所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交,则停止遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并隐藏当前标签。
在一实施例中,如图8所示,所述标签数组形成单元303包括信息获取子单元3031以及信息存储子单元3032。
信息获取子单元3031,用于获取需要在3D场景中绘制的标签信息;信息存储子单元3032,用于将所述标签信息存于数组中,以得到标签数组。
在一实施例中,如图9所示,所述判断单元309包括长度确定子单元3091、长度判断子单元3092、第一确定子单元3093以及第二确定子单元3094。
长度确定子单元3091,用于确定与所述包围盒相交的屏幕空间包围盒数组的长度,以得到数组长度;长度判断子单元3092,用于根据所述数组长度判断所述当前标签的屏幕空间内是否有其他标签;第一确定子单元3093,用于若所述当前标签的屏幕空间内没有其他标签,则确定所述当前标签的屏幕空间位置没有存在包围盒;第二确定子单元3094,用于若所述当前标签的屏幕空间内有其他标签,则确定所述当前标签的屏幕空间位置存在包围盒。
在一实施例中,如图10所示,所述相交检测单元312包括数组遍历子单元3121、包围盒获取子单元3122、碰撞检测子单元3123、相交判断子单元3124、第三确定子单元3125以及第四确定子单元3126。
数组遍历子单元3121,用于遍历与当前标签的包围盒相交的屏幕空间包围盒数组;包围盒获取子单元3122,用于对于与当前标签的包围盒相交的屏幕空间包围盒数组每个包围盒,获取所述屏幕空间包围盒数组内的包围盒,以得到待遍历包围盒;碰撞检测子单元3123,用于采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果;相交判断子单元3124,用于判断所述检测结果是否是所述待遍历包围盒与当前标签的包围盒存在空间相交;第三确定子单元3125,用于若所述检测结果是所述待遍历包围盒与当前标签的包围盒存在空间相交,则确定所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交;第四确定子单元3126,用于若所述检测结果不是所述待遍历包围盒与当前标签的包围盒存在空间相交,则当所有待遍历包围盒都与当前标签的包围盒不存在空间相交,确定所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交。
在一实施例中,如图11所示,所述碰撞检测子单元3123包括标签信息获取模块31231、第一信息提取模块31232、第二信息提取模块31233以及检测模块31234。
标签信息获取模块31231,用于利用所述待遍历包围盒的信息,通过Map对象获取所述待遍历包围盒对应的标签的信息;第一信息提取模块31232,用于提取所述待遍历包围盒对应的标签内每个单体元素的宽高信息,并构建每个单体屏幕空间包围盒信息,以得到第一单体信息;第二信息提取模块31233,用于提取当前标签的包围盒对应的标签每个单体元素,并构建每个单体的屏幕空间包围盒,以得到第二单体信息;检测模块31234,用于根据所述第一单体信息以及所述第二单体信息通过二维AABB检测算法进行碰撞检测,以得到检测结果。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述屏幕空间标签碰撞检测装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述屏幕空间标签碰撞检测装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图12所示的计算机设备上运行。
请参阅图12,图12是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是服务器,其中,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图12,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种屏幕空间标签碰撞检测方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种屏幕空间标签碰撞检测方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
搭建3D场景;利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象;获取需要在所述3D场景中绘制的标签,以得到标签数组;遍历所述标签数组;对所述标签组内的每个标签,获取当前标签的世界空间位置;获取当前标签的屏幕空间位置;计算当前标签在屏幕空间的包围盒;利用所述Rbush树实例对象确定与当前标签的包围盒相交的屏幕空间包围盒数组;根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒;若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签。
其中,当前标签在屏幕空间的包围盒包括当前标签的宽高以及当前标签在屏幕空间内的位置信息。
在一实施例中,处理器502在实现所述利用所述Rbush树实例对象判断当前标签的屏幕空间位置是否存在包围盒步骤之后,还实现如下步骤:
若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测;当所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交,则执行所述将当前标签对应的包围盒存入Rbush树内;当所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交,则停止遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并隐藏当前标签。
在一实施例中,处理器502在实现所述获取需要在所述3D场景中绘制的标签,以得到标签数组步骤时,具体实现如下步骤:
获取需要在3D场景中绘制的标签信息;将所述标签信息存于数组中,以得到标签数组。
在一实施例中,处理器502在实现所述根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒步骤时,具体实现如下步骤:
确定与所述包围盒相交的屏幕空间包围盒数组的长度,以得到数组长度;根据所述数组长度判断所述当前标签的屏幕空间内是否有其他标签;若所述当前标签的屏幕空间内没有其他标签,则确定所述当前标签的屏幕空间位置没有存在包围盒;若所述当前标签的屏幕空间内有其他标签,则确定所述当前标签的屏幕空间位置存在包围盒。
在一实施例中,处理器502在实现所述遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测步骤时,具体实现如下步骤:
遍历与当前标签的包围盒相交的屏幕空间包围盒数组;对于与当前标签的包围盒相交的屏幕空间包围盒数组每个包围盒,获取所述屏幕空间包围盒数组内的包围盒,以得到待遍历包围盒;采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果;判断所述检测结果是否是所述待遍历包围盒与当前标签的包围盒存在空间相交;若所述检测结果是所述待遍历包围盒与当前标签的包围盒存在空间相交,则确定所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交;若所述检测结果不是所述待遍历包围盒与当前标签的包围盒存在空间相交,则当所有待遍历包围盒都与当前标签的包围盒不存在空间相交,确定所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交。
在一实施例中,处理器502在实现所述采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果步骤时,具体实现如下步骤:
利用所述待遍历包围盒的信息,通过Map对象获取所述待遍历包围盒对应的标签的信息;提取所述待遍历包围盒对应的标签内每个单体元素的宽高信息,并构建每个单体屏幕空间包围盒信息,以得到第一单体信息;提取当前标签的包围盒对应的标签每个单体元素,并构建每个单体的屏幕空间包围盒,以得到第二单体信息;根据所述第一单体信息以及所述第二单体信息通过二维AABB检测算法进行碰撞检测,以得到检测结果。
应当理解,在本申请实施例中,处理器502可以是中央处理单元 (CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路 (Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
搭建3D场景;利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象;获取需要在所述3D场景中绘制的标签,以得到标签数组;遍历所述标签数组;对所述标签组内的每个标签,获取当前标签的世界空间位置;获取当前标签的屏幕空间位置;计算当前标签在屏幕空间的包围盒;利用所述Rbush树实例对象确定与当前标签的包围盒相交的屏幕空间包围盒数组;根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒;若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签。
其中,当前标签在屏幕空间的包围盒包括当前标签的宽高以及当前标签在屏幕空间内的位置信息。
在一实施例中,所述处理器在执行所述计算机程序而实现所述利用所述Rbush树实例对象判断当前标签的屏幕空间位置是否存在包围盒步骤之后,还实现如下步骤:
若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测;当所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交,则执行所述将当前标签对应的包围盒存入Rbush树内;当所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交,则停止遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并隐藏当前标签。
在一实施例中,所述处理器在执行所述计算机程序而实现所述获取需要在所述3D场景中绘制的标签,以得到标签数组步骤时,具体实现如下步骤:
获取需要在3D场景中绘制的标签信息;将所述标签信息存于数组中,以得到标签数组。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒步骤时,具体实现如下步骤:
确定与所述包围盒相交的屏幕空间包围盒数组的长度,以得到数组长度;根据所述数组长度判断所述当前标签的屏幕空间内是否有其他标签;若所述当前标签的屏幕空间内没有其他标签,则确定所述当前标签的屏幕空间位置没有存在包围盒;若所述当前标签的屏幕空间内有其他标签,则确定所述当前标签的屏幕空间位置存在包围盒。
在一实施例中,所述处理器在执行所述计算机程序而实现所述遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测步骤时,具体实现如下步骤:
遍历与当前标签的包围盒相交的屏幕空间包围盒数组;对于与当前标签的包围盒相交的屏幕空间包围盒数组每个包围盒,获取所述屏幕空间包围盒数组内的包围盒,以得到待遍历包围盒;采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果;判断所述检测结果是否是所述待遍历包围盒与当前标签的包围盒存在空间相交;若所述检测结果是所述待遍历包围盒与当前标签的包围盒存在空间相交,则确定所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交;若所述检测结果不是所述待遍历包围盒与当前标签的包围盒存在空间相交,则当所有待遍历包围盒都与当前标签的包围盒不存在空间相交,确定所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交。
在一实施例中,所述处理器在执行所述计算机程序而实现所述采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果步骤时,具体实现如下步骤:
利用所述待遍历包围盒的信息,通过Map对象获取所述待遍历包围盒对应的标签的信息;提取所述待遍历包围盒对应的标签内每个单体元素的宽高信息,并构建每个单体屏幕空间包围盒信息,以得到第一单体信息;提取当前标签的包围盒对应的标签每个单体元素,并构建每个单体的屏幕空间包围盒,以得到第二单体信息;根据所述第一单体信息以及所述第二单体信息通过二维AABB检测算法进行碰撞检测,以得到检测结果。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (6)

1.屏幕空间标签碰撞检测方法,其特征在于,包括:
搭建3D场景;
利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象;
获取需要在所述3D场景中绘制的标签,以得到标签数组;
遍历所述标签数组;
对所述标签组内的每个标签,获取当前标签的世界空间位置;
获取当前标签的屏幕空间位置;
计算当前标签在屏幕空间的包围盒;
利用所述Rbush树实例对象确定与当前标签的包围盒相交的屏幕空间包围盒数组;
根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒;
若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;
将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签;
若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测;
当所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交,则执行所述将当前标签对应的包围盒存入Rbush树内;当所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交,则停止遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并隐藏当前标签;
其中,所述根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒,包括:
确定与所述包围盒相交的屏幕空间包围盒数组的长度,以得到数组长度;
根据所述数组长度判断所述当前标签的屏幕空间内是否有其他标签;
若所述当前标签的屏幕空间内没有其他标签,则确定所述当前标签的屏幕空间位置没有存在包围盒;
若所述当前标签的屏幕空间内有其他标签,则确定所述当前标签的屏幕空间位置存在包围盒;
所述若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测,包括:
遍历与当前标签的包围盒相交的屏幕空间包围盒数组;
对于与当前标签的包围盒相交的屏幕空间包围盒数组每个包围盒,获取所述屏幕空间包围盒数组内的包围盒,以得到待遍历包围盒;
采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果;
判断所述检测结果是否是所述待遍历包围盒与当前标签的包围盒存在空间相交;
若所述检测结果是所述待遍历包围盒与当前标签的包围盒存在空间相交,则确定所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交;
若所述检测结果不是所述待遍历包围盒与当前标签的包围盒存在空间相交,则当所有待遍历包围盒都与当前标签的包围盒不存在空间相交,确定所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交;
其中,所述采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果,包括:
利用所述待遍历包围盒的信息,通过Map对象获取所述待遍历包围盒对应的标签的信息;
提取所述待遍历包围盒对应的标签内每个单体元素的宽高信息,并构建每个单体屏幕空间包围盒信息,以得到第一单体信息;
提取当前标签的包围盒对应的标签每个单体元素,并构建每个单体的屏幕空间包围盒,以得到第二单体信息;
根据所述第一单体信息以及所述第二单体信息通过二维AABB检测算法进行碰撞检测,以得到检测结果。
2.根据权利要求1所述的屏幕空间标签碰撞检测方法,其特征在于,所述获取需要在所述3D场景中绘制的标签,以得到标签数组,包括:
获取需要在3D场景中绘制的标签信息;
将所述标签信息存于数组中,以得到标签数组。
3.根据权利要求1所述的屏幕空间标签碰撞检测方法,其特征在于,当前标签在屏幕空间的包围盒包括当前标签的宽高以及当前标签在屏幕空间内的位置信息。
4.屏幕空间标签碰撞检测装置,其特征在于,包括:
搭建单元,用于搭建3D场景;
创建单元,用于利用Rbush库创建一个Rbush树实例对象,并创建javascript的Map对象;
标签数组形成单元,用于获取需要在所述3D场景中绘制的标签,以得到标签数组;
遍历单元,用于遍历所述标签数组;
第一位置获取单元,用于对所述标签组内的每个标签,获取当前标签的世界空间位置;
第二位置获取单元,用于获取当前标签的屏幕空间位置;
包围盒计算单元,用于计算当前标签在屏幕空间的包围盒;
数组确定单元,用于利用所述Rbush树实例对象确定与所述包围盒相交的屏幕空间包围盒数组;
判断单元,用于根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒;
第一存入单元,用于若当前标签的屏幕空间位置不存在包围盒,则将当前标签对应的包围盒存入Rbush树内,并将当前标签的标签信息存入到Map对象中;
第二存入单元,用于将当前标签加入至所述3D场景中,在所述3D场景中绘制当前标签;
其中,若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测;
当所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交,则执行所述将当前标签对应的包围盒存入Rbush树内;当所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交,则停止遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并隐藏当前标签;
其中,所述根据所述屏幕空间包围盒数组判断当前标签的屏幕空间位置是否存在包围盒,包括:
确定与所述包围盒相交的屏幕空间包围盒数组的长度,以得到数组长度;
根据所述数组长度判断所述当前标签的屏幕空间内是否有其他标签;
若所述当前标签的屏幕空间内没有其他标签,则确定所述当前标签的屏幕空间位置没有存在包围盒;
若所述当前标签的屏幕空间内有其他标签,则确定所述当前标签的屏幕空间位置存在包围盒;
所述若当前标签的屏幕空间位置存在包围盒,则遍历与当前标签的包围盒相交的屏幕空间包围盒数组,并采用Map对象结合所述屏幕空间包围盒数组对当前标签的包围盒进行相交检测,包括:
遍历与当前标签的包围盒相交的屏幕空间包围盒数组;
对于与当前标签的包围盒相交的屏幕空间包围盒数组每个包围盒,获取所述屏幕空间包围盒数组内的包围盒,以得到待遍历包围盒;
采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果;
判断所述检测结果是否是所述待遍历包围盒与当前标签的包围盒存在空间相交;
若所述检测结果是所述待遍历包围盒与当前标签的包围盒存在空间相交,则确定所述屏幕空间包围盒数组中有至少一个包围盒与当前标签的包围盒相交;
若所述检测结果不是所述待遍历包围盒与当前标签的包围盒存在空间相交,则当所有待遍历包围盒都与当前标签的包围盒不存在空间相交,确定所述屏幕空间包围盒数组中没有一个包围盒与当前标签的包围盒相交;
其中,所述采用Map对象将所述待遍历包围盒以及当前标签的包围盒进行碰撞检测,以得到检测结果,包括:
利用所述待遍历包围盒的信息,通过Map对象获取所述待遍历包围盒对应的标签的信息;
提取所述待遍历包围盒对应的标签内每个单体元素的宽高信息,并构建每个单体屏幕空间包围盒信息,以得到第一单体信息;
提取当前标签的包围盒对应的标签每个单体元素,并构建每个单体的屏幕空间包围盒,以得到第二单体信息;
根据所述第一单体信息以及所述第二单体信息通过二维AABB检测算法进行碰撞检测,以得到检测结果。
5.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的方法。
6.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至3中任一项所述的方法。
CN202310340828.0A 2023-04-03 2023-04-03 屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质 Active CN116049505B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310340828.0A CN116049505B (zh) 2023-04-03 2023-04-03 屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310340828.0A CN116049505B (zh) 2023-04-03 2023-04-03 屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN116049505A CN116049505A (zh) 2023-05-02
CN116049505B true CN116049505B (zh) 2023-06-23

Family

ID=86125973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310340828.0A Active CN116049505B (zh) 2023-04-03 2023-04-03 屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116049505B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104200031A (zh) * 2014-09-04 2014-12-10 大连大学 一种基于距离优先和时空相关性的碰撞检测方法
CN104809290A (zh) * 2015-04-27 2015-07-29 北京航空航天大学 一种衣物自碰撞检测高层裁剪优化方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521852B (zh) * 2011-11-24 2015-03-25 中国船舶重工集团公司第七0九研究所 一种独立于三维场景空间的目标标签表现方法
US11003344B2 (en) * 2016-08-18 2021-05-11 Mapbox, Inc. Modifying style layer properties of a digital map
CN113077548B (zh) * 2021-04-26 2024-01-05 北京百度网讯科技有限公司 针对物体的碰撞检测方法、装置、设备和存储介质
CN115484198A (zh) * 2021-06-15 2022-12-16 中移系统集成有限公司 重叠社区检测方法、装置、电子设备及存储介质
CN113961460A (zh) * 2021-10-25 2022-01-21 北京构力科技有限公司 基于轻量化技术的碰撞检测方法、装置、电子设备和计算机可读存储介质
CN114898076B (zh) * 2022-03-29 2023-04-21 北京城市网邻信息技术有限公司 模型标签的添加方法、装置、电子设备及存储介质
CN114758075B (zh) * 2022-04-22 2023-03-24 如你所视(北京)科技有限公司 用于生成三维标签的方法、装置和存储介质
CN114780666B (zh) * 2022-06-23 2022-09-27 四川见山科技有限责任公司 一种数字孪生城市中道路标签优化方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104200031A (zh) * 2014-09-04 2014-12-10 大连大学 一种基于距离优先和时空相关性的碰撞检测方法
CN104809290A (zh) * 2015-04-27 2015-07-29 北京航空航天大学 一种衣物自碰撞检测高层裁剪优化方法

Also Published As

Publication number Publication date
CN116049505A (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN108389245B (zh) 动画场景的渲染方法、装置、电子设备和可读存储介质
CN110647596B (zh) 地图数据处理方法和装置
CN112560862A (zh) 文本识别方法、装置及电子设备
CN110910334B (zh) 一种实例分割方法、图像处理设备及计算机可读存储介质
CN111652144A (zh) 基于目标区域融合的题目分割方法、装置、设备和介质
CN112988557A (zh) 一种搜索框定位方法、数据采集方法、装置及介质
CN111857704A (zh) 一种布局关系的代码生成方法及装置
CN114241105A (zh) 界面渲染方法、装置、设备和计算机可读存储介质
CN115830173A (zh) 一种界面元素绘制方法及装置、设备、存储介质、产品
CN108280135B (zh) 实现数据结构可视化的方法、装置和电子设备
CN116049505B (zh) 屏幕空间标签碰撞检测方法、装置、计算机设备及存储介质
CN115345895B (zh) 用于视觉检测的图像分割方法、装置、计算机设备及介质
CN116152816A (zh) 封闭区域的识别方法、装置、电子设备和存储介质
US11281935B2 (en) 3D object detection from calibrated 2D images
CN113486941B (zh) 直播图像的训练样本生成方法、模型训练方法及电子设备
CN111783180B (zh) 图纸拆分方法及相关装置
CN107038176B (zh) 网络图页面渲染方法、装置及设备
CN114419613A (zh) 图像样本生成方法、文本识别方法、装置、设备和介质
CN113761169A (zh) 一种价格识别方法和装置
CN113496134A (zh) 二维码定位方法、装置、设备及存储介质
CN117830305B (zh) 对象测量方法、装置、设备及介质
CN112101369B (zh) 图像分割方法和装置
CN112118474B (zh) 视频弹幕的显示方法、系统、计算机设备及可读存储介质
CN112118478B (zh) 文本处理方法、装置、电子设备及存储介质
CN107590493B (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
GR01 Patent grant
GR01 Patent grant