CN112699223A - 数据搜索方法、装置、电子设备及存储介质 - Google Patents
数据搜索方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112699223A CN112699223A CN202110039923.8A CN202110039923A CN112699223A CN 112699223 A CN112699223 A CN 112699223A CN 202110039923 A CN202110039923 A CN 202110039923A CN 112699223 A CN112699223 A CN 112699223A
- Authority
- CN
- China
- Prior art keywords
- target
- value
- detection range
- encoded
- dimensional
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/837—Shooting of targets
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/847—Cooperative playing, e.g. requiring coordinated actions from several players to achieve a common goal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- 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
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种数据搜索方法、装置、电子设备及存储介质,属于计算机技术领域。本申请通过将虚拟场景中的三维坐标转换成一维的编码值,并确定被控虚拟对象挂载的目标检测范围的最小编码值和最大编码值,能够将复杂的三维坐标范围搜索化简为易于计算的一维编码值窗口查询,并将符合目标条件的目标编码值,来解码获取到目标三维坐标,无需遍历虚拟场景中的每个三维坐标判断是否位于目标检测范围内,大大提升了三维坐标的数据搜索效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种数据搜索方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的发展和终端功能的多样化,手机游戏作为一种移动端游戏越来越受到用户的青睐。在手机游戏中,用户能够控制虚拟对象在虚拟场景中进行攀爬、跑酷、寻找掩体等活动,虚拟对象在执行上述活动时都需要查找到距离虚拟对象最近的三维空间坐标点(如攀爬点、跑酷点、掩体点等),也即虚拟对象的活动离不开三维空间坐标搜索技术。
目前,在查找三维空间坐标时,终端可以对所有的坐标点进行遍历查询,判断每个坐标点是否位于虚拟对象身上挂载的包围盒(Volume)内部,并向游戏引擎返回位于包围盒内部的坐标点,然而在虚拟场景中涉及到的坐标点通常是百万量级的,上述遍历查询的方式搜索效率极低。
发明内容
本申请实施例提供了一种数据搜索方法、装置、电子设备及存储介质,能够提升数据搜索效率。该技术方案如下:
一方面,提供了一种数据搜索方法,该方法包括:
响应于坐标搜索指令,获取虚拟场景中多个三维坐标所对应的多个编码值,所述多个编码值用于基于一维的编码数值来表示所述虚拟场景中三维的空间坐标;
基于所述虚拟场景中的被控虚拟对象所在的目标检测范围,获取所述目标检测范围所对应的最小编码值和最大编码值;
基于所述最小编码值和所述最大编码值,从所述多个编码值中查询得到符合目标条件的至少一个目标编码值,所述目标条件为大于或等于所述最小编码值且小于或等于所述最大编码值;
基于所述至少一个目标编码值,获取位于所述目标检测范围内的至少一个目标三维坐标。
一方面,提供了一种数据搜索装置,该装置包括:
第一获取模块,用于响应于坐标搜索指令,获取虚拟场景中多个三维坐标所对应的多个编码值,所述多个编码值用于基于一维的编码数值来表示所述虚拟场景中三维的空间坐标;
第二获取模块,用于基于所述虚拟场景中的被控虚拟对象所在的目标检测范围,获取所述目标检测范围所对应的最小编码值和最大编码值;
查询模块,用于基于所述最小编码值和所述最大编码值,从所述多个编码值中查询得到符合目标条件的至少一个目标编码值,所述目标条件为大于或等于所述最小编码值且小于或等于所述最大编码值;
第三获取模块,用于基于所述至少一个目标编码值,获取位于所述目标检测范围内的至少一个目标三维坐标。
在一种可能实施方式中,所述第三获取模块用于:
对所述至少一个目标编码值进行解码,得到所述至少一个目标编码值所对应的至少一个候选三维坐标;
基于所述目标检测范围,确定所述被控虚拟对象所在的球形检测范围,所述球形检测范围小于或等于所述目标检测范围;
从所述至少一个候选三维坐标中,筛选得到位于所述球形检测范围内的所述至少一个目标三维坐标。
在一种可能实施方式中,所述查询模块包括:
排序单元,用于按照从小到大的顺序对所述多个编码值进行排序,得到排序后的所述多个编码值;
第一确定单元,用于基于排序后的所述多个编码值,确定大于或等于所述最小编码值且与所述最小编码值距离最近的第一编码值,以及小于或等于所述最大编码值且与所述最大编码值距离最近的第二编码值;
第二确定单元,用于将所述第一编码值、所述第二编码值以及所述第一编码值与所述第二编码值之间的编码值确定为所述至少一个目标编码值。
在一种可能实施方式中,所述第一确定单元用于:
将排序后的所述多个编码值存储至有序数组中,在所述有序数组中查询得到所述第一编码值和所述第二编码值;或,
根据二叉查找树,从排序后的所述多个编码值中查询得到所述第一编码值和所述第二编码值;或,
根据分块动态树,从排序后的所述多个编码值中查询得到所述第一编码值和所述第二编码值。
在一种可能实施方式中,所述查询模块用于:
基于第一比率对所述最小编码值进行缩小,得到缩小后的最小编码值,所述第一比率大于0且小于1;
基于第二比率对所述最大编码值进行扩大,得到扩大后的最大编码值,所述第二比率大于1;
基于所述缩小后的最小编码值和所述扩大后的最大编码值,执行查询得到至少一个目标编码值的操作。
在一种可能实施方式中,所述装置还包括:
第一确定模块,用于响应于所述坐标搜索指令,确定所述目标检测范围与历史检测范围之间的目标距离,所述历史检测范围为所述被控虚拟对象在触发历史搜索指令时所在的检测范围;
所述第三获取模块,还用于响应于所述目标距离小于或等于第一距离阈值,将基于所述历史搜索指令查询得到的目标三维坐标确定为本次查询得到的目标三维坐标。
在一种可能实施方式中,所述装置还包括:
第四获取模块,用于响应于所述目标距离大于所述第一距离阈值且小于或等于第二距离阈值,获取与所述历史搜索指令对应的多个预存三维坐标,所述多个预存三维坐标与所述历史检测范围的中心点之间的距离小于或等于第三距离阈值,所述第三距离阈值大于所述第二距离阈值;基于所述多个预存三维坐标,执行获取多个编码值并查询目标三维坐标的操作。
在一种可能实施方式中,所述装置还包括:
确定获取模块,用于响应于所述目标距离大于所述第二距离阈值,基于所述数据搜索方法查询得到所述至少一个目标三维坐标;基于所述目标检测范围,确定预存检测范围,所述预存检测范围的中心点与所述目标检测范围的中心点重合,且所述目标检测范围的尺寸大于所述第三距离阈值;获取位于所述预存检测范围内的多个预存三维坐标。
在一种可能实施方式中,所述第一获取模块用于:
对所述多个三维坐标进行莫顿编码,将编码得到的多个莫顿码确定为所述多个编码值。
在一种可能实施方式中,所述装置还包括:
第二确定模块,用于基于所述坐标搜索指令中携带的坐标类型,确定所述虚拟场景中与所述坐标类型对应的所述多个三维坐标。
一方面,提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的数据搜索方法。
一方面,提供了一种存储介质,该存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现如上述任一种可能实现方式的数据搜索方法。
一方面,提供一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括一条或多条程序代码,所述一条或多条程序代码存储在计算机可读存储介质中。电子设备的一个或多个处理器能够从计算机可读存储介质中读取所述一条或多条程序代码,所述一个或多个处理器执行所述一条或多条程序代码,使得电子设备能够执行上述任一种可能实施方式的数据搜索方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过将虚拟场景中的三维坐标转换成一维的编码值,并确定被控虚拟对象挂载的目标检测范围的最小编码值和最大编码值,能够将复杂的三维坐标范围搜索化简为易于计算的一维编码值窗口查询,并将符合目标条件的目标编码值,来解码获取到目标三维坐标,无需遍历虚拟场景中的每个三维坐标判断是否位于目标检测范围内,大大提升了三维坐标的数据搜索效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据搜索方法的实施环境示意图;
图2是本申请实施例提供的一种数据搜索方法的流程图;
图3是本申请实施例提供的一种虚拟场景的界面示意图;
图4是本申请实施例提供的一种虚拟场景的界面示意图;
图5是本申请实施例提供的一种分块动态树的构建流程图;
图6是本申请实施例提供的一种分块动态树的原理性示意图;
图7是本申请实施例提供的一种分块动态树的数据结构示意图;
图8是本申请实施例提供的一种分块动态树的更新流程示意图;
图9是本申请实施例提供的一种分块动态树的查询流程示意图;
图10是本申请实施例提供的一种虚拟场景的分组示意图;
图11是本申请实施例提供的一种数据搜索方法的流程图;
图12是本申请实施例提供的一种数据搜索方法的流程图;
图13是本申请实施例提供的一种数据搜索方法的流程图;
图14是本申请实施例提供的一种数据搜索方法的原理性示意图;
图15是本申请实施例提供的一种数据搜索装置的结构示意图;
图16是本申请实施例提供的一种电子设备的结构示意图;
图17是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括音频处理技术、计算机视觉技术、自然语言处理技术以及机器学习/深度学习等几大方向。
让计算机能听、能看、能说、能感觉,是未来人机交互的发展方向,其中,在对虚拟场景进行三维化建模后,虚拟对象在虚拟场景中如何实现攀爬、跑酷、寻找掩体等活动,以达到更加逼真的显示效果,是一直以来的一个热点议题。尤其是针对一些开发成本高、开发周期长、消耗资源多的终端游戏(俗称为大世界3A游戏),在虚拟场景中涉及到海量的三维坐标位置点,为了实现攀爬导航、跑酷指引、掩体指引等功能,都离不开三维坐标的搜索技术,也即三维空间索引技术。
以下,对本申请实施例涉及的术语进行解释:
虚拟场景:是应用程序在终端上运行时显示(或提供)的虚拟场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中进行移动。可选地,该虚拟场景还可以用于至少两个虚拟对象之间的虚拟场景对战,在该虚拟场景中具有可供至少两个虚拟对象使用的虚拟资源。可选地,该虚拟场景中可以包括对称的两个区域,属于两个敌对阵营的虚拟对象分别占据其中一个区域,并以摧毁对方区域深处的目标建筑/据点/基地/水晶来作为胜利目标,其中,对称的区域比如左下角区域和右上角区域,又比如左侧中部区域和右侧中部区域等。
虚拟对象:是指在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、虚拟精灵、动漫人物等,比如:在虚拟场景中显示的人物、动物、植物、油桶、墙壁、石块等。该虚拟对象可以是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象。在虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。可选地,当虚拟场景为三维虚拟场景时,可选地,虚拟对象可以是一个三维立体模型,该三维立体模型可以是基于三维人体骨骼技术构建的三维角色,同一个虚拟对象可以通过穿戴不同的皮肤来展示出不同的外在形象。在一些实施例中,虚拟对象也可以采用2.5维或2维模型来实现,本申请实施例对此不加以限定。
可选地,该虚拟对象可以是通过客户端上的操作进行控制的玩家角色,还可以是设置在虚拟场景互动中的非玩家角色(Non-Player Character,NPC)。可选地,该虚拟对象可以是在虚拟场景中进行竞技的虚拟人物。可选地,该虚拟场景中参与互动的虚拟对象的数量可以是预先设置的,也可以是根据加入互动的客户端的数量动态确定的。
点云数据:在某个坐标系下的点的数据集合。每个点的数据包含丰富的信息,包括该点的三维坐标、颜色、强度值、时间等,通常可以利用三维激光扫描仪进行数据采集获取点云数据,或者也可以利用三维建模技术构建某个虚拟场景的点云数据,点云数据通常具有数据量大、分布不均匀等特点。作为三维领域中一个重要的数据来源,点云数据主要是表征目标表面的海量点集合,并不具备传统网格数据的集合拓扑信息。因此,点云数据处理中最为核心的问题就是建立离散点间的拓扑关系,实现基于邻域关系的快速查找。
空间索引:建立空间索引在点云数据处理中已被广泛应用,常见空间索引一般是自顶向下逐级划分空间的各种空间索引结构,比较有代表性的包括BSP(Binary SpacePartitioning,二叉空间分割)树、KD(K-Dimensional,K维)树、R树、R+树、四叉树和八叉树等索引结构,而在这些结构中KD树和八叉树在3D(三维)点云数据组织中应用较为广泛。
莫顿编码:莫顿编码是一种对三维坐标的编码方式,编码所得的莫顿码能够将多维空间中的点坐标用一个一维的数值来表示,利用莫顿编码的方式能够将空间中点坐标所对应的空间关系用莫顿码值之间的相邻关系来近似表示。
在相关技术中,以游戏领域内的空间索引为例,传统的三维空间坐标的查找方法(也即空间索引方法)需要对所有的坐标点进行遍历查询,判断每个坐标点是否位于虚拟对象身上挂载的包围盒(Volume)内部,并向游戏引擎返回位于包围盒内部的坐标点,但在百万点云数据集的环境下,直接查找方法的效率极低。
有鉴于此,本申请实施例涉及一种数据搜索方法,能够在点云空间中快速、高效查找三维坐标的方法,使得CPU(Central Processing Unit,中央处理器)的处理耗时更少,并且降低终端设备的内存消耗。这种针对三维坐标点数据的搜索方式,具有广泛的应用前景,例如,将线段拆分成多个坐标点能够实现线段搜索,将凸面体或者三角面拆分成物体的顶点能够实现物体搜索,下面进行详述。
图1是本申请实施例提供的一种数据搜索方法的实施环境示意图。参见图1,该实施例包括终端101和服务器102。
终端101安装和运行有支持虚拟场景的应用程序。该应用程序可以是多人在线战术竞技(Multiplayer Online Battle Arena games,MOBA)游戏、第一人称射击游戏(First-Person Shooting game,FPS)、第三人称射击游戏、大型多人在线角色扮演游戏(Massively Multiplayer Online Role Playing Game,MMORPG)、虚拟现实应用程序、三维地图程序、军事仿真程序或者多人枪战类生存游戏中的任意一种。用户可以使用终端101操作位于虚拟场景中的被控虚拟对象进行活动,该活动包括但不限于:调整身体姿态、攀爬、步行、跑酷、骑行、跳跃、驾驶、拾取、射击、攻击、投掷、寻找掩体、释放技能中的至少一种。示意性的,被控虚拟对象是虚拟人物,比如仿真人物角色或动漫人物角色。
终端101可以通过有线或无线通信方式与服务器102进行直接或间接地连接,本申请实施例在此不对连接方式进行限制。
服务器102可以包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。服务器102用于为支持虚拟场景的应用程序提供后台服务。可选地,服务器102承担主要计算工作,终端101承担次要计算工作;或者,服务器102承担次要计算工作,终端101承担主要计算工作;或者,服务器102和终端101两者之间采用分布式计算架构进行协同计算。
在一些实施例中,服务器102是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一些实施例中,终端101是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、电子书阅读器等,但并不局限于此。
本领域技术人员可以知晓,上述终端101的数量可以更多或更少。比如上述终端101可以仅为一个,或者上述终端101为几十个或几百个,或者更多数量。本申请实施例对终端101的数量和设备类型不加以限定。
图2是本申请实施例提供的一种数据搜索方法的流程图。参见图2,该实施例应用于电子设备,以下以电子设备为终端为例进行说明,该实施例包括下述步骤:
201、终端响应于坐标搜索指令,获取虚拟场景中多个三维坐标所对应的多个编码值,该多个编码值用于基于一维的编码数值来表示该虚拟场景中三维的空间坐标。
其中,终端可以为任一用户所使用的终端,终端当前所控制的虚拟对象称为“被控虚拟对象”,用户可以操纵被控虚拟对象在虚拟场景中进行活动,该活动包括但不限于:调整身体姿态、攀爬、步行、跑酷、骑行、跳跃、驾驶、拾取、射击、攻击、投掷、寻找掩体、释放技能中的至少一种。
其中,该坐标搜索指令用于指示在虚拟场景中搜索位于被控虚拟对象所在的目标检测范围内的目标三维坐标。
在一些实施例中,终端响应于用户对支持虚拟场景的应用程序的启动操作,启动该应用程序,并在该应用程序中显示虚拟场景,可选地,该应用程序可以是MOBA游戏、FPS游戏、第三人称射击游戏、MMORPG游戏、虚拟现实应用程序、三维地图程序、军事仿真程序或者多人枪战类生存游戏中的任意一种,本申请实施例不对该应用程序的类型进行具体限定。
在一些实施例中,该启动操作可以是用户在终端桌面上对该应用程序的图标进行了触摸操作,或者用户向智能语音助手输入对该应用程序的启动指令,该启动指令可以包括语音指令或者文本指令,本申请实施例不对启动指令的类型进行具体限定。
在一些实施例中,在用户为应用程序设置了自动启动条件时,终端可以在检测到符合应用程序的自动启动条件时,由终端操作系统自动启动该应用程序,可选地,该自动启动条件可以是周期性的启动该应用程序,比如每天晚上8点钟启动应用程序,或者,该自动启动条件还可以是开机自动启动,本申请实施例不对应用程序的自动启动条件进行具体限定。
在一些实施例中,终端响应于用户的开局操作,显示操作界面,该操作界面可以包括虚拟场景、虚拟对象的选择控件、虚拟道具的选择控件等。该终端可以实时检测用户对该操作界面中各个虚拟对象的选择操作,将被选择的虚拟对象确定为本局出战的被控虚拟对象,可选地,该选择操作可以为点击操作、长按操作等,也可以为对任一虚拟对象所对应快捷键的触发操作,本申请实施例对此不作限定。用户在操作界面中选择好被控虚拟对象之后,终端开启本局游戏,加载并显示虚拟场景,终端还可以在虚拟场景中显示UI(UserInterface,用户界面)控件,比如地图控件、商店控件、移动摇杆等,本公开实施例不对虚拟场景中显示的控件内容进行具体限定。
在一些实施例中,随着用户操纵被控虚拟对象在虚拟场景中进行活动,终端响应于被控虚拟对象所执行的动作,触发坐标搜索指令。可选地,该坐标搜索指令中携带待搜索的坐标类型,以便于节约坐标搜索的计算量。
在一些实施例中,终端根据被控虚拟对象的动作类型,确定待搜索的坐标类型,例如,当动作类型为攀爬时,坐标类型为攀爬点坐标,又例如,当动作类型为寻找掩体时,坐标类型为掩体点坐标或者掩体区域的顶点坐标,又例如,当动作类型为跑酷时,坐标类型为障碍物的顶点坐标或者中心点坐标等,本申请实施例不对待搜索的坐标类型进行具体限定。
图3是本申请实施例提供的一种虚拟场景的界面示意图,请参考图3,在虚拟场景300中包括掩体301和掩体302,被控虚拟对象303在寻找掩体时,终端可以通过本申请实施例提供的数据搜索方法,在整个虚拟场景300中,搜索出位于被控虚拟对象303的目标检测范围内的掩体301和掩体302,并向用户提示上述两处掩体可以隐匿自身行迹。
图4是本申请实施例提供的一种虚拟场景的界面示意图,请参考图4,在虚拟场景400中包括多个可供着力的攀爬点401,被控虚拟对象402在攀爬时,终端可以通过本申请实施例提供的数据搜索方法,在整个虚拟场景400中,搜索出位于被控虚拟对象402的目标检测范围内的各个攀爬点,并基于用户指示的移动方向,显示被控虚拟对象402向对应方向的攀爬点进行移动的过程。需要说明的是,图中标注有“322”开头的六位数字的位置点均为攀爬点401,而各个位置点上标注的六位数字则是对应的编码值。
在一些实施例中,终端基于该坐标搜索指令中携带的坐标类型,确定该虚拟场景中与该坐标类型对应的多个三维坐标。由于虚拟场景中各个三维坐标对应于不同的虚拟对象,比如有些坐标点是墙壁坐标,有些坐标点是掩体坐标,有些坐标点是攀爬点坐标等,基于坐标类型能够对海量的三维坐标进行初步筛选,从而仅对与该坐标类型对应的各个三维坐标进行精细筛选,能够节约终端的计算资源,从而提升搜索效率。
在一些实施例中,在确定与该坐标类型对应的多个三维坐标后,终端获取该多个三维坐标所对应的多个编码值。可选地,终端对该多个三维坐标进行编码,得到该多个编码值,编码方式包括但不限于莫顿(Morton)编码、GeoHash编码等,本申请实施例不对三维坐标的编码方式进行具体限定。
在一些实施例中,终端对该多个三维坐标进行莫顿编码,将编码得到的多个莫顿码(Morton Code)确定为该多个编码值。由于莫顿码可以将三维坐标转化为一维的编码值,根据一维的编码值的位数可确定三维坐标的保留精度。可选地,终端可以将该多个编码值存储在哈希表中,莫顿编码在作为哈希表的映射算法时,加速了树结构数据的存储和访问速度。
在一个示例中,对任一三维坐标(x,y,z)转换到取值范围为(1-N)的坐标空间,再分别对x、y、z值进行二进制混合插入编码,在采用64位的int(整型数据)进行编码时,坐标的每个值可以有21位的取值空间,因此转换后的(1-N)坐标能够满足1到100w的取值范围,也即能够满足在各类游戏应用的虚拟场景所对应的点云空间的搜索需求。其中,N为大于或等于1的整数。
在一些实施例中,由于在应用程序运行时,被控虚拟对象在虚拟场景中是连续执行动作的,因此在整个运动过程中,通常每一帧都会触发坐标搜索指令,或者同一帧还有可能多次触发坐标搜索指令。在上述基础上,终端可以对历史搜索指令进行两种范围的坐标缓存机制,分别称为Smallcache(小范围坐标缓存)和Bigcache(大范围坐标缓存)。
可选地,该历史搜索指令可以是前一个坐标搜索指令,或者,该历史搜索指令可以是前两个坐标搜索指令,或者,该历史搜索指令可以是任一历史时刻中接收到的任意数量的坐标搜索指令,本申请实施例对此不作限定。
在一些实施例中,终端基于Smallcache机制,缓存历史搜索指令查询得到的目标三维坐标(也即缓存搜索结果),换言之,假设被控虚拟对象在触发历史搜索指令时所在的检测范围称为“历史检测范围”,那么Smallcache机制下终端会缓存位于历史检测范围内的各个目标三维坐标。
在上述Smallcache机制下,在当前时刻接收到该坐标搜索指令之后,终端响应于该坐标搜索指令,确定该目标检测范围与历史检测范围之间的目标距离,该历史检测范围为该被控虚拟对象在触发历史搜索指令时所在的检测范围;响应于该目标距离小于或等于第一距离阈值,将基于该历史搜索指令查询得到的目标三维坐标确定为本次查询得到的目标三维坐标。其中,该第一距离阈值为任一大于或等于0的数值。
在上述过程中,终端基于Smallcache机制,判断当前的坐标搜索指令是否与历史搜索指令之间的差异不超过一定程度(也即两者的检测范围之间的目标距离不超过第一距离阈值),如果不超过一定程度,则直接返回历史搜索指令所缓存的搜索结果,跳过下述步骤202-204,退出流程,这样能够大大节约终端的处理资源。
在一些实施例中,终端基于Bigcache机制,根据历史搜索指令的搜索结果,构建一个更大的预存检测范围,并缓存位于预存检测范围内的各个预存三维坐标,换言之,Bigcache机制下终端除了缓存位于历史检测范围内的搜索结果之外,还会缓存一些历史检测范围外、预存检测范围内的预存三维坐标。
在上述Bigcache机制下,在当前时刻接收到该坐标搜索指令之后,终端响应于该目标距离大于该第一距离阈值且小于或等于第二距离阈值,获取与该历史搜索指令对应的多个预存三维坐标,该多个预存三维坐标与该历史检测范围的中心点之间的距离小于或等于第三距离阈值,该第三距离阈值大于该第二距离阈值;基于该多个预存三维坐标,执行获取多个编码值并查询目标三维坐标的操作。其中,该第二距离阈值为大于第一距离阈值且小于第三距离阈值的数值。
在上述过程中,终端基于Bigcache机制,即使当前的坐标搜索指令是否与历史搜索指令之间的差异超过了Smallcache机制所判定的程度,但如果指定的目标检测范围位于预存检测范围内,那么仅针对预存检测范围内的各个预存三维坐标执行步骤201-204以进行坐标搜索即可,避免了对百万量级的点云数据进行反复搜索,节约了终端的处理资源。
在一些实施例中,终端响应于该目标距离大于该第二距离阈值,基于该数据搜索方法查询得到该至少一个目标三维坐标;基于该目标检测范围,确定预存检测范围,该预存检测范围的中心点与该目标检测范围的中心点重合,且该目标检测范围的尺寸大于该第三距离阈值;获取位于该预存检测范围内的多个预存三维坐标。
在上述过程中,如果当前时刻接收到该坐标搜索指令之后,目标检测范围脱离了预存检测范围,那么可以基于步骤201-204进行坐标搜索,得到目标三维坐标之后,基于本次搜索的目标检测范围,重新构建一个新的预存检测范围,并缓存新的预存检测范围内的各个预存三维坐标,也即刷新Bigcache。可选地,对于每一帧还可以指定Bigcache的刷新次数,以防止某一帧中过量刷新Bigcache。
202、终端基于该虚拟场景中的被控虚拟对象所在的目标检测范围,获取该目标检测范围所对应的最小编码值和最大编码值。
其中,该被控虚拟对象为虚拟场景中当前终端所操控的虚拟对象。示意性的,被控虚拟对象是虚拟人物,比如仿真人物角色或动漫人物角色。
在一些实施例中,终端在被控虚拟对象的三维模型上挂载一个呈长方体形状的包围盒(Volume),该包围盒也即被控虚拟对象的最小外接长方体,将该包围盒确定为目标检测范围。进一步地,确定该目标检测范围内的各个三维坐标中的最小坐标和最大坐标,分别对最小坐标和最大坐标进行编码,得到最小编码值和最大编码值。
在一些实施例中,对最小坐标和最大坐标的编码方式需要与上述步骤201中对各个三维坐标的编码方式一致,也即,如果上述步骤201中采用莫顿编码,则上述步骤202中也需要采用莫顿编码,同理,如果上述步骤201中采用GeoHash编码,则上述步骤202中也需要采用GeoHash编码,本申请实施例不对此进行具体限定。
203、终端基于该最小编码值和该最大编码值,从该多个编码值中查询得到符合目标条件的至少一个目标编码值,该目标条件为大于或等于该最小编码值且小于或等于该最大编码值。
在一些实施例中,终端可以按照从小到大的顺序对该多个编码值进行排序,得到排序后的该多个编码值;基于排序后的该多个编码值,确定大于或等于该最小编码值且与该最小编码值距离最近的第一编码值,以及小于或等于该最大编码值且与该最大编码值距离最近的第二编码值;将该第一编码值、该第二编码值以及该第一编码值与该第二编码值之间的编码值确定为该至少一个目标编码值。
可选地,终端在对各个编码值排序时,采用的排序算法包括但不限于:选择排序算法、插入排序算法、归并排序算法、希尔排序算法、堆排序算法、快速排序算法等,本申请实施例不对排序算法的类型进行具体限定。
在上述过程中,终端通过将带查找的各个三维坐标的编码值按照从小到大排序,并将排序后的各个三维坐标的编码值存储到一个连续的内存空间中,方便基于最小编码值和最大编码值进行窗口查询,窗口查询也即是将目标检测范围内的三维坐标范围查询,转化为基于最小编码值和最大编码值这一窗口查询,能够提升数据搜索效率。
在一些实施例中,终端在对各个编码值进行排序之后,可以采取下述任一种方式来获取该第一编码值或第二编码值:将排序后的该多个编码值存储至有序数组中,在该有序数组中查询得到该第一编码值和该第二编码值;或,根据二叉查找树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值;或,根据分块动态树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值。
在上述过程中,不管是基于数组的搜索方式、基于二叉树的搜索方式还是基于分块动态树的搜索方式,均能够大大提升三维坐标的搜索效率,需要说明的是,终端可以同时支持上述三种搜索方式,并且还可以在应用程序的运行过程中随时动态切换当前的搜索方式,达到自适应选择合适的搜索方式的效果。需要说明的是,在连续内存下基于数组的搜索方式,通常会缓存较少的数据量,能够节约存储空间,但基于分块动态树的搜索方式则具有更高的搜索效率。
在一些实施例中,终端可以基于内存空间的剩余存储量来动态确定当前的搜索方式,比如,当剩余存储量小于存储阈值时,将搜索方式切换至基于数组的搜索方式,以节约终端的存储资源,当剩余存储量大于或等于存储阈值时,将搜索方式切换至基于分块动态树的搜索方式,以提高三维坐标的搜索效率,本申请实施例不对如何确定搜索方式进行具体限定。
以下以分块动态树为例,介绍基于分块动态树的搜索方式。分块动态树能够基于莫顿地址码(也即莫顿码)进行寻址,能够解决在虚拟场景中获取动态攀爬线、执行动态碰撞检测等操作,通常情况下,需要先将虚拟场景作为一个较大的区域,在该区域内按照一定的尺寸划分为多个块(Cell),然后对每个块进行坐标转换和地址编码,即可构建出分块动态树。
图5是本申请实施例提供的一种分块动态树的构建流程图,如500所示,对每个块,根据块内的各个三维坐标(x,y,z)确定当前块的边框(Bounding Box),对边框进行地址编码后,能够得到编码值,从而构建出分块动态树。
图6是本申请实施例提供的一种分块动态树的原理性示意图,如600所示,在一个较大区域中划分出尺寸相等的多个较小的块,在每个块中可以基于二叉树来进行三维坐标的搜索,也即相邻块之间按照编码值从小到大的顺序进行排序,但每个块内的三维坐标则可以无需按照编码值进行从小到大的排序,而是直接构建出块内的二叉树搜索结构。
图7是本申请实施例提供的一种分块动态树的数据结构示意图,如700所示,分块动态树以键值对的形式构建Tree(Key,Value),首先建立各个块的编码值与块序号之间的映射关系Tree(Code,Cellbox),其次确定各个块内的三维坐标Cellbox(element…(1-N)),对所有的三维坐标element,可以划分为静态元素StaticElement和动态元素DynamicElement,其中,静态元素可以基于块序号(Identification,ID)和编码值而唯一确定,而动态元素则可以随时在分块动态树中进行更新。
图8是本申请实施例提供的一种分块动态树的更新流程示意图,如800所示,在任一个三维坐标发生变化时,仅更新该任一个三维坐标所处的块(Cell)即可,而无需更新整个分块动态树,可选地,还可以将联合的动态元素全部分组合成多个DynamicElement父动态元素,每个父动态元素由上万个子动态元素组成,在更新子动态元素时,只需要更新所在的父动态元素和块即可,而无需更新所有的动态元素,在实时更新三维坐标的场景下,极大地提高了大批量动态元素的更新效率。
图9是本申请实施例提供的一种分块动态树的查询流程示意图,如900所示,对于静态元素,可以直接根据地址码(也即待查询的编码值)来寻址到地址码所在的目标块,然后在目标块内根据动态二叉树遍历查询到所需的三维坐标;对于动态元素,同样先根据地址码查询到地址码所在的目标块,然后将查询窗口转换到动态数据的局部(Local)空间,在局部空间内进行遍历和求交计算,输出最终所需的三维坐标。
在上述过程中,由于莫顿码X、Y、Z各占21位,因此能够支持0到200w量级的坐标数据。在一些实施例中,对于一些较大的场景地图(较大的虚拟场景),需要做整个区域地图分块流式(Streamming)加载,并非将整个虚拟场景视为一个较大的区域,而是将整个虚拟场景划分成多个区域,每个区域按照上述分块动态树继续划分成多个块,虚拟场景中划分出的多个区域也可以称为多个组(Group)。
图10是本申请实施例提供的一种虚拟场景的分组示意图,如1000所示,终端将虚拟场景划分成4个组,每个组中又划分成多个块,在每个块内可以按照动态二叉树的方法来遍历查询块内的三维坐标。在此基础上进行搜索时,终端需要根据三维坐标,判断该三维坐标属于虚拟场景中的哪个组,然后将三维坐标转换到这一组的点云空间内,每个组的点云空间的有效坐标值为0-200w,通过Group分组之后,能够支持大地图、无限区域的分块数据(只需要不断添加新的组即可),并且还能分块对各个组的数据进行加载或者卸载,保证内存最优化。
在一些实施例中,终端也可以不对各个编码值进行排序,也即将各个编码值存储到一个无序数组中,并遍历无序数组中各个编码值,依次取出符合目标条件的各个目标编码值,这样能够简化数据搜索流程。
在一些实施例中,由于莫顿编码值在点云空间中是按照Z曲线连续分布的,因此如果直接基于最小编码值和最大编码值进行窗口查询,可能会导致搜索结果在窗口的边缘上存在一定的误差,因此,终端可以通过下述方式来缩小边缘误差:基于第一比率对该最小编码值进行缩小,得到缩小后的最小编码值,该第一比率大于0且小于1;基于第二比率对该最大编码值进行扩大,得到扩大后的最大编码值,该第二比率大于1;基于该缩小后的最小编码值和该扩大后的最大编码值,执行查询得到至少一个目标编码值的操作。
也即是说,终端可以将最小编码值按照一定的比率进行缩小,将最大编码值按照一定的比率进行扩大后,再进行莫顿编码及查询操作,通过对查询窗口的最小编码值和最大编码值进行缩放,能够有效地缩小三维坐标搜索时可能产生的边缘误差。
204、终端基于该至少一个目标编码值,获取位于该目标检测范围内的至少一个目标三维坐标。
在一些实施例中,终端可以对该至少一个目标编码值进行解码,得到该至少一个目标编码值所对应的至少一个候选三维坐标;基于该目标检测范围,确定该被控虚拟对象所在的球形检测范围,该球形检测范围小于或等于该目标检测范围;从该至少一个候选三维坐标中,筛选得到位于该球形检测范围内的该至少一个目标三维坐标。
可选地,终端可以将该目标检测范围的最大内接球形空间确定为该球形检测范围,或者,终端还可以将被控虚拟对象所在的最小外接球形空间确定为该球形检测范围,本申请实施例不对该球形检测范围的确定方式进行具体限定。
在上述过程中,终端对于所有查询到的各个目标编码值,将各个目标编码值重新解码转换成各个候选三维坐标,并将原本的目标检测范围转换成球形检测范围,对各个候选三维坐标依次与球形检测范围进行求交运算,能够得到位于球形检测范围内的所有目标三维坐标,终端可以向游戏引擎返回各个目标三维坐标。进一步地,还可以基于Smallcache机制缓存本次的搜索结果,并基于Bigcache机制缓存对应各个预存三维坐标。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过将虚拟场景中的三维坐标转换成一维的编码值,并确定被控虚拟对象挂载的目标检测范围的最小编码值和最大编码值,能够将复杂的三维坐标范围搜索化简为易于计算的一维编码值窗口查询,并将符合目标条件的目标编码值,来解码获取到目标三维坐标,无需遍历虚拟场景中的每个三维坐标判断是否位于目标检测范围内,大大提升了三维坐标的数据搜索效率。
表1示出了基于传统的八叉树空间索引方式,在虚拟场景中大量点云数据下的测试结果:
表1
点云数量 | 4w | 17w | 65w |
搜索时间 | 1ms | 4ms | 15.4ms |
数据&建树时间 | 0.11s | 0.486s | 1.86s |
其中,点云数量的单位“w”表示万,搜索时间的单位“ms”表示毫秒,数据&建树时间的单位“s”表示秒。
表2示出了基于本申请实施例提供的空间索引方式,在虚拟场景中大量点云数据下的对比结果:
表2
点云数量65w | 八叉树 | 莫顿数组 | 莫顿树 | 对比 |
CPU消耗 | 15.4ms | 0.33ms | 0.32ms | 50倍提升 |
建树消耗 | 1.86s | 0.72s | 0.863s | 3-4倍提升 |
内存消耗 | >15*N*uint32 | 3*N*uint32 | 5*N*uint32 | 5倍以上提升 |
其中,莫顿数组是指在莫顿编码下基于数组的查找方式,莫顿树是指在莫顿编码下基于二叉树(静态树)或分块动态树的查找方式。
上述表2示出了点云数量65万(65w)的情况下,三种不同空间索引方式各自的三种资源消耗指标,CPU消耗的单位“ms”表示毫秒,建树消耗的单位“s”表示秒,内存消耗的单位“N*uint32”表示点云数量N个unit32类型的数据所占的内存。
表3示出了基于静态树和动态树两种空间索引方式分别在大量点云数据下进行测试后的对比结果:
表3
上述表2示出了点云数量34万(34w)的情况下,基于静态树和动态树两种空间索引方式各自的多种资源消耗指标,CPU搜索消耗、总(解压)消耗、以及Cache(高速缓存)搜索三者的单位“ms”均表示毫秒,建树消耗的单位“s”表示秒,静态树的内存消耗的单位“N*float”表示点云数量个float类型的数据所占的内存,动态树的内存消耗的单位“N*uint32*5*Cell*float”表示建树时划分的块(Cell)以float类型的数据来占用内存,块内的各个点云数据以unit32类型的数据来占用内存,N代表点云数量,unit32是32位无符号整数的数据类型,float是浮点型数据类型。
综合上述表1至表3,可以看出,无论是内存占用还是CPU查找效率或者建树时间,本申请实施例提供的数据搜索方法均优于传统的八叉树空间索引方法,并且,由于实际应用场景与测试场景的环境差异,预计实际搜索耗时约为上述CPU搜索消耗的六分之一。
图11是本申请实施例提供的一种数据搜索方法的流程图,请参考图11,该实施例应用于电子设备,以下以电子设备为终端为例进行说明,该实施例包括下述步骤:
1101、终端响应于坐标搜索指令,确定虚拟场景中被控虚拟对象所在的目标检测范围与历史检测范围之间的目标距离,该历史检测范围为该被控虚拟对象在触发历史搜索指令时所在的检测范围。
可选地,该历史搜索指令可以是前一个坐标搜索指令,或者,该历史搜索指令可以是前两个坐标搜索指令,或者,该历史搜索指令可以是任一历史时刻中接收到的任意数量的坐标搜索指令,本申请实施例对此不作限定。
在一些实施例中,终端基于当前的坐标搜索指令,确定目标检测范围后,同理基于历史搜索指令确定历史检测范围(或者直接从缓存中读取历史检测范围),将目标检测范围的中心点与历史检测范围的中心点之间的距离获取为该目标距离,这样能够加快获取目标距离的效率。
上述步骤1101确定目标检测范围的过程与上述步骤202类似,这里不做赘述。
1102、终端响应于该目标距离小于或等于第一距离阈值,将基于该历史搜索指令查询得到的目标三维坐标确定为本次查询得到的目标三维坐标。
在上述过程中,由于针对历史搜索指令,终端会缓存其搜索结果,如果目标距离小于或等于第一距离阈值,直接将历史搜索指令的搜索结果确定为当前坐标搜索指令的搜索结果,能够跳过繁琐的数据搜索流程,直接得到精准的目标三维坐标,大大提高了三维坐标的搜索效率。
在本申请实施例中,示出了终端基于Smallcache机制,判断当前的坐标搜索指令是否与历史搜索指令之间的差异不超过一定程度(也即两者的检测范围之间的目标距离不超过第一距离阈值),如果不超过一定程度,则直接返回历史搜索指令所缓存的搜索结果,跳过繁琐的数据搜索流程,这样能够大大节约终端的处理资源。
图12是本申请实施例提供的一种数据搜索方法的流程图,请参考图12,该实施例应用于电子设备,以下以电子设备为终端为例进行说明,该实施例包括下述步骤:
1201、终端响应于坐标搜索指令,确定虚拟场景中被控虚拟对象所在的目标检测范围与历史检测范围之间的目标距离,该历史检测范围为该被控虚拟对象在触发历史搜索指令时所在的检测范围。
上述步骤1201与上述步骤1101类似,这里不做赘述。
1202、终端响应于该目标距离大于第一距离阈值且小于或等于第二距离阈值,获取与该历史搜索指令对应的多个预存三维坐标,该多个预存三维坐标与该历史检测范围的中心点之间的距离小于或等于第三距离阈值,该第三距离阈值大于该第二距离阈值。
其中,该第二距离阈值为大于第一距离阈值且小于第三距离阈值的数值。
在一些实施例中,终端基于Bigcache机制,根据历史搜索指令的搜索结果,构建一个更大的预存检测范围,并缓存位于预存检测范围内的各个预存三维坐标,换言之,Bigcache机制下终端除了缓存位于历史检测范围内的搜索结果之外,还会缓存一些历史检测范围外、预存检测范围内的预存三维坐标。此时,如果目标距离大于第一距离阈值且小于或等于第二距离阈值,则终端从缓存中读取与该历史搜索指令对应存储的多个预存三维坐标。
1203、终端获取该多个预存三维坐标所对应的多个编码值,该多个编码值用于基于一维的编码数值来表示该虚拟场景中三维的空间坐标。
可选地,终端对该多个预存三维坐标进行莫顿编码,将编码得到的多个莫顿码确定为该多个编码值。
上述步骤1203与上述步骤201类似,这里不做赘述。
1204、终端获取该目标检测范围所对应的最小编码值和最大编码值。
上述步骤1204与上述步骤202类似,这里不做赘述。
1205、终端基于第一比率对该最小编码值进行缩小,得到缩小后的最小编码值,该第一比率大于0且小于1。
可选地,终端将最小编码值与该第一比率相乘,得到缩小后的最小编码值。
1206、终端基于第二比率对该最大编码值进行扩大,得到扩大后的最大编码值,该第二比率大于1。
可选地,终端将最大编码值与该第二比率相乘,得到扩大后的最大编码值。
1207、终端基于该缩小后的最小编码值和该扩大后的最大编码值,从该多个编码值中查询得到符合目标条件的至少一个目标编码值,该目标条件为大于或等于该缩小后的该最小编码值且小于或等于该扩大后的该最大编码值。
在一些实施例中,终端按照从小到大的顺序对该多个编码值进行排序,得到排序后的该多个编码值;基于排序后的该多个编码值,确定大于或等于缩小后的该最小编码值且与缩小后的该最小编码值距离最近的第一编码值,以及小于或等于扩大后的该最大编码值且与扩大后的该最大编码值距离最近的第二编码值;将该第一编码值、该第二编码值以及该第一编码值与该第二编码值之间的编码值确定为该至少一个目标编码值。
在一些实施例中,终端将排序后的该多个编码值存储至有序数组中,在该有序数组中查询得到该第一编码值和该第二编码值;或,根据二叉查找树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值;或,根据分块动态树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值。
上述步骤1207与上述步骤203类似,这里不做赘述。
1208、终端基于该至少一个目标编码值,获取位于该目标检测范围内的至少一个目标三维坐标。
上述步骤1208与上述步骤204类似,这里不做赘述。
在本申请实施例中,终端基于Bigcache机制,即使当前的坐标搜索指令是否与历史搜索指令之间的差异超过了Smallcache机制所判定的程度,但如果指定的目标检测范围位于预存检测范围内,那么仅针对预存检测范围内的各个预存三维坐标执行坐标搜索即可,避免了对百万量级的点云数据进行反复搜索,节约了终端的处理资源。
图13是本申请实施例提供的一种数据搜索方法的流程图,请参考图13,该实施例应用于电子设备,以下以电子设备为终端为例进行说明,该实施例包括下述步骤:
1301、终端响应于坐标搜索指令,确定虚拟场景中被控虚拟对象所在的目标检测范围与历史检测范围之间的目标距离,该历史检测范围为该被控虚拟对象在触发历史搜索指令时所在的检测范围。
上述步骤1301与上述步骤1201类似,这里不做赘述。
1302、终端响应于该目标距离大于该第二距离阈值,获取虚拟场景中多个三维坐标所对应的多个编码值,该多个编码值用于基于一维的编码数值来表示该虚拟场景中三维的空间坐标。
上述步骤1302与上述步骤201类似,这里不做赘述。
1303、终端获取该目标检测范围所对应的最小编码值和最大编码值。
上述步骤1303与上述步骤1204类似,这里不做赘述。
1304、终端基于第一比率对该最小编码值进行缩小,得到缩小后的最小编码值,该第一比率大于0且小于1。
可选地,终端将最小编码值与该第一比率相乘,得到缩小后的最小编码值。
1305、终端基于第二比率对该最大编码值进行扩大,得到扩大后的最大编码值,该第二比率大于1。
可选地,终端将最大编码值与该第二比率相乘,得到扩大后的最大编码值。
1306、终端基于该缩小后的最小编码值和该扩大后的最大编码值,从该多个编码值中查询得到符合目标条件的至少一个目标编码值,该目标条件为大于或等于该缩小后的该最小编码值且小于或等于该扩大后的该最大编码值。
在一些实施例中,终端按照从小到大的顺序对该多个编码值进行排序,得到排序后的该多个编码值;基于排序后的该多个编码值,确定大于或等于缩小后的该最小编码值且与缩小后的该最小编码值距离最近的第一编码值,以及小于或等于扩大后的该最大编码值且与扩大后的该最大编码值距离最近的第二编码值;将该第一编码值、该第二编码值以及该第一编码值与该第二编码值之间的编码值确定为该至少一个目标编码值。
在一些实施例中,终端将排序后的该多个编码值存储至有序数组中,在该有序数组中查询得到该第一编码值和该第二编码值;或,根据二叉查找树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值;或,根据分块动态树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值。
上述步骤1306与上述步骤1207类似,这里不做赘述。
1307、终端基于该至少一个目标编码值,获取位于该目标检测范围内的至少一个目标三维坐标。
上述步骤1307与上述步骤1208类似,这里不做赘述。
1308、终端基于该目标检测范围,确定预存检测范围,该预存检测范围的中心点与该目标检测范围的中心点重合,且该目标检测范围的尺寸大于该第三距离阈值。
在一些实施例中,终端以目标检测范围的中心点作为预存检测范围的中心点,并将大于该第三距离阈值的数值确定为目标检测范围的尺寸,将以该中心点为球心、以该尺寸为半径的球形空间确定为该预存检测范围。
1309、终端获取位于该预存检测范围内的多个预存三维坐标。
在一些实施例中,终端基于与步骤201-204类似的方式获取该多个预存三维坐标。在另一些实施例中,如果终端采取基于分块动态树的搜索方式,那么可以直接将目标三维坐标所处的目标块确定为预存检测范围,并缓存目标块内的所有三维坐标作为该多个预存三维坐标。
在本申请实施例中,如果当前时刻接收到该坐标搜索指令之后,目标检测范围脱离了预存检测范围,那么可以基于与步骤201-204类似的方式进行坐标搜索,得到目标三维坐标之后,基于本次搜索的目标检测范围,重新构建一个新的预存检测范围,并缓存新的预存检测范围内的各个预存三维坐标,也即刷新Bigcache。可选地,对于每一帧还可以指定Bigcache的刷新次数,以防止某一帧中过量刷新Bigcache。
图14是本申请实施例提供的一种数据搜索方法的原理性示意图,如1400所示,以攀爬点数据为例进行说明。
步骤一、终端将攀爬点数据初始化。
步骤二、终端构建莫顿树。
步骤三、终端控制被控虚拟对象开始攀爬。
步骤四、终端利用莫顿树进行三维空间查找。
可选地,终端在进行三维空间查找时,可以基于莫顿数组查找,也可以基于莫顿树搜索,还可以基于莫顿平衡树搜索,本申请实施例不对查找方式进行具体限定。
步骤五、终端找到目标攀爬点后,控制被控虚拟对象向目标攀爬点移动。
在本申请实施例中,仅以攀爬点导航为例进行说明,这一空间搜索方法还可应用于寻路导航线查询、掩体区域查询等等,在游戏应用内大场景下百万数量级的点云数据上,能够极大的提示数据搜索效率。
图15是本申请实施例提供的一种数据搜索装置的结构示意图,请参考图15,该装置包括:
第一获取模块1501,用于响应于坐标搜索指令,获取虚拟场景中多个三维坐标所对应的多个编码值,该多个编码值用于基于一维的编码数值来表示该虚拟场景中三维的空间坐标;
第二获取模块1502,用于基于该虚拟场景中的被控虚拟对象所在的目标检测范围,获取该目标检测范围所对应的最小编码值和最大编码值;
查询模块1503,用于基于该最小编码值和该最大编码值,从该多个编码值中查询得到符合目标条件的至少一个目标编码值,该目标条件为大于或等于该最小编码值且小于或等于该最大编码值;
第三获取模块1504,用于基于该至少一个目标编码值,获取位于该目标检测范围内的至少一个目标三维坐标。
本申请实施例提供的装置,通过将虚拟场景中的三维坐标转换成一维的编码值,并确定被控虚拟对象挂载的目标检测范围的最小编码值和最大编码值,能够将复杂的三维坐标范围搜索化简为易于计算的一维编码值窗口查询,并将符合目标条件的目标编码值,来解码获取到目标三维坐标,无需遍历虚拟场景中的每个三维坐标判断是否位于目标检测范围内,大大提升了三维坐标的数据搜索效率。
在一种可能实施方式中,该第三获取模块1504用于:
对该至少一个目标编码值进行解码,得到该至少一个目标编码值所对应的至少一个候选三维坐标;
基于该目标检测范围,确定该被控虚拟对象所在的球形检测范围,该球形检测范围小于或等于该目标检测范围;
从该至少一个候选三维坐标中,筛选得到位于该球形检测范围内的该至少一个目标三维坐标。
在一种可能实施方式中,基于图15的装置组成,该查询模块1503包括:
排序单元,用于按照从小到大的顺序对该多个编码值进行排序,得到排序后的该多个编码值;
第一确定单元,用于基于排序后的该多个编码值,确定大于或等于该最小编码值且与该最小编码值距离最近的第一编码值,以及小于或等于该最大编码值且与该最大编码值距离最近的第二编码值;
第二确定单元,用于将该第一编码值、该第二编码值以及该第一编码值与该第二编码值之间的编码值确定为该至少一个目标编码值。
在一种可能实施方式中,该第一确定单元用于:
将排序后的该多个编码值存储至有序数组中,在该有序数组中查询得到该第一编码值和该第二编码值;或,
根据二叉查找树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值;或,
根据分块动态树,从排序后的该多个编码值中查询得到该第一编码值和该第二编码值。
在一种可能实施方式中,该查询模块1503用于:
基于第一比率对该最小编码值进行缩小,得到缩小后的最小编码值,该第一比率大于0且小于1;
基于第二比率对该最大编码值进行扩大,得到扩大后的最大编码值,该第二比率大于1;
基于该缩小后的最小编码值和该扩大后的最大编码值,执行查询得到至少一个目标编码值的操作。
在一种可能实施方式中,基于图15的装置组成,该装置还包括:
第一确定模块,用于响应于该坐标搜索指令,确定该目标检测范围与历史检测范围之间的目标距离,该历史检测范围为该被控虚拟对象在触发历史搜索指令时所在的检测范围;
该第三获取模块,还用于响应于该目标距离小于或等于第一距离阈值,将基于该历史搜索指令查询得到的目标三维坐标确定为本次查询得到的目标三维坐标。
在一种可能实施方式中,基于图15的装置组成,该装置还包括:
第四获取模块,用于响应于该目标距离大于该第一距离阈值且小于或等于第二距离阈值,获取与该历史搜索指令对应的多个预存三维坐标,该多个预存三维坐标与该历史检测范围的中心点之间的距离小于或等于第三距离阈值,该第三距离阈值大于该第二距离阈值;基于该多个预存三维坐标,执行获取多个编码值并查询目标三维坐标的操作。
在一种可能实施方式中,基于图15的装置组成,该装置还包括:
确定获取模块,用于响应于该目标距离大于该第二距离阈值,基于该数据搜索方法查询得到该至少一个目标三维坐标;基于该目标检测范围,确定预存检测范围,该预存检测范围的中心点与该目标检测范围的中心点重合,且该目标检测范围的尺寸大于该第三距离阈值;获取位于该预存检测范围内的多个预存三维坐标。
在一种可能实施方式中,该第一获取模块1501用于:
对该多个三维坐标进行莫顿编码,将编码得到的多个莫顿码确定为该多个编码值。
在一种可能实施方式中,基于图15的装置组成,该装置还包括:
第二确定模块,用于基于该坐标搜索指令中携带的坐标类型,确定该虚拟场景中与该坐标类型对应的该多个三维坐标。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据搜索装置在搜索数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据搜索装置与数据搜索方法实施例属于同一构思,其具体实现过程详见数据搜索方法实施例,这里不再赘述。
图16是本申请实施例提供的一种电子设备的结构示意图。请参考图16,以电子设备为终端1600为例进行说明,可选地,该终端1600的设备类型包括:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1600包括有:处理器1601和存储器1602。
可选地,处理器1601包括一个或多个处理核心,比如4核心处理器、8核心处理器等。可选地,处理器1601采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable LogicArray,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器1601包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1601集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1601还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器1602包括一个或多个计算机可读存储介质,可选地,该计算机可读存储介质是非暂态的。可选地,存储器1602还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1602中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1601所执行以实现本申请中各个实施例提供的数据搜索方法。
在一些实施例中,终端1600还可选包括有:外围设备接口1603和至少一个外围设备。处理器1601、存储器1602和外围设备接口1603之间能够通过总线或信号线相连。各个外围设备能够通过总线、信号线或电路板与外围设备接口1603相连。具体地,外围设备包括:射频电路1604、显示屏1605、摄像头组件1606、音频电路1607、定位组件1608和电源1609中的至少一种。
外围设备接口1603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1601和存储器1602。在一些实施例中,处理器1601、存储器1602和外围设备接口1603被集成在同一芯片或电路板上;在一些其他实施例中,处理器1601、存储器1602和外围设备接口1603中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。可选地,射频电路1604通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1604还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1605用于显示UI(User Interface,用户界面)。可选地,该UI包括图形、文本、图标、视频及其它们的任意组合。当显示屏1605是触摸显示屏时,显示屏1605还具有采集在显示屏1605的表面或表面上方的触摸信号的能力。该触摸信号能够作为控制信号输入至处理器1601进行处理。可选地,显示屏1605还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1605为一个,设置终端1600的前面板;在另一些实施例中,显示屏1605为至少两个,分别设置在终端1600的不同表面或呈折叠设计;在再一些实施例中,显示屏1605是柔性显示屏,设置在终端1600的弯曲表面上或折叠面上。甚至,可选地,显示屏1605设置成非矩形的不规则图形,也即异形屏。可选地,显示屏1605采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1606用于采集图像或视频。可选地,摄像头组件1606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1606还包括闪光灯。可选地,闪光灯是单色温闪光灯,或者是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路1607包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1601进行处理,或者输入至射频电路1604以实现语音通信。出于立体声采集或降噪的目的,麦克风为多个,分别设置在终端1600的不同部位。可选地,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1601或射频电路1604的电信号转换为声波。可选地,扬声器是传统的薄膜扬声器,或者是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1607还包括耳机插孔。
定位组件1608用于定位终端1600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。可选地,定位组件1608是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1609用于为终端1600中的各个组件进行供电。可选地,电源1609是交流电、直流电、一次性电池或可充电电池。当电源1609包括可充电电池时,该可充电电池支持有线充电或无线充电。该可充电电池还用于支持快充技术。
在一些实施例中,终端1600还包括有一个或多个传感器1610。该一个或多个传感器1610包括但不限于:加速度传感器1611、陀螺仪传感器1612、压力传感器1613、指纹传感器1614、光学传感器1615以及接近传感器1616。
在一些实施例中,加速度传感器1611检测以终端1600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1611用于检测重力加速度在三个坐标轴上的分量。可选地,处理器1601根据加速度传感器1611采集的重力加速度信号,控制显示屏1605以横向视图或纵向视图进行用户界面的显示。加速度传感器1611还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器1612检测终端1600的机体方向及转动角度,陀螺仪传感器1612与加速度传感器1611协同采集用户对终端1600的3D动作。处理器1601根据陀螺仪传感器1612采集的数据,实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
可选地,压力传感器1613设置在终端1600的侧边框和/或显示屏1605的下层。当压力传感器1613设置在终端1600的侧边框时,能够检测用户对终端1600的握持信号,由处理器1601根据压力传感器1613采集的握持信号进行左右手识别或快捷操作。当压力传感器1613设置在显示屏1605的下层时,由处理器1601根据用户对显示屏1605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1614用于采集用户的指纹,由处理器1601根据指纹传感器1614采集到的指纹识别用户的身份,或者,由指纹传感器1614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。可选地,指纹传感器1614被设置终端1600的正面、背面或侧面。当终端1600上设置有物理按键或厂商Logo时,指纹传感器1614能够与物理按键或厂商Logo集成在一起。
光学传感器1615用于采集环境光强度。在一个实施例中,处理器1601根据光学传感器1615采集的环境光强度,控制显示屏1605的显示亮度。具体地,当环境光强度较高时,调高显示屏1605的显示亮度;当环境光强度较低时,调低显示屏1605的显示亮度。在另一个实施例中,处理器1601还根据光学传感器1615采集的环境光强度,动态调整摄像头组件1606的拍摄参数。
接近传感器1616,也称距离传感器,通常设置在终端1600的前面板。接近传感器1616用于采集用户与终端1600的正面之间的距离。在一个实施例中,当接近传感器1616检测到用户与终端1600的正面之间的距离逐渐变小时,由处理器1601控制显示屏1605从亮屏状态切换为息屏状态;当接近传感器1616检测到用户与终端1600的正面之间的距离逐渐变大时,由处理器1601控制显示屏1605从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图16中示出的结构并不构成对终端1600的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图17是本申请实施例提供的一种电子设备的结构示意图,该电子设备1700可因配置或性能不同而产生比较大的差异,该电子设备1700包括一个或一个以上处理器(CentralProcessing Units,CPU)1701和一个或一个以上的存储器1702,其中,该存储器1702中存储有至少一条计算机程序,该至少一条计算机程序由该一个或一个以上处理器1701加载并执行以实现上述各个实施例提供的数据搜索方法。可选地,该电子设备1700还具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该电子设备1700还包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条计算机程序的存储器,上述至少一条计算机程序可由终端中的处理器执行以完成上述各个实施例中数据搜索方法。例如,该计算机可读存储介质包括ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,包括一条或多条程序代码,该一条或多条程序代码存储在计算机可读存储介质中。电子设备的一个或多个处理器能够从计算机可读存储介质中读取该一条或多条程序代码,该一个或多个处理器执行该一条或多条程序代码,使得电子设备能够执行以完成上述实施例中数据搜索方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种数据搜索方法,其特征在于,所述方法包括:
响应于坐标搜索指令,获取虚拟场景中多个三维坐标所对应的多个编码值,所述多个编码值用于基于一维的编码数值来表示所述虚拟场景中三维的空间坐标;
基于所述虚拟场景中的被控虚拟对象所在的目标检测范围,获取所述目标检测范围所对应的最小编码值和最大编码值;
基于所述最小编码值和所述最大编码值,从所述多个编码值中查询得到符合目标条件的至少一个目标编码值,所述目标条件为大于或等于所述最小编码值且小于或等于所述最大编码值;
基于所述至少一个目标编码值,获取位于所述目标检测范围内的至少一个目标三维坐标。
2.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个目标编码值,获取位于所述目标检测范围内的至少一个目标三维坐标包括:
对所述至少一个目标编码值进行解码,得到所述至少一个目标编码值所对应的至少一个候选三维坐标;
基于所述目标检测范围,确定所述被控虚拟对象所在的球形检测范围,所述球形检测范围小于或等于所述目标检测范围;
从所述至少一个候选三维坐标中,筛选得到位于所述球形检测范围内的所述至少一个目标三维坐标。
3.根据权利要求1所述的方法,其特征在于,所述基于所述最小编码值和所述最大编码值,从所述多个编码值中查询得到符合目标条件的至少一个目标编码值包括:
按照从小到大的顺序对所述多个编码值进行排序,得到排序后的所述多个编码值;
基于排序后的所述多个编码值,确定大于或等于所述最小编码值且与所述最小编码值距离最近的第一编码值,以及小于或等于所述最大编码值且与所述最大编码值距离最近的第二编码值;
将所述第一编码值、所述第二编码值以及所述第一编码值与所述第二编码值之间的编码值确定为所述至少一个目标编码值。
4.根据权利要求3所述的方法,其特征在于,所述基于排序后的所述多个编码值,确定大于或等于所述最小编码值且与所述最小编码值距离最近的第一编码值,以及小于或等于所述最大编码值且与所述最大编码值距离最近的第二编码值包括:
将排序后的所述多个编码值存储至有序数组中,在所述有序数组中查询得到所述第一编码值和所述第二编码值;或,
根据二叉查找树,从排序后的所述多个编码值中查询得到所述第一编码值和所述第二编码值;或,
根据分块动态树,从排序后的所述多个编码值中查询得到所述第一编码值和所述第二编码值。
5.根据权利要求1所述的方法,其特征在于,所述基于所述最小编码值和所述最大编码值,从所述多个编码值中查询得到符合目标条件的至少一个目标编码值包括:
基于第一比率对所述最小编码值进行缩小,得到缩小后的最小编码值,所述第一比率大于0且小于1;
基于第二比率对所述最大编码值进行扩大,得到扩大后的最大编码值,所述第二比率大于1;
基于所述缩小后的最小编码值和所述扩大后的最大编码值,执行查询得到至少一个目标编码值的操作。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述坐标搜索指令,确定所述目标检测范围与历史检测范围之间的目标距离,所述历史检测范围为所述被控虚拟对象在触发历史搜索指令时所在的检测范围;
响应于所述目标距离小于或等于第一距离阈值,将基于所述历史搜索指令查询得到的目标三维坐标确定为本次查询得到的目标三维坐标。
7.根据权利要求6所述的方法,其特征在于,所述确定所述目标检测范围与历史检测范围之间的目标距离之后,所述方法还包括:
响应于所述目标距离大于所述第一距离阈值且小于或等于第二距离阈值,获取与所述历史搜索指令对应的多个预存三维坐标,所述多个预存三维坐标与所述历史检测范围的中心点之间的距离小于或等于第三距离阈值,所述第三距离阈值大于所述第二距离阈值;
基于所述多个预存三维坐标,执行获取多个编码值并查询目标三维坐标的操作。
8.根据权利要求7所述的方法,其特征在于,所述确定所述目标检测范围与历史检测范围之间的目标距离之后,所述方法还包括:
响应于所述目标距离大于所述第二距离阈值,基于所述数据搜索方法查询得到所述至少一个目标三维坐标;
基于所述目标检测范围,确定预存检测范围,所述预存检测范围的中心点与所述目标检测范围的中心点重合,且所述目标检测范围的尺寸大于所述第三距离阈值;
获取位于所述预存检测范围内的多个预存三维坐标。
9.根据权利要求1所述的方法,其特征在于,所述获取虚拟场景中多个三维坐标所对应的多个编码值包括:
对所述多个三维坐标进行莫顿编码,将编码得到的多个莫顿码确定为所述多个编码值。
10.根据权利要求1所述的方法,其特征在于,所述响应于坐标搜索指令,获取虚拟场景中多个三维坐标所对应的多个编码值之前,所述方法还包括:
基于所述坐标搜索指令中携带的坐标类型,确定所述虚拟场景中与所述坐标类型对应的所述多个三维坐标。
11.一种数据搜索装置,其特征在于,所述装置包括:
第一获取模块,用于响应于坐标搜索指令,获取虚拟场景中多个三维坐标所对应的多个编码值,所述多个编码值用于基于一维的编码数值来表示所述虚拟场景中三维的空间坐标;
第二获取模块,用于基于所述虚拟场景中的被控虚拟对象所在的目标检测范围,获取所述目标检测范围所对应的最小编码值和最大编码值;
查询模块,用于基于所述最小编码值和所述最大编码值,从所述多个编码值中查询得到符合目标条件的至少一个目标编码值,所述目标条件为大于或等于所述最小编码值且小于或等于所述最大编码值;
第三获取模块,用于基于所述至少一个目标编码值,获取位于所述目标检测范围内的至少一个目标三维坐标。
12.根据权利要求11所述的装置,其特征在于,所述第三获取模块用于:
对所述至少一个目标编码值进行解码,得到所述至少一个目标编码值所对应的至少一个候选三维坐标;
基于所述目标检测范围,确定所述被控虚拟对象所在的球形检测范围,所述球形检测范围小于或等于所述目标检测范围;
从所述至少一个候选三维坐标中,筛选得到位于所述球形检测范围内的所述至少一个目标三维坐标。
13.根据权利要求11所述的装置,其特征在于,所述查询模块包括:
排序单元,用于按照从小到大的顺序对所述多个编码值进行排序,得到排序后的所述多个编码值;
第一确定单元,用于基于排序后的所述多个编码值,确定大于或等于所述最小编码值且与所述最小编码值距离最近的第一编码值,以及小于或等于所述最大编码值且与所述最大编码值距离最近的第二编码值;
第二确定单元,用于将所述第一编码值、所述第二编码值以及所述第一编码值与所述第二编码值之间的编码值确定为所述至少一个目标编码值。
14.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求10任一项所述的数据搜索方法。
15.一种存储介质,其特征在于,所述存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如权利要求1至权利要求10任一项所述的数据搜索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110039923.8A CN112699223B (zh) | 2021-01-13 | 2021-01-13 | 数据搜索方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110039923.8A CN112699223B (zh) | 2021-01-13 | 2021-01-13 | 数据搜索方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112699223A true CN112699223A (zh) | 2021-04-23 |
CN112699223B CN112699223B (zh) | 2023-09-01 |
Family
ID=75514266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110039923.8A Active CN112699223B (zh) | 2021-01-13 | 2021-01-13 | 数据搜索方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699223B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113689512A (zh) * | 2021-08-23 | 2021-11-23 | 北京搜狗科技发展有限公司 | 一种要素点编码的方法及相关装置 |
CN114241305A (zh) * | 2021-12-07 | 2022-03-25 | 中原动力智能机器人有限公司 | 目标检测模型的更新方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012002683A (ja) * | 2010-06-17 | 2012-01-05 | Fuji Electric Co Ltd | ステレオ画像処理方法およびステレオ画像処理装置 |
CN108595608A (zh) * | 2018-04-20 | 2018-09-28 | 南京邮电大学 | 一种面向路网通信场景的邻近对象索引查询方法 |
CN110866934A (zh) * | 2019-10-14 | 2020-03-06 | 中国科学院自动化研究所 | 基于规范性编码的复杂点云分割方法及系统 |
CN111026781A (zh) * | 2019-12-25 | 2020-04-17 | 北京达美盛软件股份有限公司 | 一种基于对象和空间位置的搜索查询工具 |
US20200175760A1 (en) * | 2017-08-23 | 2020-06-04 | Tencent Technology(Shenzhen) Company Limited | Information interaction method based on virtual space scene, computer equipment and computer-readable storage medium |
WO2020123469A1 (en) * | 2018-12-11 | 2020-06-18 | Futurewei Technologies, Inc. | Hierarchical tree attribute coding by median points in point cloud coding |
JP2020135530A (ja) * | 2019-02-21 | 2020-08-31 | 株式会社日立ソリューションズ | データ管理装置、データ検索方法及びプログラム |
CN111813840A (zh) * | 2020-05-29 | 2020-10-23 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、设备及存储介质 |
CN111989713A (zh) * | 2018-04-10 | 2020-11-24 | 松下电器(美国)知识产权公司 | 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置 |
-
2021
- 2021-01-13 CN CN202110039923.8A patent/CN112699223B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012002683A (ja) * | 2010-06-17 | 2012-01-05 | Fuji Electric Co Ltd | ステレオ画像処理方法およびステレオ画像処理装置 |
US20200175760A1 (en) * | 2017-08-23 | 2020-06-04 | Tencent Technology(Shenzhen) Company Limited | Information interaction method based on virtual space scene, computer equipment and computer-readable storage medium |
CN111989713A (zh) * | 2018-04-10 | 2020-11-24 | 松下电器(美国)知识产权公司 | 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置 |
CN108595608A (zh) * | 2018-04-20 | 2018-09-28 | 南京邮电大学 | 一种面向路网通信场景的邻近对象索引查询方法 |
WO2020123469A1 (en) * | 2018-12-11 | 2020-06-18 | Futurewei Technologies, Inc. | Hierarchical tree attribute coding by median points in point cloud coding |
JP2020135530A (ja) * | 2019-02-21 | 2020-08-31 | 株式会社日立ソリューションズ | データ管理装置、データ検索方法及びプログラム |
CN110866934A (zh) * | 2019-10-14 | 2020-03-06 | 中国科学院自动化研究所 | 基于规范性编码的复杂点云分割方法及系统 |
CN111026781A (zh) * | 2019-12-25 | 2020-04-17 | 北京达美盛软件股份有限公司 | 一种基于对象和空间位置的搜索查询工具 |
CN111813840A (zh) * | 2020-05-29 | 2020-10-23 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
眼里有星河: "关于莫顿编码计算过程", pages 2, Retrieved from the Internet <URL:https://blog.csdn.net/weixin_44312010/article/details/102517261> * |
赵尔平;刘炜;党红恩;: "海量3D点云数据压缩与空间索引技术", 计算机应用, no. 01 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113689512A (zh) * | 2021-08-23 | 2021-11-23 | 北京搜狗科技发展有限公司 | 一种要素点编码的方法及相关装置 |
CN114241305A (zh) * | 2021-12-07 | 2022-03-25 | 中原动力智能机器人有限公司 | 目标检测模型的更新方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112699223B (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111013142B (zh) | 互动效果显示方法、装置、计算机设备及存储介质 | |
US8784214B2 (en) | Method and system for establishing location-based leaderboard | |
CN111589128A (zh) | 基于虚拟场景的操作控件显示方法及装置 | |
CN111603771B (zh) | 动画生成方法、装置、设备及介质 | |
CN111325822B (zh) | 热点图的显示方法、装置、设备及可读存储介质 | |
CN113398572B (zh) | 虚拟道具切换方法、技能切换方法、虚拟对象切换方法 | |
US20220054939A1 (en) | Method and apparatus for displaying virtual scene, terminal, and storage medium | |
CN112699223B (zh) | 数据搜索方法、装置、电子设备及存储介质 | |
CN112245926A (zh) | 虚拟地形的渲染方法、装置、设备及介质 | |
CN112957732A (zh) | 搜索方法、装置、终端及存储介质 | |
US20240257298A1 (en) | Updating display of game map | |
CN110833695B (zh) | 基于虚拟场景的业务处理方法、装置、设备及存储介质 | |
JP7483056B2 (ja) | 選択ターゲットの決定方法、装置、機器、及びコンピュータプログラム | |
CN112699208B (zh) | 地图寻路方法、装置、设备及介质 | |
CN112755517B (zh) | 虚拟对象控制方法、装置、终端及存储介质 | |
CN117180754A (zh) | 虚拟物品的碰撞体积的设置方法、装置、设备及存储介质 | |
CN117173285A (zh) | 图像生成方法、装置、设备及存储介质 | |
CN114042315B (zh) | 基于虚拟场景的图形显示方法、装置、设备以及介质 | |
CN112950753A (zh) | 虚拟植物显示方法、装置、设备及存储介质 | |
CN112717393B (zh) | 虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 | |
CN113018865B (zh) | 攀爬线生成方法、装置、计算机设备及存储介质 | |
CN112619131A (zh) | 虚拟道具的状态切换方法、装置、设备及可读存储介质 | |
WO2024216939A1 (zh) | 虚拟地图的渲染方法、装置、计算机设备及存储介质 | |
CN117771661A (zh) | 一种场景对象的遮挡裁剪方法、装置、终端及存储介质 | |
CN112316419B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40041988 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |