CN113893535A - 用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质 - Google Patents
用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113893535A CN113893535A CN202111203126.5A CN202111203126A CN113893535A CN 113893535 A CN113893535 A CN 113893535A CN 202111203126 A CN202111203126 A CN 202111203126A CN 113893535 A CN113893535 A CN 113893535A
- Authority
- CN
- China
- Prior art keywords
- voxel
- height
- data
- point
- layer
- 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.)
- Withdrawn
Links
Images
Classifications
-
- 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/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Abstract
本发明提供了一种用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质,将像素数据转化为体素数据,从而与GPU运算高度契合,由体素数据设计了层数据和连接数据,通过层数据和连接数据使得并行计算的速度更快,从而相对于既有的CPU运算模式,以GPU为基础的数据运算方案性能要高2到3个数量级,使得AI算法更加精细、拟人度更高;在动态更新过程中,由于并行计算速度快,由此能实现对游戏全局超大地图的数据进行快速更新;通过将整套数据分为占存较大的静态数据和占存较小的动态数据,从而可以使得整个游戏过程中所占用的显存空间较小,每次刷新动态数据所用的时间也极短,游戏更加流畅。
Description
技术领域
本发明涉及游戏数据处理技术领域,尤其涉及一种用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质。
背景技术
目前,为实现数据运算需求的并行化,创建相关新的数据结构,并实时快速的动态更新,为各种相关算法服务。而这些新的数据结构的创建、更新、修改,往往也需要适应于大规模并行加速。
游戏场景是电子游戏中一虚拟空间内所有场景元素的集合,包括地图地貌、建筑物、游戏角色、装备道具等内容。游戏用户所看到的游戏场景的界面往往以像素场景的方式展现,即按照像素的数据格式将游戏场景的内容展示在显示屏上。在多人竞技游戏中,需要对角色在游戏场景中的行为动作进行检测判断,以及游戏目标对象检测、路径导航等功能,涉及大量的数据运算。特别是游戏对象在某些场景中移动时,需要判断场景的三维空间是否允许游戏对象通过,围绕三维空间数据执行大量的运算。
现有的技术手段中,上述计算任务中的逻辑判断及渲染前的图像数据预处理使用CPU进行,对于高实时性的竞技游戏来说,计算效率较低,无法满足业务需求。
发明内容
为了克服上述技术缺陷,本发明的目的在于提供一种用于构建运算效率更高的基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质。
本发明公开了一种用于构建基于体素数据的三维空间的方法,包括如下步骤:在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点(x,y,z′);以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点(x,y,z);在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度大于等于第一预设高度,则定义该连续空心点段为一个体素层;计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据,使得操作对象在两个所述体素层之间通行;所述体素点、所述体素层、所述连接数据构成所述三维空间。
优选的,若所述重叠部分的高度小于所述第一预设高度,则确定所述连接数据为不可通行连接数据,表示所述操作对象无法在两个所述体素层之间通行;若所述重叠部分的高度大于或等于所述第一预设高度,则确定所述连接数据为可通行连接数据,表示所述操作对象能够在两个所述体素层之间通行。
优选的,所述第一预设高度大于或等于所述操作对象的高度,两个所述体素层包括第一体素层和第二体素层,所述第一体素层的最低的元素点的高度为n,所述第二体素层的最低的元素点的高度为f,其中:若所述重叠部分的高度大于或等于所述第一预设高度,且f-n≤第二预设高度,则确定所述可通行连接数据为第一可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式包括第一通行方式和第二通行方式;若所述重叠部分的高度大于或等于所述第一预设高度,且所述第二预设高度<f-n≤第三预设高度,则确定所述可通行连接数据为第二可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式包括第三通行方式。
优选的,其中:若所述重叠部分的高度大于或等于所述第一预设高度,且所述第三预设高度<f-n≤第四预设高度,则确定所述可通行连接数据为第三可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式包括第四通行方式。
优选的,其中:所述第一可通行连接数据表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式还包括第五通行方式。
优选的,所述操作对象具有第一姿态和第二姿态,所述第一姿态的姿态高度大于所述第二姿态的姿态高度,所述操作对象还具有第一行动方式和第二行动方式,所述第一预设高度大于或等于所述操作对象的所述第二姿态的姿态高度,两个所述体素层包括第一体素层和第二体素层,所述第一体素层的最低的元素点的高度为n,所述第二体素层的最低的元素点的高度为f,其中:若所述重叠部分的高度≥所述第一姿态的姿态高度,且f-n≤第二预设高度,则确定所述可通行连接数据为第四可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第一姿态和所述第二姿态,所述操作对象的行动方式包括所述第一行动方式;若所述第一姿态的姿态高度>所述重叠部分的高度≥所述第二姿态的姿态高度,且f-n≤所述第二预设高度,则确定所述可通行连接数据为第五可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第二姿态,所述操作对象的行动方式包括所述第一行动方式;若所述重叠部分的高度≥所述第一姿态的姿态高度,且所述第二预设高度<f-n≤第三预设高度,则确定所述可通行连接数据为第六可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第一姿态,所述操作对象的行动方式包括所述第二行动方式。
优选的,其中,若所述第一姿态的姿态高度>所述重叠部分的高度≥所述第二姿态的姿态高度,且所述第二预设高度<f-n≤所述第三预设高度,则确定所述可通行连接数据为第七可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第二姿态,所述操作对象的行动方式包括所述第二行动方式。
优选的,所述操作对象还具有第三行动方式,其中:若所述重叠部分的高度≥所述第一姿态的姿态高度,且所述第三预设高度<f-n≤第四预设高度,则确定所述可通行连接数据为第八可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第一姿态,所述操作对象的行动方式包括所述第三行动方式。
优选的,所述操作对象还具有第三姿态,所述第三姿态的姿态高度小于所述第二姿态的姿态高度,所述第一预设高度大于或等于所述操作对象的所述第三姿态的姿态高度,其中:所述第四可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态还包括所述第三姿态;所述第五可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态还包括所述第三姿态;若所述第二姿态的姿态高度>所述重叠部分的高度≥所述第三姿态的姿态高度,且f-n≤所述第二预设高度,则确定所述可通行连接数据为第九可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第三姿态,所述操作对象的行动方式包括所述第一行动方式。优选的,所述三维空间应用于游戏场景,所述游戏场景包括若干种不同数据类型的场景元素,分别导出若干种所述场景元素的原始数据;设定期望的单元体素的边长,结合所述单元体素的边长,分别将若干种所述场景元素的原始数据转换为体素数据,所述体素数据在所述游戏场景中表现为体素模块;根据所有所述场景元素的体素模块在所述像素场景中的相对位置,拼接所有所述场景元素的体素模块,获得应用于所述游戏场景的所述基于体素数据的三维空间。
优选的,所述游戏场景包括动态对象,获取所有动态对象的类型、和不同类型的动态对象的轮廓点相对于该动态对象的中心点的偏移坐标;根据刷新后的动态对象的中心点坐标、和所述轮廓点的偏移坐标计算获取刷新后的所述轮廓点的更新坐标;在动态对象刷新后的所有轮廓点的更新位置进行写入,并擦除动态对象刷新前的所有轮廓点的原始位置,完成动态对象的动态刷新。
优选的,所述游戏场景还包括静态对象;游戏过程中,重复使用一套所述静态对象构成的静态数据,并不断进行动态对象的所述动态刷新,且每次动态刷新都丢弃刷新前的所述动态对象构成的动态数据。
优选的,所述游戏场景的所述场景元素包括地形、植被、建筑和室外摆件;所述分别导出若干种所述场景元素的原始数据包括:导出室外摆件与建筑的3D模型文件格式数据和坐标信息;导出植被的逗号分隔值文件格式数据;通过深度相机正交拍摄以导出地形的图片,该图片中包含地形的表面高度数据;所述设定期望的单元体素的边长,结合所述单元体素的边长,分别将若干种所述场景元素的数据转换为体素数据包括:通过开源库中的“读写三角网格”功能和“从三角网格创建”功能将室外摆件与建筑的所述3D模型文件格式数据转换为体素数据;获取植被的碰撞体大小,结合所述单元体素的边长,计算获取该植被在所述体素场景中需要占用的体素个数及体素形状;根据存储有地形的所述表面高度数据的所述图片,按照单元体素的边长逐点采样以将地形的所述表面高度数据转换为体素数据。
本发明还提供了一种用于构建基于体素数据的三维空间的系统,包括点捕捉模块、对照索引模块、体素层数据构建模块和连接数据构建模块;所述点捕捉模块在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点(x,y,z′);所述点捕捉模块以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点(x,y,z);所述对照索引模块在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;所述体素层数据构建模块收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度或大于等于第一预设高度,则定义该连续空心点段为一个体素层;所述连接数据构建模块计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据、使得操作对象在两个所述体素层之间通行;所述体素点、所述体素层、所述连接数据构成所述三维空间。
本发明还提供了一种用于构建基于体素数据的三维空间的服务器,包括点捕捉模块、对照索引模块、体素层数据构建模块和连接数据构建模块;所述点捕捉模块在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点(x,y,z′);所述点捕捉模块以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点(x,y,z);所述对照索引模块在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;所述体素层数据构建模块收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度大于或等于第一预设高度,则定义该连续空心点段为一个体素层;所述连接数据构建模块计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据、使得操作对象在两个所述体素层之间通行;所述体素点、所述体素层、所述连接数据构成所述三维空间。
本发明还提供了一种计算机可读存储介质,存储用于构建基于体素数据的三维空间的指令,所述指令在被执行时实施以下步骤:在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点(x,y,z′);以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点(x,y,z);在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度大于或等于第一预设高度,则定义该连续空心点段为一个体素层;计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据、使得操作对象在两个所述体素层之间通行;所述体素点、所述体素层、所述连接数据构成所述三维空间。
采用了上述技术方案后,与现有技术相比,具有以下有益效果:
1.对于空间数据的计算,将空间数据转化为体素数据,从而与GPU运算高度契合,由体素数据设计了层数据和连接数据,通过层数据和连接数据使得并行计算的速度更快;相对于既有的CPU运算模式,以GPU为基础的数据运算方案性能要高2到3个数量级,使得AI算法更加精细、拟人度更高;
2.在动态更新过程中,由于并行计算速度快,由此能实现对游戏全局超大地图的数据进行快速更新;
3.通过将整套数据分为占存较大的静态数据和占存较小的动态数据,在游戏过程中复用一套静态数据、复用多套较小的动态数据并在每次刷新时丢弃上套动态数据,从而可以使得整个游戏过程中所占用的显存空间较小,每次刷新动态数据所用的时间也极短,游戏更加流畅。
附图说明
图1为本发明提供的用于构建基于体素数据的三维空间的方法流程图;
图2为本发明提供的将像素场景转换为体素场景的方法流程图;
图3为现有技术的像素场景;
图4为本发明提供的将图3的像素场景转换成的体素场景;
图5为本发明提供的一根所述基础柱的体素层数据的构建的一实施例的示意图。
具体实施方式
以下结合附图与具体实施例进一步阐述本发明的优点。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
参见附图1,本发明公开了一种用于构建基于体素数据的三维空间的方法,包括如下步骤:
S100、在x,y,z三维空间中,取z=z′的一基础平面,基础平面上存在若干个基础点(x,y,z′);以基础点为底点,以z坐标为高度,形成若干根基础柱,每根基础柱上都存在L个元素点(x,y,z);
S200、在GPU中并行地访问基础柱,并在每个并行的线程中遍历基础柱上的每个元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;
S300、收集每根基础柱上的连续空心点段100,若连续空心点段100的高度大于或等于第一预设高度,则定义该连续空心点段100为一个体素层;
S400、计算获取每根基础柱上的每个体素层与相邻基础柱上的每个体素层之间的位置关系,若两个体素层之间在高度方向上存在重叠部分,则认为两个体素层之间存在连接数据,使得操作对象在两个体素层之间通行;
S500、体素点、体素层、连接数据构成三维空间。
三维空间内的操作对象可以在体素层内停留,连接数据表示操作对象能够在两个体素层之间通行,根据连接数据可以确定操作对象在两个体素层之间的通行方式、或操作对象通行的姿态以及行动方式,从而使得操作对象在体素层之间通行。
索引可以理解为查找,在检测判断体素点是否为实心点时,首先需要“到达”这个体素点,索引即是“到达”这一步骤。可以理解为计算机处理过程中的专有步骤。
体素是体积元素的简称,包含体素的立体可以通过立体渲染或者提取给定阈值轮廓的多边形等值面表现出来。体素是数字数据于三维空间分割上的最小单位,本发明所提及的单元体素可以理解为单个体素。体素用于三维成像、科学数据与医学影像等领域。概念上类似二维空间的最小单位:像素,像素用在二维计算机图像的影像数据上。有些真正的三维显示器运用体素来描述它们的分辨率,例如:可以显示512×512×512体素的显示器。
在三维成像技术领域,通常采用以CPU为主的运算模式,即在CPU上进行各类逻辑任务运算及数据预处理,而GPU上更适合并发类的数据运算,如图像渲染。现有的空间数据结构与GPU的结合效果并不理想,故现有的空间数据结构无法体现GPU的高并发运算性能,本发明将用于三维成像的空间数据转化为体素数据,从而与GPU高并发运算特性高度契合,进行各类运算,相对于既有的CPU运算模式,以GPU为基础的数据运算方案性能要高2到3个数量级。从而使用体素数据进行高性能空间数据运算,用以感知环境,运算效率高。
具体的,参见附图2,本发明还提供一种用于将像素场景转换为体素场景的具体实施例:
S600,分别导出像素场景包括的若干种不同数据类型的场景元素的原始数据;
S700、设定期望的单元体素的边长,结合单元体素的边长,分别将若干种场景元素的原始数据转换为体素数据,体素数据在像素场景中表现为体素模块;
S800、根据所有场景元素的体素模块在像素场景中的相对位置,拼接所有场景元素的体素模块,获得体素场景。
体素场景为由单元体素组成的三维空间,在该三维空间内,各个空间元素通过单元体素进行体现。
在本实施例中,像素场景为UE4游戏引擎建立的游戏世界,该游戏为电子游戏,可运行于手机、平板电脑、计算机等设备上。参见附图3,在该游戏世界中,场景元素包括地形、植被、建筑和室外摆件等。地形如土坡、山丘,河流等;植被如树木、花草、灌木等;建筑如房屋、仓库等;室外摆件如油罐、平台等。附图3中的所有场景都是以像素的形式展现的,每个元素由一个个像素块组成。
而不同的场景元素在构建时所用到的数据类型是不同的。根据场景元素的类型及其特征,采用不同的方式从UE4游戏引擎中分别导出不同场景元素的原始数据。具体的:
室外摆件与建筑在UE4游戏引擎中属于包含StaticMesh的Actor类型,可直接导出OBJ文件,同步导出Actor的坐标信息;OBJ文件即为3D模型文件;
植被在UE4中不属于独立的Actor类型,故需要采取记录坐标和形状的方式,导出为CSV信息文件;CSV信息文件即为逗号分隔值文件;
地形在体素场景中只利用到了表面高度信息,本发明采取深度相机正交拍摄的方式则可以导出地形的图片数据。
由于场景元素的类型及其特征不同,故需要采取不同的转换方式以将不同场景元素的各类原始数据转换为在像素场景中表现为体素模块的体素数据,首先需要设定我们所期望的单元体素的边长,一个体素模块包括一个或若干个单元体素,结合单元体素的边长,分别将若干种场景元素的原始数据转换为体素数据,具体的:
对于OBJ文件,可以借助OPEN3D这一开源库中的“读写三角网格”(read_triangle_mesh)功能和“从三角网格创建”(create_from_triangle_mesh)功能直接将OBJ文件转换为体素模块;OPEN3D并不为本发明的限制的开源库,其他可以实现上述两功能的开源库也可以被用于进行数据转换;
对于植被,需要根据植被的碰撞体的大小,结合体素的边长,直接计算出它在体素场景中占用的体素模块的个数及形状;
地形在体素场景中只占一层,参见图4中的D区域,根据储存有高度信息的图片数据,按照单元体素的边长逐点采样以将其转换为体素数据。
至此已获取到建立体素场景的所有数据,最后需要拼接所有场景元素的体素模块,获得具有所有场景元素的体素场景。
体素场景在程序中表示为大量的三维坐标点,拼接体素模块的原理实际上是根据体素模块在游戏地图中的相对位置,把表示体素模块的坐标点信息,整合到同一个数据结构中,而UE4游戏引擎本身包含各个模块的位置信息和旋转信息,故在拼接时需要特别注意3D模型的欧拉角的旋转变换在不同体系中规则不一致的问题。
经过拼接获得图4所示的体素场景,在该体素场景中,使用三维张量完备的表达三维世界的空间信息,其采样精度决定了空间分辨率。体素数据格式规范、整齐,易于计算、特别是并行计算,故本发明将体素数据应用于GPU运算,可以实现高速的多路径并发运算,可以理解为,在GPU中,使用体素数据进行多条路径检测的时间与检测一条路径的时间相同,故可以极大缩短多条路径检测的时间。也就是说,可以利用GPU在三维空间中的多处坐标位置同时展开数据运算任务。
在其他实施例中,体素场景还可为其他应用场景,在该其他应用场景中,场景元素将不仅仅包括地形、植被、建筑和室外摆件,或区别于地形、植被、建筑和室外摆件的其他场景元素。而对应的,对该其他场景元素的数据导出及体素数据的转换将可能采用区别于本实施例的方法,此处并不限制。
参见附图1,步骤S100至S300为根据目标游戏场景区域的体素数据生成层数据以获取体素层的一实例。应用于游戏场景,操作对象为游戏角色,第一预设高度为体素层的最小高度,当操作对象的高度等于或小于第一预设高度,代表体素层的高度大于或等于游戏角色的高度,即,体素层的高度足以容纳游戏角色。
为了便于理解,我们将体素三维空间视为平面和平面上的柱子,则每个平面上的点,都有一根柱子与其对应。对于体素数据,柱子上存在空心的空间体素点和实心的空间体素点;对于层数据,柱子描述可供游戏角色通过的空间以及游戏角色的位置。
具体的:
1)在分辨率为i*w*h的XYZ三维体素空间中,取Z=0时的XY0平面,该平面的分辨率为i*w;
2)此时该平面上的每一个点(x,y,0)在三维空间中都可以视为一个基础点,以该基础点为底点形成在z方向上的高为h基础柱;
3)将XY0平面上所有的点的坐标放入一维数组A(长度为i*w)中,将数组A输入GPU;
4)在GPU中,对数组A中的每个点同时进行计算,即i*w个线程并发,在每个线程都执行如下过程:
a.针对XY0平面上的每个基础点(x,y,0),遍历以该基础点为底点的基础柱上的由z从0循环到最高点的每一个元素点;
b.通过体素场景中的坐标索引到体素数据中的该点,并检测其为实心点或是空心点;
c.记录连续的空心点,并判断其是否可以容纳一个游戏角色高度,若是,则将该连续空心点定义为一个体素层;
d.每个体素层都记录其最低的元素点的高度和最高的元素点的高度,用于表示体素层的位置以及空间大小;
e.以一维数组的形式记录该柱子上的所有体素层,由此获取整个三维空间的层数据。
图5为本发明提供的一根基础柱的体素层数据的构建的一实施例的示意图。在此,设定基础柱的底点为0,每个元素点的高度为1,并且设定第一预设高度为5,则当连续空心点段的高度大于5时定义该连续空心点段为一个体素层。图5左半部分示出了一基础柱实例,标记100代表连续空心点段,其中:体素层101的最低的元素点为7,最高的元素点为13,其高度为7;体素层102的最低的元素点为15,最高的元素点为20,其高度为6;体素层103的最低的元素点为25,最高的元素点为32,其高度为8。如图5右半部分所示,将一基础柱的所有体素层的最低的元素点和最高的元素点依次记录在一维数组中,由此获取层数据。图5所示的层数据仅为一实施例,本发明并不局限于此,例如,也可以在一维数组中依次记录体素层最低的元素点和该体素层的高度,以得到层数据。
对于图1中步骤S400的连接数据的构建,需要依据体素层之间的位置关系,即判断两体素层之间在高度方向上是否存在重叠部分,若存在重叠部分,则认为两体素层之间存在建立连接数据的可能性,该重叠部分则为游戏角色可以通行的区域。在此所描述的重叠部分包括交叉重叠和包含关系。
具体的:
1)在分辨率为i*w的平面上的每个点都存储一个体素层数据的一维数组;
2)将平面上所有的点及其存储的体素层数据放入数组B(数组元素个数为i*w,每个数组元素包含一个层数据数组),将数组B输入GPU;
3)在GPU中,对数组B中的每个点同时进行计算,即i*w个线程并发,在每个线程都执行如下过程:
a.对每个点,读取其体素层数据:
b.读取该点的四个邻点,并读取其体素层数据,将该点上的所有体素层都与其邻点的所有体素层之间进行连接数据的构建。
下面介绍两体素层之间连接数据的构建方法。
设两体素层为第一体素层和第二体素层,第一体素层的最低元素点的高度为n、最高元素点的高度为m,第二体素层的最低元素点的高度为f、最高元素点的高度为e,其中:若m≥e且e>n;或者若e≥m且m>f第一体素层和第二体素层在高度方向上存在重叠部分,则确定第一体素层与第二体素层之间存在连接数据,使得操作对象能够在第一体素层与第二体素层之间通行,即操作对象能够以至少一种通行方式在第一体素层与第二体素层之间通行,或者操作对象能够以至少一种姿态结合至少一种行动方式在第一体素层与第二体素层之间通行。
在m≥e且e>n的情况下,若f>n,则第一体素层包含第二体素层;若f<n,则第一体素层与第二体素层交叉重叠。
在e≥m且m>f的情况下,若f<n,则第二体素层包含第一体素层;若f>n,则第一体素层与第二体素层交叉重叠。
进一步,若第一体素层和第二体素层在高度方向上的重叠部分的高度小于第一预设高度,则确定所述连接数据为不可通行连接数据,表示所述操作对象无法在两个所述体素层之间通行。在本发明中,第一预设高度为体素层的最小高度,也可以理解为能够容纳操作对象的最小高度,当第一体素层和第二体素层在高度方向上的重叠部分的高度不足以容纳操作对象时,则意味着操作对象无法在第一体素层与第二体素层之间通行。若第一体素层和第二体素层在高度方向上的重叠部分的高度大于或等于第一预设高度,即第一体素层和第二体素层在高度方向上的重叠部分的高度能够容纳操作对象,则确定所述连接数据为可通行连接数据,表示所述操作对象能够在两个所述体素层之间通行。
根据本发明的一个实施例,将第一预设高度设定成大于或等于操作对象的高度。在此为了便于理解,以第一预设高度为操作对象的高度的情况对本实施例进行说明。
若重叠部分的高度大于或等于第一预设高度,且f-n≤第二预设高度,则确定可通行连接数据为第一可通行连接数据,表示操作对象从第一体素层通行至第二体素层的通行方式包括第一通行方式和第二通行方式。在本发明中,第二预设高度设定为操作对象行走时所能跨越的最大高度,例如,当操作对象在前进过程中遇到台阶时,若台阶的高度小于或等于第二预设高度,则操作对象可以直接走上台阶,若台阶的高度大于第二预设高度,则操作对象无法在该台阶上行走。需要说明的是,在本发明中“行走”可以进行广义的解释,既可以是通常字面意义的行走,也可以是奔跑,还可以是直立行走之外的其它姿态的行进方式,例如,蹲行、匍匐前进等。在此,第一通行方式是指直立行走,第二通行方式是指蹲行,另外,第一可通行连接数据还可以表示操作对象可以从第一体素层匍匐前进至第二体素层,即第五通行方式。此外,虽然用台阶进行了举例,上坡的情形也同样适用。
若重叠部分的高度大于或等于第一预设高度,且第二预设高度<f-n≤第三预设高度,则确定可通行连接数据为第二可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式包括第三通行方式。在本发明中,第三预设高度设定为操作对象跳跃时所能跨越的最大高度,例如,当操作对象在前进过程中遇到障碍物时,如果障碍物的高度小于或等于第三预设高度,则操作对象可以跳上(过)障碍物。在此,第三通行方式是指跳跃。
若重叠部分的高度大于或等于所述第一预设高度,且第三预设高度<f-n≤第四预设高度,则确定可通行连接数据为第三可通行连接数据,表示操作对象从第一体素层通行至第二体素层的通行方式包括第四通行方式。在本发明中,第四预设高度设定为操作对象使用道具时所能跨越的最大高度,例如,当操作对象在前进过程中遇到障碍物时,如果障碍物的高度小于或等于第四预设高度,则操作对象可以利用道具,例如喷射背包,从而通过喷射来翻上(过)障碍物。在此,第四通行方式是指喷射。需要说明的是,道具并不只限于喷射背包,还可以包括跳跃载具、机械战甲等,第四通行方式也可以是指利用以上的其它道具进行翻越的通行方式。
虽然在该实施例中仅说明了操作对象从第一体素层通行至第二体素层的情形,但可以容易地知道,该说明可以推广到从第二体素层通行至第一体素层以及任意相邻体素层之间的通行。
根据本发明的另一实施例,操作对象具有第一姿态和第二姿态,第一姿态的姿态高度大于第二姿态的姿态高度,操作对象还具有第一行动方式和第二行动方式,第一预设高度大于或等于操作对象的第二姿态的姿态高度。在此,第一姿态是指站立,第二姿态是指下蹲,第一行动方式是指行走,第二行动方式是指跳跃。操作对象在不同姿态下具有不同的高度,例如,游戏角色站立时的高度大于下蹲时的高度。在本实施例中,将第一预设高度设定为操作对象的最小的姿态高度,即降低了体素层的最小高度,从而使得操作对象在能够在更多的体素层之间通过更加灵活多样的方式通行。
若重叠部分的高度≥第一姿态的姿态高度,且f-n≤第二预设高度,则确定可通行连接数据为第四可通行连接数据,表示操作对象从第一体素层通行至第二体素层时,操作对象可以是站立姿态进行行走,也可以是下蹲姿态进行行走。
若第一姿态的姿态高度>重叠部分的高度≥第二姿态的姿态高度,且f-n≤第二预设高度,则确定可通行连接数据为第五可通行连接数据,表示操作对象从第一体素层通行至第二体素层时,由于重叠部分的高度无法容纳站立姿态的操作对象,所以操作对象可以下蹲姿态进行行走。
若重叠部分的高度≥第一姿态的姿态高度,且第二预设高度<f-n≤第三预设高度,则确定可通行连接数据为第六可通行连接数据,表示操作对象从第一体素层通行至第二体素层时,操作对象可以以站立姿态进行跳跃。此外,由于重叠部分的高度可以容纳站立姿态和下蹲姿态的操作对象,如果游戏设定成操作对象可以在下蹲姿态时进行跳跃,那么第六可通行连接数据也可以表示操作对象可以以下蹲姿态进行跳跃从第一体素层通行至第二体素层。
若第一姿态的姿态高度>重叠部分的高度≥第二姿态的姿态高度,且第二预设高度<f-n≤第三预设高度,则确定可通行连接数据为第七可通行连接数据,表示操作对象从第一体素层通行至第二体素层时,由于重叠部分的高度无法容纳站立姿态的操作对象,所以操作对象可以下蹲姿态进行跳跃。
操作对象还可以具有第三行动方式,第三行动方式可以为利用喷射背包进行喷射,或者利用跳跃载具、机械战甲等道具进行翻越。为便于理解,在此以喷射为例进行说明。若重叠部分的高度≥第一姿态的姿态高度,且第三预设高度<f-n≤第四预设高度,则确定可通行连接数据为第八可通行连接数据,表示操作对象从第一体素层通行至第二体素层时,操作对象可以站立姿态进行喷射。此外,由于重叠部分的高度可以容纳站立姿态和下蹲姿态的操作对象,如果游戏设定成操作对象可以在下蹲姿态时进行喷射,那么第八可通行连接数据也可以表示操作对象可以以下蹲姿态进行喷射从第一体素层通行至第二体素层。
操作对象还可以具有第三姿态,第三姿态是指匍匐姿态,第三姿态的姿态高度小于第二姿态的姿态高度,第一预设高度大于或等于操作对象的第三姿态的姿态高度,即在此将第一预射高度进一步降低设定成匍匐姿态的高度,从而使得体素场景中可以设定更多的体素层,其中:
第四可通行连接数据,还可以表示操作对象可以以匍匐姿态从第一体素层行走至第二体素层;
第五可通行连接数据,还可以表示操作对象可以以匍匐姿态从第一体素层行走至第二体素层;
若第二姿态的姿态高度>重叠部分的高度≥第三姿态的姿态高度,且f-n≤第二预设高度,则确定可通行连接数据为第九可通行连接数据,表示操作对象从第一体素层通行至第二体素层时,操作对象可以匍匐姿态进行行走。根据本实施例,由于将第一预设高度设定为操作对象的最小的姿态高度,所以可以在体素场景中设定更多的体素层,使得操作对象可以以更为灵活多变的方式在更多的高度不同的体素层之间通行,增加了游戏的乐趣。
虽然在本实施例中列举了操作对象可以具有站立、下蹲、匍匐三种姿态,以及行走、跳跃、喷射三种行动方式,但本发明并不限定于此,本领域技术人员可以容易地知道,游戏中可以设定更为灵活多样的姿态和行动方式,各种姿态可以具有不同的姿态高度,不同的行动方式可以具有不同的跨越能力,并设定不同的可通行连接数据对应不同的姿态和行动方式的组合表示在体素层间的各种通行方式,以上这些变化方式都在本发明的保护范围之内。
另外,以上实施例主要讨论了第二体素层的最低的元素点高于第一体素层的最低的元素点的情况,即操作对象从低处向高处行进需要跨越具有一定高度的障碍的情况,但容易理解的是当操作对象从高处向低处行进时,只要重叠部分的高度能够容纳操作对象,其可以以任意的通行方式或行动方式通行。
在体素数据世界中,1体现实心点,0体现空心点,一个物体在体素数据世界中的体现就是在若干特定位置的一系列的1。写入一个物体,即在体素数据世界中的若干特定位置写入1;擦除一个物体,即在体素数据世界中的若干特定位置写入0。
作为体素场景的一种应用,在游戏场景中,获取所有动态对象的类型、和不同类型的动态对象的轮廓点相对于该动态对象的中心点的偏移坐标;根据刷新后的动态对象的中心点坐标、和轮廓点的偏移坐标计算获取刷新后的轮廓点的更新坐标;在动态对象刷新后的所有轮廓点的更新位置进行写入,并擦除动态对象刷新前的所有轮廓点的原始位置,完成动态对象的动态刷新。
轮廓点坐标即组成对象的轮廓的坐标,对象的写入即在若干个轮廓点的位置写入1。
例如,一个空投物品在游戏中的中心点坐标为(10.10.30),该空投物品的其中一个轮廓点坐标为(0.20.50),则该轮廓点相对于中心点的偏移坐标则为(-10.10.20)。刷新该空投物品的中心点坐标为(10.10.25),则该轮廓点刷新后的坐标为(0.20.45)。在刷新后的轮廓点的位置(0.20.45)写入1,并在原来位置(0.20.50)写入0。组成空投物品的若干个轮廓点同时刷新,则实现了空投物品位置的刷新。
通过使用体素数据,即使是全局擦写,在GPU上并行实现,也可以在10微秒(0.01毫秒)级别高速完成世界的实时刷新。
动态对象可以是角游戏角色、载具(例如,车辆、坦克等)、空投物品等一切可能发生移动的对象。
游戏场景包括动态对象和静态对象,静态对象指游戏地图内的地形、河流、树木、不可破坏的建筑、不可移动的物体等不受游戏过程影响的物体的数据;动态对象指游戏角色、载具、空投物品等随游戏的进行其形态和位置会发生变化的物体的数据。
一台服务器上所运行的若干局游戏都是同一张地图,此时所有的游戏局共用一份静态数据。由于静态数据需要高速存取和实时处理,因此需要占用内存和显存,例如,在体素场景中,静态数据内的体素数据约2GB、层数据约2GB、连接数据约4GB,一共8GB,若不复用,则存储成本太高。
共用静态数据可以极大减少存储消耗,十局游戏共用后存储的占用为不共用的10%,多局游戏在使用静态资源时,直接从一块共享的内存和显存中读取即可。
除了静态数据的复用,还可以进行动态数据的分用,即不断进行动态对象的动态刷新过程,且每次动态刷新都丢弃刷新前的动态对象构成的动态数据。
具体一实施例,假设有十局游戏正在进行:
1)先读取第一局游戏的动态物体,按照前述的方法动态更新体素、层、连接数据到干净的静态数据中。此时得到第一局游戏所需的动态数据,即已经被写入动态数据的静态数据;
2)运行AI算法并得出第一局游戏的AI角色的决策,即游戏过程;
3)还原动态数据即擦除,得到原始干净的静态数据,供下一次刷新使用。
依次进行第二局到第十局的该过程。以上过程每秒进行若干次,保证外界观察起来所有局游戏的AI角色都正常行动。
对于占用空间来说,动态数据大小约在100MB级别,且运行完一局后数据可以被丢弃,即永远只有一份动态数据占用空间,使得所占空间很小。
对于占用时间来说,对一局游戏刷新所有动态数据的时间约为几十微秒,刷新十局游戏即几百微秒(不足1毫秒),对流畅性影响几乎不存在,故能得到拟人度十分高且十分流畅的AI环境。
本发明还提供了一种用于构建基于体素数据的三维空间的系统,包括:点捕捉模块、对照索引模块、体素层数据构建模块和连接数据构建模块。
点捕捉模块在x,y,z三维空间中,取z=z′的一基础平面,基础平面上存在若干个基础点(x,y,z′);点捕捉模块以基础点为底点,以z坐标为高度,形成若干根基础柱,每根基础柱上都存在L个元素点(x,y,z)。
对照索引模块并行地访问基础柱,并在每个并行的线程中遍历基础柱上的每个元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点。
体素层数据构建模块收集每根基础柱上的连续空心点段100,若连续空心点段100的高度大于或等于第一预设高度,则定义该连续空心点段100为一个体素层。
连接数据构建模计算获取每根基础柱上的每个体素层与相邻基础柱上的每个体素层之间的位置关系,若两个体素层之间在高度方向上存在重叠部分,则认为两个体素层之间存在连接数据,使得操作对象在两个体素层之间通行;体素点、体素层、连接数据构成三维空间。
本发明还提供了一种用于构建基于体素数据的三维空间的服务器,包括:点捕捉模块、对照索引模块、体素层数据构建模块和连接数据构建模块。
点捕捉模块在x,y,z三维空间中,取z=z′的一基础平面,基础平面上存在若干个基础点(x,y,z′);点捕捉模块以基础点为底点,以z坐标为高度,形成若干根基础柱,每根基础柱上都存在L个元素点(x,y,z)。
对照索引模块在GPU中并行地访问基础柱,并在每个并行的线程中遍历基础柱上的每个元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点。
体素层数据构建模块收集每根基础柱上的连续空心点段100,若连续空心点段100的高度大于或等于第一预设高度,则定义该连续空心点段100为一个体素层。
连接数据构建模计算获取每根基础柱上的每个体素层与相邻基础柱上的每个体素层之间的位置关系,若两个体素层之间在高度方向上存在重叠部分,则认为两个体素层之间存在连接数据,使得操作对象在两个体素层之间通行;体素点、体素层、连接数据构成三维空间。
本发明还提供了一种存储用于构建基于体素数据的三维空间的计算机可读存储介质,所述指令在被执行时实施以下步骤:在x,y,z三维空间中,取z=z′的一基础平面,基础平面上存在若干个基础点(x,y,z′);以基础点为底点,以z坐标为高度,形成若干根基础柱,每根基础柱上都存在L个元素点(x,y,z);
在GPU中并行地访问基础柱,并在每个并行的线程中遍历基础柱上的每个元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;
收集每根基础柱上的连续空心点段100,若连续空心点段100的高度大于等于第一预设高度,则定义该连续空心点段100为一个体素层;
计算获取每根基础柱上的每个体素层与相邻基础柱上的每个体素层之间的位置关系,若两个体素层之间在高度方向上存在重叠部分,则认为两个体素层之间存在连接数据,使得操作对象在两个体素层之间通行;体素点、体素层、连接数据构成三维空间。
应当注意的是,本发明的实施例有较佳的实施性,且并非对本发明作任何形式的限制,任何熟悉该领域的技术人员可能利用上述揭示的技术内容变更或修饰为等同的有效实施例,但凡未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何修改或等同变化及修饰,均仍属于本发明技术方案的范围内。
Claims (16)
1.一种用于构建基于体素数据的三维空间的方法,其特征在于,包括如下步骤:
在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点;以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点;
在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;
收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度大于或等于第一预设高度,则定义该连续空心点段为一个体素层;
计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据,使得操作对象在两个所述体素层之间通行;
所述体素点、所述体素层、所述连接数据构成所述三维空间。
2.根据权利要求1所述的方法,其特征在于,若所述重叠部分的高度小于所述第一预设高度,则确定所述连接数据为不可通行连接数据,表示所述操作对象无法在两个所述体素层之间通行;若所述重叠部分的高度大于或等于所述第一预设高度,则确定所述连接数据为可通行连接数据,表示所述操作对象能够在两个所述体素层之间通行。
3.根据权利要求2所述的方法,其特征在于,所述第一预设高度大于或等于所述操作对象的高度,两个所述体素层包括第一体素层和第二体素层,所述第一体素层的最低的元素点的高度为n,所述第二体素层的最低的元素点的高度为f,其中:
若所述重叠部分的高度大于或等于所述第一预设高度,且f-n≤第二预设高度,则确定所述可通行连接数据为第一可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式包括第一通行方式和第二通行方式;
若所述重叠部分的高度大于或等于所述第一预设高度,且所述第二预设高度<f-n≤第三预设高度,则确定所述可通行连接数据为第二可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式包括第三通行方式。
4.根据权利要求3所述的方法,其中:若所述重叠部分的高度大于或等于所述第一预设高度,且所述第三预设高度<f-n≤第四预设高度,则确定所述可通行连接数据为第三可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式包括第四通行方式。
5.根据权利要求3所述的方法,其中:所述第一可通行连接数据表示所述操作对象从所述第一体素层通行至所述第二体素层的通行方式还包括第五通行方式。
6.根据权利要求2所述的方法,其特征在于,所述操作对象具有第一姿态和第二姿态,所述第一姿态的姿态高度大于所述第二姿态的姿态高度,所述操作对象还具有第一行动方式和第二行动方式,所述第一预设高度大于或等于所述操作对象的所述第二姿态的姿态高度,两个所述体素层包括第一体素层和第二体素层,所述第一体素层的最低的元素点的高度为n,所述第二体素层的最低的元素点的高度为f,其中:
若所述重叠部分的高度≥所述第一姿态的姿态高度,且f-n≤第二预设高度,则确定所述可通行连接数据为第四可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第一姿态和所述第二姿态,所述操作对象的行动方式包括所述第一行动方式;
若所述第一姿态的姿态高度>所述重叠部分的高度≥所述第二姿态的姿态高度,且f-n≤所述第二预设高度,则确定所述可通行连接数据为第五可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第二姿态,所述操作对象的行动方式包括所述第一行动方式;
若所述重叠部分的高度≥所述第一姿态的姿态高度,且所述第二预设高度<f-n≤第三预设高度,则确定所述可通行连接数据为第六可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第一姿态,所述操作对象的行动方式包括所述第二行动方式。
7.根据权利要求6所述的方法,其中,若所述第一姿态的姿态高度>所述重叠部分的高度≥所述第二姿态的姿态高度,且所述第二预设高度<f-n≤所述第三预设高度,则确定所述可通行连接数据为第七可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第二姿态,所述操作对象的行动方式包括所述第二行动方式。
8.如权利要求6所述的方法,其特征在于,所述操作对象还具有第三行动方式,其中:
若所述重叠部分的高度≥所述第一姿态的姿态高度,且所述第三预设高度<f-n≤第四预设高度,则确定所述可通行连接数据为第八可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第一姿态,所述操作对象的行动方式包括所述第三行动方式。
9.如权利要求6所述的方法,其特征在于,所述操作对象还具有第三姿态,所述第三姿态的姿态高度小于所述第二姿态的姿态高度,所述第一预设高度大于或等于所述操作对象的所述第三姿态的姿态高度,其中:
所述第四可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态还包括所述第三姿态;
所述第五可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态还包括所述第三姿态;
若所述第二姿态的姿态高度>所述重叠部分的高度≥所述第三姿态的姿态高度,且f-n≤所述第二预设高度,则确定所述可通行连接数据为第九可通行连接数据,表示所述操作对象从所述第一体素层通行至所述第二体素层时,所述操作对象的姿态包括所述第三姿态,所述操作对象的行动方式包括所述第一行动方式。
10.根据权利要求1至9任一项所述的方法,其特征在于,所述三维空间应用于游戏场景,所述游戏场景包括若干种不同数据类型的场景元素,分别导出若干种所述场景元素的原始数据;
设定期望的单元体素的边长,结合所述单元体素的边长,分别将若干种所述场景元素的原始数据转换为体素数据,所述体素数据在所述游戏场景中表现为体素模块;
根据所有所述场景元素的体素模块在所述像素场景中的相对位置,拼接所有所述场景元素的体素模块,获得应用于所述游戏场景的所述基于体素数据的三维空间。
11.根据权利要求10所述的方法,其特征在于,所述游戏场景包括动态对象,获取所有所述动态对象的类型、和不同类型的所述动态对象的轮廓点相对于该动态对象的中心点的偏移坐标;
根据刷新后的所述动态对象的中心点坐标、和所述轮廓点的偏移坐标计算获取刷新后的所述轮廓点的更新坐标;
在所述动态对象刷新后的所有轮廓点的更新位置进行写入,并擦除所述动态对象刷新前的所有轮廓点的原始位置,完成所述动态对象的动态刷新。
12.根据权利要求11所述的方法,其特征在于,所述游戏场景还包括静态对象;
游戏过程中,重复使用一套所述静态对象构成的静态数据,并不断进行所述动态对象的所述动态刷新,且每次动态刷新都丢弃刷新前的所述动态对象构成的动态数据。
13.根据权利要求12所述的方法,其特征在于,所述游戏场景的所述场景元素包括地形、植被、建筑和室外摆件;所述分别导出若干种所述场景元素的原始数据包括:
导出所述室外摆件与所述建筑的3D模型文件格式数据和坐标信息;导出所述植被的逗号分隔值文件格式数据;通过深度相机正交拍摄以导出地形的图片,该图片中包含所述地形的表面高度数据;
所述设定期望的单元体素的边长,结合所述单元体素的边长,分别将若干种所述场景元素的原始数据转换为体素数据包括:
将所述室外摆件与所述建筑的所述3D模型文件格式数据转换为体素数据;获取所述植被的碰撞体大小,结合所述单元体素的边长,计算获取该植被在所述体素场景中需要占用的体素个数及体素形状;根据存储有所述地形的所述表面高度数据的所述图片,按照单元体素的边长逐点采样以将所述地形的所述表面高度数据转换为体素数据。
14.一种用于构建基于体素数据的三维空间的系统,其特征在于,包括点捕捉模块、对照索引模块、体素层数据构建模块和连接数据构建模块;
所述点捕捉模块在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点;所述点捕捉模块以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点;
所述对照索引模块在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;
所述体素层数据构建模块收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度大于或等于第一预设高度,则定义该连续空心点段为一个体素层;
所述连接数据构建模块计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据,使得操作对象在两个所述体素层之间通行;
所述体素点、所述体素层、所述连接数据构成所述三维空间。
15.一种用于构建基于体素数据的三维空间的服务器,其特征在于,包括点捕捉模块、对照索引模块、体素层数据构建模块和连接数据构建模块;
所述点捕捉模块在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点;所述点捕捉模块以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点;
所述对照索引模块在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;
所述体素层数据构建模块收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度大于或等于第一预设高度,则定义该连续空心点段为一个体素层;
所述连接数据构建模块计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据,使得操作对象在两个所述体素层之间通行;
所述体素点、所述体素层、所述连接数据构成所述三维空间。
16.一种计算机可读存储介质,存储用于构建基于体素数据的三维空间的指令,其特征在于,所述指令在被执行时实施以下步骤:
在x,y,z三维空间中,取z=z′的一基础平面,所述基础平面上存在若干个基础点;以所述基础点为底点,以z坐标为高度,形成若干根基础柱,每根所述基础柱上都存在L个元素点;
在GPU中并行地访问所述基础柱,并在每个并行的线程中遍历所述基础柱上的每个所述元素点,并根据体素数据索引到其对应的体素点,判断该体素点是空心点或实心点;
收集每根所述基础柱上的连续空心点段,若所述连续空心点段的高度大于或等于第一预设高度,则定义该连续空心点段为一个体素层;
计算获取每根所述基础柱上的每个所述体素层与相邻所述基础柱上的每个所述体素层之间的位置关系,若两个所述体素层之间在高度方向上存在重叠部分,则确定两个所述体素层之间存在连接数据,使得操作对象在两个所述体素层之间通行;
所述体素点、所述体素层、所述连接数据构成所述三维空间。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111203126.5A CN113893535A (zh) | 2021-10-15 | 2021-10-15 | 用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质 |
PCT/CN2022/125332 WO2023061474A1 (zh) | 2021-10-15 | 2022-10-14 | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 |
CN202280020322.5A CN117015424A (zh) | 2021-10-15 | 2022-10-14 | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111203126.5A CN113893535A (zh) | 2021-10-15 | 2021-10-15 | 用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113893535A true CN113893535A (zh) | 2022-01-07 |
Family
ID=79192331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111203126.5A Withdrawn CN113893535A (zh) | 2021-10-15 | 2021-10-15 | 用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113893535A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023061474A1 (zh) * | 2021-10-15 | 2023-04-20 | 上海莉莉丝互娱网络科技有限公司 | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 |
CN116363327A (zh) * | 2023-05-29 | 2023-06-30 | 北京道仪数慧科技有限公司 | 体素地图生成方法及系统 |
-
2021
- 2021-10-15 CN CN202111203126.5A patent/CN113893535A/zh not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023061474A1 (zh) * | 2021-10-15 | 2023-04-20 | 上海莉莉丝互娱网络科技有限公司 | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 |
CN116363327A (zh) * | 2023-05-29 | 2023-06-30 | 北京道仪数慧科技有限公司 | 体素地图生成方法及系统 |
CN116363327B (zh) * | 2023-05-29 | 2023-08-22 | 北京道仪数慧科技有限公司 | 体素地图生成方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109701273B (zh) | 游戏数据的处理方法、装置、电子设备及可读存储介质 | |
Pettre et al. | A navigation graph for real-time crowd animation on multilayered and uneven terrain | |
JP7125512B2 (ja) | オブジェクトのロード方法及び装置、記憶媒体、電子装置、並びにコンピュータプログラム | |
KR101157581B1 (ko) | 지도표시 시스템, 지도데이터 가공장치, 지도표시 장치 및 지도표시 방법 | |
CN105474033B (zh) | 智能机姿态测定、全景影像生成及目标识别方法 | |
Salomon et al. | Interactive navigation in complex environments using path planning | |
CN113893535A (zh) | 用于构建基于体素数据的三维空间的方法、系统、服务器及计算机可读存储介质 | |
Pettré et al. | Real‐time navigating crowds: scalable simulation and rendering | |
CN105702151A (zh) | 一种室内地图构建方法及装置 | |
KR20190085519A (ko) | 큐보이드 검출을 위한 딥 러닝 시스템 | |
CN107423445A (zh) | 一种地图数据处理方法、装置及存储介质 | |
CN113096252A (zh) | 一种混合增强教学场景中多移动机制融合方法 | |
CN105378796A (zh) | 可伸缩体积3d重构 | |
CN109298629A (zh) | 用于为自主和非自主位置意识提供鲁棒跟踪的容错 | |
CN102609942A (zh) | 使用深度图进行移动相机定位 | |
WO2023051671A1 (zh) | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 | |
CN112419499B (zh) | 一种沉浸式的态势场景仿真系统 | |
CN107329962A (zh) | 图像检索数据库生成方法、增强现实的方法及装置 | |
KR102396390B1 (ko) | 증강 현실 기반의 3차원 조립 퍼즐을 제공하는 방법 및 단말 | |
CN109186552A (zh) | 一种图像采集装置的布点规范的方法和系统 | |
Pardhi et al. | Vehicle motion prediction for autonomous navigation system using 3 dimensional convolutional neural network | |
Steed | Efficient navigation around complex virtual environments | |
WO2023061474A1 (zh) | 基于体素数据的数据处理方法、服务器、介质及计算机程序产品 | |
CN113877210A (zh) | 游戏场景的转换方法、系统、服务器及计算机可读存储介质 | |
CN113893536A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220107 |