CN113117344B - 体素建筑的生成方法、装置、电子设备及存储介质 - Google Patents
体素建筑的生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113117344B CN113117344B CN202110357360.7A CN202110357360A CN113117344B CN 113117344 B CN113117344 B CN 113117344B CN 202110357360 A CN202110357360 A CN 202110357360A CN 113117344 B CN113117344 B CN 113117344B
- Authority
- CN
- China
- Prior art keywords
- matrix
- building
- identification information
- information matrix
- constraint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- 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/822—Strategy games; Role-playing games
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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
-
- 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
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
-
- 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
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Abstract
本申请公开了一种体素建筑的生成方法、装置、电子设备及存储介质,其中,所述体素建筑的生成方法包括:对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。上述方案,能够快速生成符合样本建筑结构规则的体素建筑。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种体素建筑的生成方法、装置、电子设备及存储介质。
背景技术
沙盒游戏是一种自由度非常高的游戏类型,它允许玩家充分发挥想象力,利用游戏中的资源创造出各种结构。体素类沙盒游戏是沙盒游戏的一个重要子类,其代表作品为Minecraft,它的特点是整个游戏世界被抽象为3D网格,玩家可以在网格中的任意位置添加或删除材料块,实现3D模型创作的目的。
由于自由度极高,有经验的玩家可以几乎不受约束地在体素类游戏中进行3D创作,但对于普通玩家尤其是新手而言,这好比在3D白纸上进行作画,不仅需要空间想象力、建筑美学知识和3D游戏操作经验,还需要投入大量的时间和精力。
发明内容
本申请主要解决的技术问题是提供一种体素建筑的生成方法、装置、电子设备及存储介质,能够快速生成符合样本建筑结构规则的体素建筑。
为了解决上述问题,本申请第一方面提供了一种体素建筑的生成方法,所述体素建筑的生成方法包括:对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。
为了解决上述问题,本申请第二方面提供了一种体素建筑的生成模型,所述体素建筑的生成模型包括:样本分析模块,用于对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;以及对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;建筑生成模块,用于构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;以及基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。
为了解决上述问题,本申请第三方面提供了一种体素建筑的生成装置,所述体素建筑的生成装置包括:矩阵降维模块,所述矩阵降维模块用于对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;采样和约束分析模块,所述采样和约束分析模块用于对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;约束满足问题求解模块,所述约束满足问题求解模块用于构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;结果解析模块,所述结果解析模块用于基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。
为了解决上述问题,本申请第四方面提供了一种电子设备,包括相互耦接的存储器和处理器,所述处理器用于执行所述存储器中存储的程序指令,以实现上述第一方面的体素建筑的生成方法。
为了解决上述问题,本申请第五方面提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令被处理器执行时实现上述第一方面的体素建筑的生成方法。
本发明的有益效果是:区别于现有技术的情况,本申请的体素建筑的生成方法中,通过对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,可以得到样本建筑的列识别信息矩阵,然后对样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵,构建初始化的约束矩阵,并根据所有砖片和所有砖片之间的关系矩阵,对初始化的约束矩阵进行求解,得到求解后的约束矩阵,于是可以基于求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成目标建筑,从而可以在短时间内产生大量与样本建筑结构不同,但符合样本建筑结构规则的目标建筑,实现了体素建筑的自动创作,为玩家提供建筑创作灵感。
附图说明
图1是本申请体素建筑的生成方法一实施例的流程示意图;
图2是图1中步骤S11一实施例的流程示意图;
图3是本申请方块的分类一实施例的示意图;
图4是本申请列识别信息矩阵一实施例的示意图;
图5是图1中步骤S12一实施例的流程示意图;
图6是本申请对列识别信息矩阵进行采样的过程一实施例的示意图;
图7是本申请砖片之间的位置关系和关系矩阵一实施例的示意图;
图8是图1中步骤S13一实施例的流程示意图;
图9是图8中步骤S132一应用场景的流程示意图;
图10是图1中步骤S14一实施例的流程示意图;
图11是本申请生成目标建筑的示意图;
图12是本申请体素建筑的生成模型一实施例的框架示意图;
图13是本申请体素建筑的生成装置一实施例的框架示意图;
图14是本申请电子设备一实施例的框架示意图;
图15是本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
请参阅图1,图1是本申请体素建筑的生成方法一实施例的流程示意图。具体而言,本实施例中的体素建筑的生成方法可以包括如下步骤:
步骤S11:对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵。
本申请的样本建筑为体素建筑,体素(Voxel)是体积像素(Volume Pixel)的简称,概念上类似二维空间的最小单位像素,是三维空间分割上的最小单位。体素建筑可以通过三维矩阵来描述,包括元素识别信息矩阵和状态信息矩阵。体素建筑的元素识别信息矩阵包括每个方块的元素识别信息,状态信息矩阵包括元素识别信息矩阵中每个方块对应的状态信息。具体地,体素建筑用一组等大的三维矩阵描述,具体为所有方块的元素识别信息矩阵(Block_IDw*h*l)和状态信息矩阵(Block_dataw*h*l),其中w、l与h分别为游戏空间在宽,长和高三个方向上的大小。矩阵Block_IDw*h*l用来描述空间中每个位置对应方块的元素识别信息,即方块标识码(Block_ID)。体素游戏中,所有不同种类的方块均具有唯一的Block_ID,Block_ID通常为整型。游戏中的所有Block_ID可以保存在Block_ID列表中,可以在Block_ID列表选取其中任意一个Block_ID来进行使用。而矩阵Block_dataw*h*l则用来描述Block_IDw*h*l中每个方块的状态信息,比如方块摆放的朝向。Block_IDw*h*l和Block_dataw *h*l的值均为整型。一个完全初始化的游戏世界通常可用0(空气的方块ID)填充的Block_IDw*h*l和Block_dataw*h*l来表示。玩家在游戏中创造一个大小为w*h*l的建筑,本质上是在修改初始化的Block_IDw*h*l和Block_dataw*h*l两个矩阵,即空气方块替换为其他的方块ID并修改其朝向。因此,在得到样本建筑之后,可以得到样本建筑的元素识别信息矩阵和状态信息矩阵,然后可以对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,从而得到样本建筑的列识别信息矩阵。
请结合图2,图2是图1中步骤S11一实施例的流程示意图。在一实施例中,上述步骤S11具体可以包括:
步骤S111:对所述样本建筑的所有方块进行分类,得到带朝向方块、特殊结构方块和普通方块。
可以理解的是,为了生成与样本建筑结构不同,但符合样本建筑结构规则的目标建筑,因此需要先分析样本建筑的结构规则;而在体素建筑空间里,方块是体素建筑的构建单元,为了分析样本建筑的结构规则,需要先对样本建筑的所有方块进行分类。具体地,体素建筑的方块类型可以分为带朝向方块、特殊结构方块和普通方块;由于部分建筑结构的材料(比如屋顶)具有朝向的概念,这部分信息被记录在状态信息矩阵Block_dataw*h*l中,所对应的方块为带朝向方块;另外,部分建筑结构为特殊结构,所对应的方块为特殊结构方块;而不属于带朝向方块和特殊结构方块的其他方块,则划分为普通方块。如图3所示,图3是本申请方块的分类一实施例的示意图,采用不同的颜色来分别表示带朝向方块、特殊结构方块和普通方块,其中,带朝向方块包括楼梯和屋顶等具有朝向信息的方块,特殊结构方块包括门、窗等特殊结构的方块,其余方块则被归类为普通方块。
步骤S112:对于所述样本建筑的元素识别信息矩阵和状态信息矩阵,将沿着高度方向上的每一列方块作为一个元素,通过遍历垂直于高度方向的平面上的每个元素,得到所述样本建筑的列识别信息矩阵;其中,将元素识别信息矩阵和状态信息矩阵中的对应值均相同的两个元素归类为同一元素。
具体地,对样本建筑的三维结构矩阵进行投影降维,是将元素识别信息矩阵Block_IDw*h*l和状态信息矩阵Block_dataw*h*l,沿着高度方向h降维成列识别信息矩阵Column_IDw*l的过程。对于给定的Block_IDw*h*l以及对应的Block_dataw*h*l,通过遍历垂直于高度方向的平面(w*l平面)上的每一个元素,此时,沿着高度方向上的每一列方块作为一个元素,每个元素是一维长度为h的矩阵,从而可以得到每个元素对应的列识别信息Column_ID,进而可以组成样本建筑的列识别信息矩阵Column_IDw*l。可以理解的是,若两个元素在元素识别信息矩阵Block_IDw*h*l中所对应的值都相同,在状态信息矩阵Block_dataw*h*l中所对应的值也都相同,则认为这两个元素为相同的元素,相同的元素具有相同的列识别信息Column_ID,如图4所示,图4是本申请列识别信息矩阵一实施例的示意图,所示的列识别信息矩阵Column_IDw*l中,不同的颜色代表不同的列识别信息Column_ID。
步骤S12:对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵。
在得到样本建筑的列识别信息矩阵Column_IDw*l后,通过对列识别信息矩阵Column_IDw*l进行扫描采样,根据局部关系构建关系矩阵,以便于后续对样本建筑的结构规则进行分析。
请结合图5,图5是图1中步骤S12一实施例的流程示意图。在一实施例中,上述步骤S12具体可以包括:
步骤S121:以预设长度、预设宽度和预设步长对所述样本建筑的列识别信息矩阵进行遍历取值,采样得到若干个砖片;其中,将元素识别信息矩阵和状态信息矩阵中的对应值均相同的两个砖片归类为同一砖片。
具体地,对列识别信息矩阵Column_IDw*l进行采样的过程是以特定的采样大小(预设长度m*预设宽度n,预设长度和预设宽度可以取任意值,但应小于w/2和l/2)和采样间隔(预设步长)对列识别信息矩阵Column_IDw*l进行遍历取值的过程。如图6所示,图6是本申请对列识别信息矩阵进行采样的过程一实施例的示意图,以预设长度、预设宽度和预设步长对样本建筑的列识别信息矩阵Column_IDw*l进行遍历取值,可以采样得到一系列大小为m*n的矩阵,为砖片Tile,可以理解的是,若两个砖片在元素识别信息矩阵Block_IDw*h*l中所对应的值都相同,在状态信息矩阵Block_dataw*h*l中所对应的值也都相同,则认为这两个砖片为相同的砖片,相同砖片被归类为同一个砖片编号Tile_ID。
步骤S122:提取所有砖片之间的位置关系,得到所有砖片之间的关系矩阵。
请结合图7,图7是本申请砖片之间的位置关系和关系矩阵一实施例的示意图,砖片与砖片之间存在的位置关系有五种,分别为上、下、左、右和无关系,图7左边以中心砖片Tile_a和相邻砖片Tile_b为例,示出了具体地位置关系,而根据所有砖片之间的位置关系,可以构建所有砖片之间的关系矩阵,关系矩阵如图7右边所示,横纵轴代表砖片编号Tile_ID,不同颜色表示砖片之间的不同位置关系。
步骤S13:构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵。
步骤S14:基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。
通过构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对初始化的约束矩阵进行求解,可以得到求解后的约束矩阵,从而可以根据求解后的约束矩阵重构出目标建筑的元素识别信息矩阵和状态信息矩阵,且重构出的目标建筑的元素识别信息矩阵和状态信息矩阵满足样本建筑所对应的所有砖片和所有砖片之间的关系矩阵的约束,从而可以在短时间内生成与样本建筑结构不同,但符合样本建筑结构规则的目标建筑。
上述方案,通过对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,可以得到样本建筑的列识别信息矩阵,然后对样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵,构建初始化的约束矩阵,并根据所有砖片和所有砖片之间的关系矩阵,对初始化的约束矩阵进行求解,得到求解后的约束矩阵,于是可以基于求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成目标建筑,从而可以在短时间内产生大量与样本建筑结构不同,但符合样本建筑结构规则的目标建筑,实现了体素建筑的自动创作,为玩家提供建筑创作灵感。
请结合图8,图8是图1中步骤S13一实施例的流程示意图。在一实施例中,上述步骤S13具体可以包括:
步骤S131:构建长宽均为k的初始化的约束矩阵;其中,所述初始化的约束矩阵中的每个元素的可取值数等于所述砖片的总数。
步骤S132:采用弧一致性算法对所述初始化的约束矩阵进行求解,得到所述求解后的约束矩阵。
约束满足问题(CSP,Constraint satisfaction problem)被定义为一个长宽均为k的约束矩阵CSPk*k,约束矩阵CSPk*k中每一个元素的可取值数等于砖片的总数(即Tile_0…Tile_n),采用弧一致性算法(例如弧一致性算法3,简称AC3)对约束矩阵CSPk*k进行求解,可以得到求解后的约束矩阵CSPk*k。求解的过程是将约束矩阵CSPk*k中的所有元素的可能取值数量确定为0或1,如果所有元素的可能取值个数均为1,则该结果为一个解,由于每个元素的取值为一个砖片,此时每个元素与其所有相邻元素都满足上述所有砖片之间的关系矩阵的约束。如果有任何一个元素的可能取值数为0,则说明约束矩阵CSPk*k无法继续求解,表示此时部分元素的取值不满足上述所有砖片之间的关系矩阵的约束。
请结合图9,图9是图8中步骤S132一应用场景的流程示意图。在一应用场景中,在构建了初始化的约束矩阵CSPk*k后,可以按照以下步骤对初始化的约束矩阵CSPk*k进行求解,具体可以包括:
步骤S1321:判断所述约束矩阵是否可解。具体地,可以判断当前状态的约束矩阵CSPk*k中是否存在任何元素的可取值数为0,若没有元素的可取值数为0,则表示当前状态的约束矩阵CSPk*k可解,若有元素的可取值数为0,则表示当前状态的约束矩阵CSPk*k不可解。若可解,则执行步骤S1322,若不可解,则说明当前状态的约束矩阵CSPk*k无法继续求解,流程结束。
步骤S1322:寻找所述约束矩阵中熵最低的元素。具体地,元素(i,j)的熵的计算公式如下:
其中,N(i,j)为元素(i,j)当前的可取值数,wk为元素(i,j)当前的第k个可取值的砖片在所述样本建筑中出现的频数。通过计算所述约束矩阵中每个元素的熵,可以得到约束矩阵中熵最低的元素,在选择最低熵元素的位置时,如果存在多个最低熵元素,则从多个最低熵元素中随机选取一个。
步骤S1323:随机确定熵最低的元素的取值。具体地,在确定了熵最低的元素后,此时,该熵最低的元素的可取值可能存在一个或者多个,于是可以从熵最低的元素的可取值列表中,随机选取一个值作为该熵最低的元素的取值,例如从[Tile_0…Tile_n]中随机选取Tile_r作为元素的取值。可以理解的是,此时随机选取可以为加权随机,权重是每个砖片在样本建筑中出现的频数。
步骤S1324:根据所有砖片之间的关系矩阵,对所述熵最低的元素的关联元素进行约束传递。具体地,假设在步骤S1322中确定熵最低的元素为元素(i,j)时,此时可以确定元素(i,j)的关联元素为元素(i-1,j)、元素(i,j-1)、元素(i+1,j)和元素(i,j+1);对于元素(i-1,j)、元素(i,j-1)、元素(i+1,j)和元素(i,j+1)这四个位置,可以分别查看各元素的可取值列表中的每一个可取值,判断元素(i-1,j)、元素(i,j-1)、元素(i+1,j)和元素(i,j+1)的可取值列表中的每一个可取值,与元素(i,j)的取值之间是否符合上述的关系矩阵中定义的约束条件,并将不符合约束条件的可取值从对应的可取值列表中删除。即,在确定了元素(i,j)的取值为砖片a后,此时元素(i,j)的各关联元素的取值与砖片a必须满足上述关系矩阵,因此,元素(i-1,j)、元素(i,j-1)、元素(i+1,j)和元素(i,j+1)的可取值列表中,如果存在与砖片a不满足上述关系矩阵的砖片b,则需要将这些与砖片a不满足上述关系矩阵的砖片b从可取值列表中删除。
然后循环执行步骤S1321至步骤S1324,直至约束矩阵CSPk*k中所有元素的可取值数均为1时,则得到求解后的约束矩阵。具体地,在步骤S1324中,由于元素(i-1,j)、元素(i,j-1)、元素(i+1,j)和元素(i,j+1)四个位置的可取值列表都发生了改变,所以对于这四个位置也可以执行步骤S1321至步骤S1324的操作,将约束传递到其他元素中,直到约束矩阵CSPk*k中所有元素的取值都符合关系矩阵中定义的约束条件为止,即得到求解后的约束矩阵CSPk*k。
请结合图10,图10是图1中步骤S14一实施例的流程示意图。在一实施例中,上述步骤S14具体可以包括:
步骤S141:在得到所述求解后的约束矩阵后,根据各元素的取值重构出新的列识别信息矩阵;其中,所述新的列识别信息矩阵的长为k与预设长度的乘积,所述新的列识别信息矩阵的宽为k与预设宽度的乘积。
步骤S142:根据所述新的列识别信息矩阵和所述样本建筑的元素识别信息矩阵和状态信息矩阵中的高度值,重构出所述目标建筑的元素识别信息矩阵和状态信息矩阵。
步骤S143:基于所述元素识别信息矩阵和所述状态信息矩阵,生成对应的所有体素建筑,并对所有体素建筑进行过滤,得到所述目标建筑。
在得到求解后的约束矩阵后,可以根据求解后的约束矩阵中,各元素的取值(即砖片编号Tile_ID)重构出新的列识别信息矩阵Column_IDW*L,新的列识别信息矩阵Column_IDW*L的长为k与预设长度的乘积(L=k*m),新的列识别信息矩阵的宽为k与预设宽度的乘积(W=k*n)。而根据新的列识别信息矩阵Column_IDW*L和样本建筑的元素识别信息矩阵和状态信息矩阵中的高度值h,可以重构出目标建筑的元素识别信息矩阵Block_IDW*L*h和状态信息矩阵Block_dataW*L*h。可以理解的是,如图11所示,图11是本申请生成目标建筑的示意图,由于约束矩阵CSPk*k的解可能有多个,因此,所得到的目标建筑的元素识别信息矩阵Block_IDW*L*h和状态信息矩阵Block_dataW*L*h,可能对应包含有多个体素建筑,因此可以对得到的体素建筑根据大小进行过滤,并去掉重复的建筑,最终得到一系列和样本建筑不同,但满足样本建筑结构规则的目标建筑。
另外,在得到目标建筑的元素识别信息矩阵Block_IDW*L*h和状态信息矩阵Block_dataW*L*h后,需要经过序列化,得到游戏客户端可识别的二进制文件,便可在游戏中渲染得到目标建筑。
上述的体素建筑的生成方法可以根据一个建筑样本,生成结构多样,且满足原建筑结构关系的建筑群。对于每个建筑样本,可以产生的不同建筑数量在几十到上百个不等,可以将建筑数据库的建筑数量提高1-2个数量级;平均生成一个建筑的耗时在一秒以内,且不依赖GPU加速。本申请的体素建筑的生成方法解决了以下问题:1)通过对单个建筑的结构分析和搜索实现的生成目标建筑,不需要建筑数据集,也没有训练(反向传播求解)过程;2)体素建筑数据是离散的4D矩阵,本申请不受离散或连续数据类型的限制;3)得到的建筑均满足原建筑的结构关系,因此不会出现结构异常的现象;4)不依赖大量算力进行训练或迭代。
请参阅图12,图12是本申请体素建筑的生成模型一实施例的框架示意图。体素建筑的生成模型120包括:样本分析模块1201,用于对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;以及对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;建筑生成模块1202,用于构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;以及基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。
因此,利用体素建筑的生成模型120,通过样本分析模块1201对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,可以得到样本建筑的列识别信息矩阵,然后对样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵,然后由建筑生成模块1202构建初始化的约束矩阵,并根据所有砖片和所有砖片之间的关系矩阵,对初始化的约束矩阵进行求解,得到求解后的约束矩阵,于是可以基于求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成目标建筑,从而可以在短时间内产生大量与样本建筑结构不同,但符合样本建筑结构规则的目标建筑,实现了体素建筑的自动创作,为玩家提供建筑创作灵感。
请参阅图13,图13是本申请体素建筑的生成装置一实施例的框架示意图。体素建筑的生成装置130包括:矩阵降维模块1301,所述矩阵降维模块1301用于对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;采样和约束分析模块1302,所述采样和约束分析模块1302用于对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;约束满足问题求解模块1303,所述约束满足问题求解模块1303用于构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;结果解析模块1304,所述结果解析模块1304用于基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。
在一些实施例中,矩阵降维模块1301执行对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵的步骤,包括:对所述样本建筑的所有方块进行分类,得到带朝向方块、特殊结构方块和普通方块;对于所述样本建筑的元素识别信息矩阵和状态信息矩阵,将沿着高度方向上的每一列方块作为一个元素,通过遍历垂直于高度方向的平面上的每个元素,得到所述样本建筑的列识别信息矩阵;其中,将元素识别信息矩阵和状态信息矩阵中的对应值均相同的两个元素归类为同一元素。
在一些实施例中,采样和约束分析模块1302执行对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵的步骤,包括:以预设长度、预设宽度和预设步长对所述样本建筑的列识别信息矩阵进行遍历取值,采样得到若干个砖片;其中,将元素识别信息矩阵和状态信息矩阵中的对应值均相同的两个砖片归类为同一砖片;提取所有砖片之间的位置关系,得到所有砖片之间的关系矩阵。
在一些实施例中,约束满足问题求解模块1303执行构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵的步骤,包括:构建长宽均为k的初始化的约束矩阵;其中,所述初始化的约束矩阵中的每个元素的可取值数等于所述砖片的总数;采用弧一致性算法对所述初始化的约束矩阵进行求解,得到所述求解后的约束矩阵。
在一些实施例中,约束满足问题求解模块1303执行采用弧一致性算法对所述初始化的约束矩阵进行求解,得到所述求解后的约束矩阵,具体包括:判断所述约束矩阵是否可解;若是,则寻找所述约束矩阵中熵最低的元素;从所述熵最低的元素的可取值列表中,随机选取一个值作为所述熵最低的元素的取值;根据所有砖片之间的关系矩阵,对所述熵最低的元素的关联元素进行约束传递;重复上述步骤,直至所述约束矩阵中所有元素的可取值数均为1时,得到所述求解后的约束矩阵。
在一些实施例中,结果解析模块1304执行基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑的步骤,包括:在得到所述求解后的约束矩阵后,根据各元素的取值重构出新的列识别信息矩阵;其中,所述新的列识别信息矩阵的长为k与预设长度的乘积,所述新的列识别信息矩阵的宽为k与预设宽度的乘积;根据所述新的列识别信息矩阵和所述样本建筑的元素识别信息矩阵和状态信息矩阵中的高度值,重构出所述目标建筑的元素识别信息矩阵和状态信息矩阵;基于所述元素识别信息矩阵和所述状态信息矩阵,生成对应的所有体素建筑,并对所有体素建筑进行过滤,得到所述目标建筑。
请参阅图14,图14是本申请电子设备一实施例的框架示意图。电子设备140包括相互耦接的存储器1401和处理器1402,处理器1402用于执行存储器1401中存储的程序指令,以实现上述任意一种体素建筑的生成方法实施例的步骤。在一个具体的实施场景中,电子设备140可以包括但不限于:微型计算机、服务器。
具体而言,处理器1402用于控制其自身以及存储器1401以实现上述任意一种体素建筑的生成方法实施例的步骤。处理器1402还可以称为CPU(Central Processing Unit,中央处理单元)。处理器1402可能是一种集成电路芯片,具有信号的处理能力。处理器1402还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器1402可以由集成电路芯片共同实现。
请参阅图15,图15是本申请计算机可读存储介质一实施例的框架示意图。计算机可读存储介质150存储有能够被处理器运行的程序指令1500,程序指令1500用于实现上述任意一种体素建筑的生成方法实施例的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种体素建筑的生成方法,其特征在于,所述体素建筑的生成方法包括:
对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;
对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;
构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;
基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑;
其中,所述对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵,包括:
对所述样本建筑的所有方块进行分类,得到带朝向方块、特殊结构方块和普通方块;
对于所述样本建筑的元素识别信息矩阵和状态信息矩阵,将沿着高度方向上的每一列方块作为一个元素,通过遍历垂直于高度方向的平面上的每个元素,得到所述样本建筑的列识别信息矩阵;其中,将元素识别信息矩阵和状态信息矩阵中的对应值均相同的两个元素归类为同一元素。
2.根据权利要求1所述的体素建筑的生成方法,其特征在于,所述对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵,包括:
以预设长度、预设宽度和预设步长对所述样本建筑的列识别信息矩阵进行遍历取值,采样得到若干个砖片;其中,将元素识别信息矩阵和状态信息矩阵中的对应值均相同的两个砖片归类为同一砖片;
提取所有砖片之间的位置关系,得到所有砖片之间的关系矩阵。
3.根据权利要求2所述的体素建筑的生成方法,其特征在于,所述构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵,包括:
构建长宽均为k的初始化的约束矩阵;其中,所述初始化的约束矩阵中的每个元素的可取值数等于所述砖片的总数;
采用弧一致性算法对所述初始化的约束矩阵进行求解,得到所述求解后的约束矩阵。
4.根据权利要求3所述的体素建筑的生成方法,其特征在于,所述采用弧一致性算法对所述初始化的约束矩阵进行求解,得到所述求解后的约束矩阵,包括:
判断所述约束矩阵是否可解;
若是,则寻找所述约束矩阵中熵最低的元素;
从所述熵最低的元素的可取值列表中,随机选取一个值作为所述熵最低的元素的取值;
根据所有砖片之间的关系矩阵,对所述熵最低的元素的关联元素进行约束传递;
重复上述步骤,直至所述约束矩阵中所有元素的可取值数均为1时,得到所述求解后的约束矩阵。
5.根据权利要求4所述的体素建筑的生成方法,其特征在于,所述寻找所述约束矩阵中熵最低的元素,包括:
计算所述约束矩阵中每个元素的熵,以得到所述熵最低的元素;
其中,元素(i,j)的熵的计算公式如下:
E(i,j)=;
其中,为元素(i,j)当前的可取值数,wk为元素(i,j)当前的第k个可取值的砖片在所述样本建筑中出现的频数。
6.根据权利要求4所述的体素建筑的生成方法,其特征在于,所述根据所有砖片之间的关系矩阵,对所述熵最低的元素的关联元素进行约束传递,包括:
在所述熵最低的元素为元素(i,j)时,确定元素(i,j)的关联元素为元素(i-1,j)、元素(i,j-1)、元素(i+1,j)和元素(i,j+1);
分别判断元素(i-1,j)、元素(i,j-1)、元素(i+1,j)和元素(i,j+1)的可取值列表中的每一个可取值,与元素(i,j)的取值之间是否符合所有砖片之间的关系矩阵中定义的约束条件,并将不符合约束条件的可取值从对应的可取值列表中删除。
7.根据权利要求3所述的体素建筑的生成方法,其特征在于,所述基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑,包括:
在得到所述求解后的约束矩阵后,根据各元素的取值重构出新的列识别信息矩阵;其中,所述新的列识别信息矩阵的长为k与预设长度的乘积,所述新的列识别信息矩阵的宽为k与预设宽度的乘积;
根据所述新的列识别信息矩阵和所述样本建筑的元素识别信息矩阵和状态信息矩阵中的高度值,重构出所述目标建筑的元素识别信息矩阵和状态信息矩阵;
基于所述元素识别信息矩阵和所述状态信息矩阵,生成对应的所有体素建筑,并对所有体素建筑进行过滤,得到所述目标建筑。
8.一种体素建筑的生成装置,其特征在于,所述体素建筑的生成装置包括:
矩阵降维模块,所述矩阵降维模块用于对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵;其中,矩阵降维模块执行对样本建筑的元素识别信息矩阵和状态信息矩阵沿高度方向进行降维处理,得到样本建筑的列识别信息矩阵的步骤,包括:对所述样本建筑的所有方块进行分类,得到带朝向方块、特殊结构方块和普通方块;对于所述样本建筑的元素识别信息矩阵和状态信息矩阵,将沿着高度方向上的每一列方块作为一个元素,通过遍历垂直于高度方向的平面上的每个元素,得到所述样本建筑的列识别信息矩阵;其中,将元素识别信息矩阵和状态信息矩阵中的对应值均相同的两个元素归类为同一元素;
采样和约束分析模块,所述采样和约束分析模块用于对所述样本建筑的列识别信息矩阵进行下采样,得到若干个砖片,并得到所有砖片之间的关系矩阵;
约束满足问题求解模块,所述约束满足问题求解模块用于构建初始化的约束矩阵,根据所有砖片和所有砖片之间的关系矩阵,对所述初始化的约束矩阵进行求解,得到求解后的约束矩阵;
结果解析模块,所述结果解析模块用于基于所述求解后的约束矩阵,重构出目标建筑的元素识别信息矩阵和状态信息矩阵,以生成所述目标建筑。
9.一种电子设备,其特征在于,包括相互耦接的存储器和处理器,所述处理器用于执行所述存储器中存储的程序指令,以实现权利要求1至7任一项所述的体素建筑的生成方法。
10.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令被处理器执行时实现权利要求1至7任一项所述的体素建筑的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110357360.7A CN113117344B (zh) | 2021-04-01 | 2021-04-01 | 体素建筑的生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110357360.7A CN113117344B (zh) | 2021-04-01 | 2021-04-01 | 体素建筑的生成方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113117344A CN113117344A (zh) | 2021-07-16 |
CN113117344B true CN113117344B (zh) | 2023-07-18 |
Family
ID=76775457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110357360.7A Active CN113117344B (zh) | 2021-04-01 | 2021-04-01 | 体素建筑的生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113117344B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6198906B1 (en) * | 1996-10-07 | 2001-03-06 | Sony Corporation | Method and apparatus for performing broadcast operations |
US8587583B2 (en) * | 2011-01-31 | 2013-11-19 | Microsoft Corporation | Three-dimensional environment reconstruction |
CN111369681B (zh) * | 2020-03-02 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 三维模型的重构方法、装置、设备及存储介质 |
CN111402857B (zh) * | 2020-05-09 | 2023-11-21 | 广州虎牙科技有限公司 | 语音合成模型训练方法和装置、电子设备及存储介质 |
CN111681309B (zh) * | 2020-06-08 | 2023-07-25 | 北京师范大学 | 一种生成体素数据和边缘图像特征id矩阵的边缘计算平台 |
-
2021
- 2021-04-01 CN CN202110357360.7A patent/CN113117344B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113117344A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cao et al. | Adversarial objects against lidar-based autonomous driving systems | |
JP7125512B2 (ja) | オブジェクトのロード方法及び装置、記憶媒体、電子装置、並びにコンピュータプログラム | |
Giacomello et al. | Doom level generation using generative adversarial networks | |
Poullis et al. | Automatic reconstruction of cities from remote sensor data | |
CN109215123B (zh) | 基于cGAN的无限地形生成方法、系统、存储介质和终端 | |
CN105828081B (zh) | 编码方法及编码装置 | |
CN110598541A (zh) | 一种提取道路边缘信息的方法及设备 | |
Xiang et al. | 3d-aware image generation using 2d diffusion models | |
CN110673138B (zh) | 一种基于奇异值分解和模糊c均值法的探地雷达图像处理方法 | |
Jadhav et al. | Tile embedding: a general representation for level generation | |
US7486815B2 (en) | Method and apparatus for scene learning and three-dimensional tracking using stereo video cameras | |
CN113117344B (zh) | 体素建筑的生成方法、装置、电子设备及存储介质 | |
CN108986210B (zh) | 三维场景重建的方法和设备 | |
CN110135428A (zh) | 图像分割处理方法和装置 | |
CN114155551A (zh) | 基于YOLOv3改进的复杂环境下的行人检测方法及装置 | |
Peter et al. | From optimised inpainting with linear PDEs towards competitive image compression codecs | |
US7987250B2 (en) | Maximum clique in a graph | |
Swendsen et al. | Transition matrix Monte Carlo | |
CN111767640A (zh) | 一种目标近场雷达回波的快速仿真方法 | |
CN116011422A (zh) | 一种结构化表格数据生成方法和系统 | |
CN115828011A (zh) | 基于大数据的数据分析方法和平台 | |
CN115330930A (zh) | 基于稀疏到稠密特征匹配网络的三维重建方法和系统 | |
CN114615505A (zh) | 基于深度熵编码的点云属性压缩方法、装置和存储介质 | |
JP7056452B2 (ja) | シミュレーション装置、シミュレーション方法およびシミュレーションプログラム | |
CN113486879A (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 |