CN116036606A - 模型组件放置方法和装置、计算机存储介质、电子设备 - Google Patents

模型组件放置方法和装置、计算机存储介质、电子设备 Download PDF

Info

Publication number
CN116036606A
CN116036606A CN202310117027.8A CN202310117027A CN116036606A CN 116036606 A CN116036606 A CN 116036606A CN 202310117027 A CN202310117027 A CN 202310117027A CN 116036606 A CN116036606 A CN 116036606A
Authority
CN
China
Prior art keywords
component
reference component
target
model
width
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.)
Pending
Application number
CN202310117027.8A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202310117027.8A priority Critical patent/CN116036606A/zh
Publication of CN116036606A publication Critical patent/CN116036606A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/577Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5526Game data structure
    • 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
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本公开是关于一种模型组件放置方法和装置、计算机存储介质、电子设备,涉及计算机技术领域,该方法包括:获取目标基础模型,基于目标基础模型生成参照组件;获取与参照组件中的第一参照组件对应的包围盒,通过包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;获取并根据第一参照组件的目标宽度、第一实际宽度以及第二参照组件的第二实际宽度,对第一参照组件以及第二参照组件进行调整,得到目标参照组件;确定目标参照组件在虚拟空间中的位置,将位置确定为目标位置,获取与目标参照组件对应的目标模型组件,将目标模型组件放置在目标位置。本公开实现了模型中组件的迭代,同时提高了组件放置的效率。

Description

模型组件放置方法和装置、计算机存储介质、电子设备
背景技术
为了丰富游戏画面,在游戏中经常会有大量的多样性建筑,为了能在游戏中更好地复用游戏建筑资产,降低游戏消耗,建筑多采用墙体组件拼装的模式。
目前,在对建筑组件进行拼装、放置时,大多先用houdini(三维计算机图形软件)做一个建筑的基本形态,然后,基于该基本形态的拓扑结构进行组件放置,但是,一方面,在基于基本形态的拓扑结构进行组件放置时,当想要更改当前的放置结果,就需要回溯到上一步,即,需要对当前的放置结果进行全部删除,导致迭代困难;另一方面,当在引擎中对组件进行放置时,需要启动houdini,启动houdini需要消耗一定的时间,导致组件放置效率较低。
因此,需要提供一种新的模型组件放置方法。
需要说明的是,在上述背景技术部分发明的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种模型组件放置方法、模型组件放置装置、计算机可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的模型组件放置效率低以及迭代效率低的问题。
根据本公开的一个方面,提供一种模型组件放置方法,包括:
获取目标基础模型,基于所述目标基础模型生成参照组件;
获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;
获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;
确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
根据本公开的一个方面,提供一种模型组件放置装置,包括:
参照组件生成模块,用于获取目标基础模型,基于所述目标基础模型生成参照组件;
碰撞检测模块,用于获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;
目标参照组件生成模块,用于获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;
目标模型组件放置模块,用于确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
根据本公开的一个方面,提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一示例性实施例所述的模型组件放置方法。
根据本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任一示例性实施例所述的模型组件放置方法。
本公开实施例提供的一种模型组件放置方法,获取目标基础模型,基于所述目标基础模型生成参照组件;获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置;一方面,当获取到目标基础模型后,生成该目标基础模型的参照组件,当需要对目标基础模型的任一面的组件进行修改时,获取与该任一面对应的第一参照组件,通过该第一参照组件的包围盒,得到与该第一参照组件关联的第二参照组件,然后,获取第一参照组件的目标宽度,根据该第一参照组件的第一实际宽度以及该第二参照组件的第二实际宽度,对该第一参照组件以及该第二参照组件进行调整,得到目标参照组件,当生成该目标参照组件之后,获取该目标参照组件在虚拟空间中的位置,将该位置确定为目标位置,并获取与该目标参照组件对应的目标模型组件,将该目标模型组件放置在目标位置上,完成了对目标基础模型的任一面的组件的修改,解决了相关技术中当对任一面的组件进行修改时需要对当前的放置结果进行全部删除的问题,实现了对建筑中任一组件的迭代;另一方面,所有的逻辑都是在游戏引擎内完成的,降低了组件放置的时间,提升了组件放置的效率,同时提升了用户的操作体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出根据本发明示例实施例的一种模型组件放置方法的流程图。
图2示意性示出根据本发明示例实施例的一种获取引擎中的目标基础模型,基于目标基础模型生成参照组件的方法流程图。
图3示意性示出根据本发明示例实施例的一种获取与第一参照组件对应的包围盒,通过包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件的方法流程图。
图4示意性示出根据本发明示例实施例的一种对与第一参照组件关联的所有参照组件进行筛选,得到第二参照组件的方法流程图。
图5示意性示出根据本发明示例实施例的一种第二参照组件场景示意图。
图6示意性示出根据本发明示例实施例的一种在得到第二参照组件之后,模型组件放置方法的流程图。
图7示意性示出根据本公开示例实施例的一种当与第一参照组件关联的所有参照组件中包括与第一参照组件的朝向相反并存在重叠的第四参照组件时,模型组件放置方法的流程图。
图8示意性示出了根据本公开示例实施例的一种不同基础模型存在重叠的场景示意图。
图9示意性示出了根据本公开示例实施例的一种第一参照组件与第四参照组件之间重叠的场景示意图。
图10示意性示出了根据本公开示例实施例的一种不同基础模型存在重叠的场景示意图。
图11示意性示出了根据本公开示例实施例的一种第一参照组件与第四参照组件之间重叠的场景示意图。
图12示意性示出了根据本公开示例实施例的一种对第一参照组件以及第二参照组件进行调整,得到目标参照组件的方法流程图。
图13示意性示出了根据本公开示例实施例的一种模型组件放置的方法流程图。
图14示意性示出了根据本公开示例实施例的一种当第五参照组件跨越两个基础模型时,模型组件放置的方法流程图。
图15示意性示出了根据本公开示例实施例的一种参照组件跨越两个基础模型的场景示意图。
图16示意性示出根据本发明示例实施例的一种模型组件放置装置的框图。
图17示意性示出根据本发明示例实施例的用于实现上述模型组件放置方法的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本发明的各方面变得模糊。
此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
在游戏中为了能更好的复用游戏资产,降低游戏消耗,多采用组件拼装。即,可以将建筑拆分成多个组件,在需要生成建筑时,可以对多个组件按照一定的规律进行组合,进而生成建筑,而该建筑的形状是比较规则的。上述通过多个组件的组合生成的建筑,降低了生成建筑的资源消耗,但是,缺乏一定的灵活性。
为了解决组合组件缺乏灵活性的问题,相关技术中,在生成建筑时首先在houdini中生成建筑的基础形态,基于该基础形态的拓扑结构,来放置组件。但是,基于拓扑结构放置组件时,一方面,需要启动houdini,而启动该houdini需要消耗一定的时间;另一方面,在生成建筑时是批量生成的,当需要对建筑中的任一组件进行迭代时,必须批量删除所有的结果,导致对组件的迭代困难;再一方面,在生成建筑时需要在houdini中输入模型,该模型可以在引擎中,也可以在houdini中,但是,当模型在引擎中时,该模型会与houdini产生强关联,随意将模型移动会导致循环引用并引起引擎崩溃,切断关联又会导致组件无法迭代;当模型在houdini中时,由于houdini的操作困难性以及无参照物,使得用户难以操作;又一方面,对模型放置组件是在houdini中完成的,但是,所有的组件资产都保存在引擎内,在houdini中选择组件时可以通过以下两种方式完成:将组件的信息输入至houdini、将所有的组件放置在houdini,但是,将组件的信息输入至houdini,当组件名称发生改变或者组件位置发生改变时,组件信息的更新需要耗费大量的人力,并且无法得知组件的确切信息,即,网格中点线面在三维空间中的具体分布以及它们之间的关系;将所有的组件都放置在houdini内时,houdini与引擎需要进行大量的数据交换,需要耗费大量的时间,并且houdini与引擎都需要付出更多的资产管理成本。
基于上述一个或者多个问题,本示例实施方式中首先提供了一种模型组件放置方法,该方法可以运行于设备终端,该设备终端可以包括台式计算机、便携式计算机、智能手机和平板电脑等等;当然,本领域技术人员也可以根据需求在其他平台运行本发明的方法,本示例性实施例中对此不做特殊限定。参考图1所示,该模型组件放置方法可以包括以下步骤:
步骤S110.获取目标基础模型,基于所述目标基础模型生成参照组件;
步骤S120.获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;
步骤S130.获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;
步骤S140.确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
上述模型组件放置方法,获取目标基础模型,基于所述目标基础模型生成参照组件;获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置;一方面,当获取到目标基础模型后,生成该目标基础模型的参照组件,当需要对目标基础模型的任一面的组件进行修改时,获取与该任一面对应的第一参照组件,通过该第一参照组件的包围盒,得到与该第一参照组件关联的第二参照组件,然后,获取第一参照组件的目标宽度,根据该第一参照组件的第一实际宽度以及该第二参照组件的第二实际宽度,对该第一参照组件以及该第二参照组件进行调整,得到目标参照组件,当生成该目标参照组件之后,获取该目标参照组件在虚拟空间中的位置,将该位置确定为目标位置,并获取与该目标参照组件对应的目标模型组件,将该目标模型组件放置在目标位置上,完成了对目标基础模型的任一面的组件的修改,解决了相关技术中当对任一面的组件进行修改时需要对当前的放置结果进行全部删除的问题,实现了对建筑中任一组件的迭代;另一方面,所有的逻辑都是在游戏引擎内完成的,降低了组件放置的时间,提升了组件放置的效率,同时提升了用户的操作体验。
以下,对本公开示例实施例的模型组件放置方法中涉及的各步骤进行详细的解释以及说明。
首先,对本公开示例实施例的应用场景以及目的进行解释以及说明。具体的,本公开示例实施例可以应用于对游戏建筑中任一建筑组件进行迭代,主要研究如何实现对建筑组件的迭代以及如何提高建筑组件的放置效率。
在本公开中以目标基础模型为基础,当需要对目标基础模型中的任一面的建筑组件进行修改时,生成该目标基础模型的参照组件,确定与需要修改的建筑组件对应的参照组件中的第一参照组件,然后,在参照组件中进行遍历,找到与第一参照组件关联的第二参照组件;获取该第一参照组件的目标宽度,该第一参照组件的第一实际宽度、该第二参照组件的第二实际宽度,根据该目标宽度、第一实际宽度以及第二实际宽度对第一参照组件以及第二参照组件进行调整,得到目标参照组件;当得到目标参照组件之后,确定该目标参照组件在虚拟空间中的位置,将该位置确定为目标位置,当确定好目标位置后,获取与目标参照组件对应的目标模型组件,并将该目标模型组件放置在该目标位置。
其次,对本公开示例实施例的步骤S110-步骤S140进行解释以及说明。
在步骤S110中,获取目标基础模型,基于所述目标基础模型生成参照组件。
其中,目标基础模型可以位于引擎中,引擎为游戏引擎,游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,引擎可以为Unity3D引擎,也可以为UNREAL(虚幻)引擎,在本示例实施例中对游戏引擎不做具体限定。目标基础模型为游戏引擎中用于确定建筑的尺寸和位置的模型,该目标基础模型未被模型组件资产覆盖。参照组件是与模型组件不同的组件,通过模型组件生成建筑时,该模型组件是可见的;而参照组件是只存在体积,当生成建筑时,该参照组件不可见,当需要可见时,可以在参照组件的位置放置模型组件。
在本示例实施例中,参考图2所示,获取目标基础模型,基于所述目标基础模型生成参照组件,可以包括:
步骤S210.获取第一基础模型、所述第一基础模型的尺寸以及所述参照组件的预设宽度,根据所述预设宽度对所述第一基础模型的尺寸进行调整,得到所述目标基础模型;
步骤S220.获取所述目标基础模型中包括的模型面数,根据所述模型面数生成与所述目标基础模型的每个模型面对应的参照组件;
步骤S230.将所述目标基础模型标记为已生成参照组件,并对所述目标基础模型进行隐藏。
以下,将对步骤S210-步骤S230进行进一步的解释以及说明。具体的,首先,获取游戏引擎中需要修改的第一基础模型、该第一基础模型的尺寸以及参照组件的预设宽度,其中,该参照组件的预设宽度为基础宽度,生成建筑的组件的宽度均为该预设宽度的倍数,任何大于该预设宽度的参照组件都可以根据该预设宽度拆分,该预设宽度可以为1米,也可以为1.5米,在本示例实施例中对预设宽度不做具体限定。当得到参照组件的预设宽度之后,可以根据该预设宽度对第一基础模型的尺寸进行调整,其中,第一基础模型的尺寸可以为该第一基础模型的宽度,可以将第一基础模型的宽度调整成为该预设宽度的倍数,将调整完宽度的第一基础模型确定为目标基础模型。当确定目标基础模型之后,可以获取目标基础模型中包括的面数,根据该面数生成与目标基础模型中每个面对应的参照组件。最后,当生成参照组件之后,可以将该目标基础模型标记为已生成参照组件,并对该目标基础模型进行隐藏。
举例而言,在本示例实施例中,当预设宽度为1.5米,参照组件的宽度为6米时,可以将该参照组件拆分为2个宽度为3米的组件,也可以将参照组件拆分为4个宽度为1.5米组件,在本示例实施例中对拆分不做具体限定。
在本示例实施例中,由于模型组件的拓扑结构是不可预知的,若通过不可预知的模型组件在游戏引擎中进行碰撞检测时,会导致检测结果不准确,因此,基于目标模型生成参照组件,通过参照组件进行碰撞检测,消除了检测的不确定性。
在步骤S120中,获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件。
在本示例实施例中,当获取到目标基础模型的每个面对应的参照组件之后,当需要对目标基础模型的任一面的尺寸进行修改时,可以获取与该面对应的第一参照组件,通过该第一参照组件实现对目标基础模型的任一面的修改。
参考图3所示,获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件,可以包括:
步骤S310.获取预设扩大高度以及所述第一参照组件的缩放高度,基于所述扩大高度对所述第一参照组件的缩放高度进行扩大;
步骤S320.生成扩大缩放高度后的所述第一参照组件的包围盒,根据所述包围盒进行碰撞检测,得到与所述第一参照组件关联的所有参照组件;
步骤S330.对与所述第一参照组件关联的所有参照组件进行筛选,得到所述第二参照组件。
以下,将对步骤S310-步骤S330进行进一步的解释以及说明。具体的,当获取到第一参照组件之后,可以获取预设扩大高度以及该第一参照组件的缩放高度,通过该预设扩大高度对第一参照组件的缩放高度进行扩大,即,在第一参照组件的缩放高度的基础上增加该预设扩大高度;当对第一参照组件的缩放高度进行扩大之后,可以基于扩大缩放高度的第一参照组件生成该第一参照组件的包围盒,通过该第一参照组件的包围盒与引擎中包括的其他参照组件的包围盒进行碰撞检测,得到与该第一参照组件关联的所有的参照组件,当得到所有的与第一参照组件关联的参照组件之后,可以对所有与第一参照组件有关联的参照组件进行筛选,得到第二参照组件。其中,预设扩大高度的值可以为0.1米,也可以为0.05米,在本示例实施例中对此不做具体限定;包围盒是一种求解离散点集最优包围空间的算法,基本思想是用提及稍大且特性简单的结合体来近似地代替复杂的集合对象。碰撞检测是用来确定引擎中与第一参照组件有交集的参照组件,在本示例实施例中,对碰撞检测的算法不做具体限定。
进一步的,参考图4所示,对与所述第一参照组件关联的所有参照组件进行筛选,得到所述第二参照组件,可以包括:
步骤S410.获取所述第一参照组件的组件高度、缩放高度以及朝向;
步骤S420.根据所述第一参照组件的组件高度、缩放高度以及朝向对所述所有参照组件进行筛选,得到所述组件高度、所述缩放高度以及所述朝向均与所述第一参照组件相同的第二参照组件。
以下,将对步骤S410、步骤S420进行进一步的解释以及说明。具体的,在对与第一参照组件关联的所有参照组件进行筛选时,首先,获取该第一参照组件的组件高度、缩放高度以及该第一参照组件的朝向;同时还需要获取所有与第一参照组件关联的参照组件的组件高度、缩放高度以及朝向;然后,将与第一参照组件的组件高度相同、缩放高度相同以及朝向一致的参照组件确定为第二参照组件。其中,在确定参照组件的朝向时,可以先确定与该参照组件对应的基础模型,而该参照组件的朝向为从基础模型的中心指向该参照组件的中心的方向。
举例而言,参照图5所示的第二参照组件以及第三参照组件的示意图,当通过组件高度、缩放高度以及朝向对与第一参照组件501关联的所有参照组件进行筛选时,得到的与第一参照组件的组件高度相同、缩放高度相同以及朝向一致的第二参照组件502时,该第二参照组件502为与该第一参照组件501相邻的多个参照组件。
在本示例实施例中,为了保证第一参照组件调整的正确性以及效率,在得到第二参照组件之后,还可以在引擎中对参照组件再次进行遍历,得到与第二参照组件关联的第三参照组件,参考图6所示,在得到所述第二参照组件之后,所述模型组件放置方法还可以包括:
步骤S610.获取与所述第二参照组件对应的第二包围盒,通过所述第二包围盒进行碰撞检测,得到与所述第二参照组件关联的所有参照组件;
步骤S620.根据所述第二参照组件的组件高度、缩放高度以及朝向对与所述第二参照组件关联的所有参照组件进行筛选,得到第三参照组件。
以下,将对步骤S610、步骤S620进行进一步的解释以及说明。具体的,当要在引擎中遍历找到与第二参照组件关联的第三参照组件时,可以首先获取与第二参照组件对应的第二包围盒,利用该第二包围盒与引擎中包括的参照组件的包围盒进行碰撞检测,得到引擎中与第二参照组件关联的所有的参照组件;然后,用第二参照组件的组件高度、缩放高度以及朝向对与第二参照组件关联的所有参照组件进行筛选,得到第三参照组件。其中,生成第二参照组件的包围盒的方法与生成第一参照组件的包围盒的方法相同,此处不再赘述。
再进一步的,在本示例实施例中,当获取到引擎中与第一参照组件关联的所有参照组件之后,该所有参照组件中可能会存在与该第一参照组件朝向相反,但是存在重叠的第四参照组件,参考图7所示,当与所述第一参照组件关联的所有参照组件中包括与所述第一参照组件的朝向相反并存在重叠的第四参照组件时,所述模型组件放置方法还可以包括:
步骤S710.当所述第四参照组件的组件高度与所述第一参照组件的组件高度相同时,获取所述第一参照组件与所述第四参照组件之间的第一重叠部分;
步骤S720.根据所述第一重叠部分对所述第一参照组件、所述第四参照组件进行拆分,得到第一重叠组件以及第二重叠组件;
步骤S730.将所述第一重叠组件以及所述第二重叠组件标记为重叠组件,并对所述第一重叠组件以及所述第二重叠组件进行隐藏。
以下,将对步骤S710-步骤S730进行进一步的解释以及说明。具体的,当第四参照组件的组件高度与第一参照组件的组件高度相同时,可以获取该第一参照组件与该第四参照组件之间的第一重叠部分;然后,根据该第一重叠部分对第一参照组件、第三参照组件进行拆分,得到第一重叠组件以及第二重叠组件,其中,该第一重叠组件为第一参照组件中拆分出来的重叠部分,第二重叠组件为第四参照组件中拆分出来的重叠部分;当获取到第一重叠组件以及第二重叠组件之后,可以将该第一重叠组件以及该第二重叠组件标记为重叠组件,并对该第一重叠组件以及该第二重叠组件进行隐藏。在本示例实施例中,通过对重叠组件的隐藏,保证了通过基础模型生成建筑时,该两个建筑内部的联通。
举例而言,参考图8所示,在图8中包括基础模型801、基础模型802,且基础模型801与基础模型802中存在重叠,参考图9所示,该存在重叠的具体为基础模型801的参照组件901与基础模型802的参照组件902之间的重叠,此时,可以通过重叠部分对参照组件901进行拆分,得到第一重叠组件,对参照组件902进行拆分,得到第二重叠组件。
在本示例实施例中还存在第二参照组件与第一参照组件的组件高度不同、朝向相反的情况,当与所述第一参照组件关联的所有参照组件中包括与所述第一参照组件的朝向相反并存在重叠的第四参照组件时,所述模型组件放置方法还可以包括:
当所述第四参照组件的组件高度与所述第一参照组件的组件高度不相同时,获取所述第一参照组件与所述第四参照组件之间的第二重叠部分;
根据所述第二重叠部分,对所述第一参照组件以及所述第四参照组件中组件高度较高的参照组件进行拆分,得到第一拆分组件以及第二拆分组件,其中,所述第二拆分组件中包括所述第二重叠部分;
根据所述第二重叠部分对所述第二拆分组件再次进行拆分,得到第三重叠组件;
根据所述第二重叠部分对所述第一参照组件以及所述第四参照组件中组件高度较低的参照组件进行拆分,得到第四重叠组件;
将所述第三重叠组件以及所述第四重叠组件标记为重叠组件,并对所述第三重叠组件以及所述第四重叠组件进行隐藏。
以下,将进行进一步的解释以及说明。具体的,当第一参照组件的组件高度与第四参照组件的组件高度不同时,可以获取该第一参照组件与第四参照组件之间的第二重叠部分,根据该第二重叠部分,对第一参照组件以及第四参照组件中,组件高度较高的参照组件进行拆分,得到第一拆分组件以及第二拆分组件,其中,第二拆分组件中包括该第二重叠部分,然后对该第二拆分组件再次进行拆分,得到第三重叠组件;还需要根据该第二重叠部分对第一参照组件以及第四参照组件中组件高度较低的参照组件进行拆分,得到第四重叠组件;当得到第三重叠组件以及第四重叠组件之后,可以将该第三重叠组件以及该第四重叠组件标记为重叠组件,并对该第三重叠组件以及该第四重叠组件进行隐藏。
举例而言,参考图10,在该图10中包括基础模型1001、基础模型1002,基础模型1001的模型高度要高于基础模型1002且基础模型1001与基础模型1002中存在重叠;参考图11所示,该第二重叠部分具体为基础模型1001的参照组件1101与基础模型1002的参照组件1102之间的重叠,由于参照组件1101的组件高度高于参照组件1102的组件高度,因此,在对参照组件1101进行拆分时,要先将该参照组件1101拆分为第一拆分组件1103以及第二拆分组件1104,该第二拆分组件1104中包括第二重叠部分,因此,再根据该第二重叠部分对第二拆分组件1104进行拆分,得到第三重叠组件;同时,由于参照组件1102的组件高度较低,因此,可以直接根据第二重叠部分对该参照组件1102进行拆分,得到第四重叠组件。
在步骤S130中,获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件。
在本示例实施例中,当得到与第一参照组件关联的第二参照组件之后,可以根据第一参照组件以及第二参照组件对第一参照组件进行调整,参考图12所示,获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件,可以包括:
步骤S1210.根据所述第一实际宽度、所述第二实际宽度,得到所述第一参照组件以及所述第二参照组件的实际宽度和;
步骤S1220.在确定所述实际宽度和与所述目标宽度相等时,删除所述第二参照组件,将所述第一参照组件的宽度调整为所述目标宽度,得到所述目标参照组件;
步骤S1230.在确定所述实际宽度和大于所述目标宽度时,根据所述预设宽度对所述第二参照组件进行拆分,得到拆分组件,在所述第一参照组件的实际宽度与所述拆分组件中的第三拆分组件的实际宽度的实际宽度和与所述目标宽度相等时,删除所述第三拆分组件,并将所述第一参照组件的宽度调整为所述目标宽度,得到所述目标参照组件;
步骤S1240.在确定所述实际宽度和小于所述目标宽度时,搜索得到第四参照组件,其中,所述第四参照组件的实际宽度与所述第一参照组件的实际宽度的实际宽度和为所述目标宽度。
以下,将对步骤S1210-步骤S1240进行进一步的解释以及说明。具体的,当获取到第一参照组件的第一实际宽度以及第二参照组件的第二实际宽度之后,可以根据第一实际宽度以及第二实际宽度得到实际宽度和;然后,利用该实际宽度和与目标宽度进行比较。当实际宽度和与目标宽度相等时,可以删除第二参照组件,将该第一参照组件的宽度调整为目标宽度,得到目标参照组件;当实际宽度和大于目标宽度时,可以根据目标宽度对该第二参照组件进行拆分,得到拆分组件,当第一参照组件的第一实际宽度与拆分组件中的第三拆分组件的实际宽度的实际宽度和等于目标宽度时,删除该第三拆分组件,并将第一拆分组件的宽度调整为目标宽度,得到目标参照组件;当实际宽度和小于目标宽度时,可以在引擎中进行搜索得到第四参照组件,该第四参照组件的实际宽度与第一参照组件的第一实际宽度的实际宽度和,应该与目标宽度相等,当引擎中不存在第四参照组件时,可以直接返回参照组件宽度不够。
举例而言,当第一参照组件的实际宽度为3米,目标宽度为9米,参照组件的预设宽度为3米时,当第二参照组件的实际宽度正好为6米,可以直接将该第二参照组件删除,并将该第一参照组件的组件宽度调整为9米;当第二参照组件的实际宽度大于6米时,可以根据预设宽度3米将该第二参照组件拆分成1个宽度为6米的参照组件,另一个宽度较小的参照组件,然后将宽度为6米的参照组件删除,并将该第一参照组件的组件宽度调整为9米;当第二参照组件的实际宽度小于6米时,可以在引擎中进行递归寻找,知道找到实际宽度大于等于6米的第四参照组件,否在,返回参照组件宽度不够的信息。
在本示例实施例中,在游戏建筑中,可以对建筑的形态进行自由调整,因此,除了对建筑扩大外,也需要对建筑的任一面进行减小,当需要对建筑的任一面进行减小时,需要先将该面对应的参照组件还原为目标基础模型,再对该目标基础模型进行缩放。
参考图13所示,所述模型组件放置方法还可以包括:
步骤S1310.获取标记为已生成参照组件的所述目标基础模型,确定所述目标基础模型的包围盒,通过所述目标基础模型的包围盒进行碰撞检测,得到与所述目标基础模型对应的生成参照组件;
步骤S1320.获取所述生成参照组件的第一朝向以及所述目标基础模型的中心指向所述生成参照组件的第二朝向,通过所述第一朝向与第二朝向的点乘,筛选出所述生成参照组件中的第五参照组件;
步骤S1330.对所述第五参照组件进行删除。
以下,将对步骤S1310-步骤S1330进行进一步的解释以及说明。具体的,首先,获取已经被标记为已生成参照组件的目标基础模型,确定该目标基础模型的包围盒,通过该目标基础模型的包围盒在引擎中进行碰撞检测,得到引擎中与该目标基础模型关联的所有的生成参照组件;然后,获取生成参照组件的第一朝向Dir1以及目标基础模型的中心指向生成参照组件的组件中心的第二朝向Dir2,并对该第一朝向Dir1以及该第二朝向Dir2进行点乘,当点乘结果大于0时,则确定该生成参照组件为第五参照组件,并对该第五参照组件进行删除,其中,参照组件的朝向为该参照组件所在的基础模型的中心指向该参照组件的组件中心的方向。
在本示例实施例中,当对与目标基础模型对应的参照组件进行删除之后,引擎中就不存在根据该目标基础模型生成的参照组件,则可以对该目标基础模型的任一面进行缩放。
在本示例实施例中,当在引擎中得到与目标基础模型关联的所有生成参照组件中存在第五参照组件,而该第五参照组件跨越两个基础模型时,参考图14所示,模型组件放置方法还可以包括:
步骤S1410.获取与所述第五参照组件对应的目标基础模型、第二目标基础模型、所述目标基础模型的模型宽度以及所述第二目标基础模型的模型宽度;
步骤S1420.根据所述目标基础模型的模型宽度对所述第五参照组件进行拆分,得到第四拆分组件以及第五拆分组件,其中,所述第四拆分组件的组件宽度与所述目标基础模型的模型宽度相等;
步骤S1430.对所述第四拆分组件进行删除。
以下,将对步骤S1410-步骤S1430进行进一步的解释以及说明。具体的,首先,获取第五参照组件跨越的目标基础模型、另一目标基础模型,以及目标基础模型的模型宽度以及另一目标基础模型的模型宽度;然后,根据目标基础模型的模型宽度对该第五参照组件进行拆分,得到第四拆分组件以及第五拆分组件,其中,该第四拆分组件的组件宽度与该目标基础模型的模型宽度相等;最后,对该第四拆分组件进行删除。
举例而言,参考图15,在图15中包括目标基础模型1501、第二目标基础模型1502,其中该目标基础模型1501的参照组件1503跨越了目标基础模型1501,延长至第二目标基础模型1502,当直接对目标基础模型1501进行还原时,即,直接删除参照组件1503会导致第二目标基础模型产生空洞,因此,可以根据目标基础模型1501的模型宽度对该参照组件1503进行删除,得到第四拆分组件以及第五拆分组件,该第四拆分组件的组件宽度与目标基础模型1501的模型宽度,因此,可以直接对该第四拆分组件删除。
在步骤S140中,确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
在本示例实施例中,当对第一参照组件进行调整,得到目标参照组件之后,可以在虚拟空间中确定该目标参照组件的位置,将该目标参照组件在游戏引擎的虚拟空间中的位置确定为目标位置;然后,根据该目标参照组件的组件宽度在引擎中确定与该目标组件的组件宽度一致的目标模型组件,并将该目标模型组件放置在该目标位置。
本公开示例实施例提供的模型组件放置方法至少具有以下优点:一方面,当获取到引擎中的目标基础模型后,生成该目标基础模型的参照组件,当需要对目标基础模型的任一面的组件进行修改时,获取与该任一面对应的第一参照组件,通过该第一参照组件的包围盒,得到与该第一参照组件关联的第二参照组件,然后,获取第一参照组件的目标宽度,根据该第一参照组件的第一实际宽度以及该第二参照组件的第二实际宽度,对该第一参照组件以及该第二参照组件进行调整,得到目标参照组件,当生成该目标参照组件之后,获取该目标参照组件在引擎的虚拟空间中的位置,将该位置确定为目标位置,并获取引擎中与该目标参照组件对应的目标模型组件,将该目标模型组件放置在目标位置上,完成了对目标基础模型的任一面的组件的修改,解决了相关技术中当对任一面的组件进行修改时需要对当前的放置结果进行全部删除的问题,实现了对建筑中任一组件的迭代;另一方面,所有的逻辑都是在游戏引擎内完成的,降低了组件放置的时间,提升了组件放置的效率,同时提升了用户的操作体验。
本公开示例实施例还提供了一种模型组件放置装置,参考图16所示,可以包括:参照组件生成模块1610、碰撞检测模块1620、目标参照组件生成模块1630以及目标模型组件放置模块1640。其中:
参照组件生成模块1610,用于获取目标基础模型,基于所述目标基础模型生成参照组件;
碰撞检测模块1620,用于获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;
目标参照组件生成模块1630,用于获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;
目标模型组件放置模块1640,用于确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
上述模型组件放置装置中各模块的具体细节已经在对应的模型组件放置方法中进行了详细的描述,因此此处不再赘述。
在本公开的一种示例性实施例中,获取目标基础模型,基于所述目标基础模型生成参照组件,包括:
获取第一基础模型、所述第一基础模型的尺寸以及所述参照组件的预设宽度,根据所述预设宽度对所述第一基础模型的尺寸进行调整,得到所述目标基础模型;
获取所述目标基础模型中包括的模型面数,根据所述模型面数生成与所述目标基础模型的每个模型面对应的参照组件;
将所述目标基础模型标记为已生成参照组件,并对所述目标基础模型进行隐藏。
在本公开的一种示例性实施例中,获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件,包括:
获取预设扩大高度以及所述第一参照组件的缩放高度,基于所述扩大高度对所述第一参照组件的缩放高度进行扩大;
生成扩大缩放高度后的所述第一参照组件的包围盒,根据所述包围盒进行碰撞检测,得到与所述第一参照组件关联的所有参照组件;
对与所述第一参照组件关联的所有参照组件进行筛选,得到所述第二参照组件。
在本公开的一种示例性实施例中,对与所述第一参照组件关联的所有参照组件进行筛选,得到所述第二参照组件,包括:
获取所述第一参照组件的组件高度、缩放高度以及朝向;
根据所述第一参照组件的组件高度、缩放高度以及朝向对所述所有参照组件进行筛选,得到所述组件高度、所述缩放高度以及所述朝向均与所述第一参照组件相同的第二参照组件。
在本公开的一种示例性实施例中,在得到所述第二参照组件之后,所述模型组件放置方法还包括:
获取与所述第二参照组件对应的第二包围盒,通过所述第二包围盒进行碰撞检测,得到与所述第二参照组件关联的所有参照组件;
根据所述第二参照组件的组件高度、缩放高度以及朝向对与所述第二参照组件关联的所有参照组件进行筛选,得到第三参照组件。
在本公开的一种示例性实施例中,当与所述第一参照组件关联的所有参照组件中包括与所述第一参照组件的朝向相反并存在重叠的第四参照组件时,所述模型组件放置方法还包括:
当所述第四参照组件的组件高度与所述第一参照组件的组件高度相同时,获取所述第一参照组件与所述第四参照组件之间的第一重叠部分;
根据所述第一重叠部分对所述第一参照组件、所述第四参照组件进行拆分,得到第一重叠组件以及第二重叠组件;
将所述第一重叠组件以及所述第二重叠组件标记为重叠组件,并对所述第一重叠组件以及所述第二重叠组件进行隐藏。
在本公开的一种示例性实施例中,当与所述第一参照组件关联的所有参照组件中包括与所述第一参照组件的朝向相反并存在重叠的第四参照组件时,所述模型组件放置方法还包括:
当所述第四参照组件的组件高度与所述第一参照组件的组件高度不相同时,获取所述第一参照组件与所述第四参照组件之间的第二重叠部分;
根据所述第二重叠部分,对所述第一参照组件以及所述第四参照组件中组件高度较高的参照组件进行拆分,得到第一拆分组件以及第二拆分组件,其中,所述第二拆分组件中包括所述第二重叠部分;
根据所述第二重叠部分对所述第二拆分组件再次进行拆分,得到第三重叠组件;
根据所述第二重叠部分对所述第一参照组件以及所述第四参照组件中组件高度较低的参照组件进行拆分,得到第四重叠组件;
将所述第三重叠组件以及所述第四重叠组件标记为重叠组件,并对所述第三重叠组件以及所述第四重叠组件进行隐藏。
在本公开的一种示例性实施例中,获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件,包括:
根据所述第一实际宽度、所述第二实际宽度,得到所述第一参照组件以及所述第二参照组件的实际宽度和;
在确定所述实际宽度和与所述目标宽度相等时,删除所述第二参照组件,将所述第一参照组件的宽度调整为所述目标宽度,得到所述目标参照组件;
在确定所述实际宽度和大于所述目标宽度时,根据所述预设宽度对所述第二参照组件进行拆分,得到拆分组件,在所述第一参照组件的实际宽度与所述拆分组件中的第三拆分组件的实际宽度的实际宽度和与所述目标宽度相等时,删除所述第三拆分组件,并将所述第一参照组件的宽度调整为所述目标宽度,得到所述目标参照组件;
在确定所述实际宽度和小于所述目标宽度时,搜索得到第四参照组件,其中,所述第四参照组件的实际宽度与所述第一参照组件的实际宽度的实际宽度和为所述目标宽度。
在本公开的一种示例性实施例中,所述模型组件放置方法还包括:
获取标记为已生成参照组件的所述目标基础模型,确定所述目标基础模型的包围盒,通过所述目标基础模型的包围盒进行碰撞检测,得到与所述目标基础模型对应的生成参照组件;
获取所述生成参照组件的第一朝向以及所述目标基础模型的中心指向所述生成参照组件的第二朝向,通过所述第一朝向与第二朝向的点乘,筛选出所述生成参照组件中的第五参照组件;
对所述第五参照组件进行删除。
在本公开的一种示例性实施例中,当所述第五参照组件跨越两个基础模型时,所述模型组件放置方法还包括:
获取与所述第五参照组件对应的目标基础模型、第二目标基础模型、所述目标基础模型的模型宽度以及所述第二目标基础模型的模型宽度;
根据所述目标基础模型的模型宽度对所述第五参照组件进行拆分,得到第四拆分组件以及第五拆分组件,其中,所述第四拆分组件的组件宽度与所述目标基础模型的模型宽度相等;
对所述第四拆分组件进行删除。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
在本发明的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图17来描述根据本发明的这种实施方式的电子设备1700。图17显示的电子设备1700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图17所示,电子设备1700以通用计算设备的形式表现。电子设备1700的组件可以包括但不限于:上述至少一个处理单元1710、上述至少一个存储单元1720、连接不同系统组件(包括存储单元1720和处理单元1710)的总线1730以及显示单元1740。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1710执行,使得所述处理单元1710执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元1710可以执行如图1中所示的步骤S110:获取目标基础模型,基于所述目标基础模型生成参照组件;S120:获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;S130:获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;S140:确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
存储单元1720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)17201和/或高速缓存存储单元17202,还可以进一步包括只读存储单元(ROM)17203。
存储单元1720还可以包括具有一组(至少一个)程序模块17205的程序/实用工具17204,这样的程序模块17205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1700也可以与一个或多个外部设备1800(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1700交互的设备通信,和/或与使得该电子设备1700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1750进行。并且,电子设备1700还可以通过网络适配器1760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1760通过总线1730与电子设备1700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本发明实施方式的方法。
在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其他实施例。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。

Claims (13)

1.一种模型组件放置方法,其特征在于,包括:
获取目标基础模型,基于所述目标基础模型生成参照组件;
获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;
获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;
确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
2.根据权利要求1所述的模型组件放置方法,其特征在于,获取目标基础模型,基于所述目标基础模型生成参照组件,包括:
获取第一基础模型、所述第一基础模型的尺寸以及所述参照组件的预设宽度,根据所述预设宽度对所述第一基础模型的尺寸进行调整,得到所述目标基础模型;
获取所述目标基础模型中包括的模型面数,根据所述模型面数生成与所述目标基础模型的每个模型面对应的参照组件;
将所述目标基础模型标记为已生成参照组件,并对所述目标基础模型进行隐藏。
3.根据权利要求2所述的模型组件放置方法,其特征在于,获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件,包括:
获取预设扩大高度以及所述第一参照组件的缩放高度,基于所述扩大高度对所述第一参照组件的缩放高度进行扩大;
生成扩大缩放高度后的所述第一参照组件的包围盒,根据所述包围盒进行碰撞检测,得到与所述第一参照组件关联的所有参照组件;
对与所述第一参照组件关联的所有参照组件进行筛选,得到所述第二参照组件。
4.根据权利要求3所述的模型组件放置方法,其特征在于,对与所述第一参照组件关联的所有参照组件进行筛选,得到所述第二参照组件,包括:
获取所述第一参照组件的组件高度、缩放高度以及朝向;
根据所述第一参照组件的组件高度、缩放高度以及朝向对所述所有参照组件进行筛选,得到所述组件高度、所述缩放高度以及所述朝向均与所述第一参照组件相同的第二参照组件。
5.根据权利要求4所述的模型组件放置方法,其特征在于,在得到所述第二参照组件之后,所述模型组件放置方法还包括:
获取与所述第二参照组件对应的第二包围盒,通过所述第二包围盒进行碰撞检测,得到与所述第二参照组件关联的所有参照组件;
根据所述第二参照组件的组件高度、缩放高度以及朝向对与所述第二参照组件关联的所有参照组件进行筛选,得到第三参照组件。
6.根据权利要求4所述的模型组件放置方法,其特征在于,当与所述第一参照组件关联的所有参照组件中包括与所述第一参照组件的朝向相反并存在重叠的第四参照组件时,所述模型组件放置方法还包括:
当所述第四参照组件的组件高度与所述第一参照组件的组件高度相同时,获取所述第一参照组件与所述第四参照组件之间的第一重叠部分;
根据所述第一重叠部分对所述第一参照组件、所述第四参照组件进行拆分,得到第一重叠组件以及第二重叠组件;
将所述第一重叠组件以及所述第二重叠组件标记为重叠组件,并对所述第一重叠组件以及所述第二重叠组件进行隐藏。
7.根据权利要求4所述的模型组件放置方法,其特征在于,当与所述第一参照组件关联的所有参照组件中包括与所述第一参照组件的朝向相反并存在重叠的第四参照组件时,所述模型组件放置方法还包括:
当所述第四参照组件的组件高度与所述第一参照组件的组件高度不相同时,获取所述第一参照组件与所述第四参照组件之间的第二重叠部分;
根据所述第二重叠部分,对所述第一参照组件以及所述第四参照组件中组件高度较高的参照组件进行拆分,得到第一拆分组件以及第二拆分组件,其中,所述第二拆分组件中包括所述第二重叠部分;
根据所述第二重叠部分对所述第二拆分组件再次进行拆分,得到第三重叠组件;
根据所述第二重叠部分对所述第一参照组件以及所述第四参照组件中组件高度较低的参照组件进行拆分,得到第四重叠组件;
将所述第三重叠组件以及所述第四重叠组件标记为重叠组件,并对所述第三重叠组件以及所述第四重叠组件进行隐藏。
8.根据权利要求2所述的模型组件放置方法,其特征在于,获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件,包括:
根据所述第一实际宽度、所述第二实际宽度,得到所述第一参照组件以及所述第二参照组件的实际宽度和;
在确定所述实际宽度和与所述目标宽度相等时,删除所述第二参照组件,将所述第一参照组件的宽度调整为所述目标宽度,得到所述目标参照组件;
在确定所述实际宽度和大于所述目标宽度时,根据所述预设宽度对所述第二参照组件进行拆分,得到拆分组件,在所述第一参照组件的实际宽度与所述拆分组件中的第三拆分组件的实际宽度的实际宽度和与所述目标宽度相等时,删除所述第三拆分组件,并将所述第一参照组件的宽度调整为所述目标宽度,得到所述目标参照组件;
在确定所述实际宽度和小于所述目标宽度时,搜索得到第四参照组件,其中,所述第四参照组件的实际宽度与所述第一参照组件的实际宽度的实际宽度和为所述目标宽度。
9.根据权利要求2所述的模型组件放置方法,其特征在于,所述模型组件放置方法还包括:
获取标记为已生成参照组件的所述目标基础模型,确定所述目标基础模型的包围盒,通过所述目标基础模型的包围盒进行碰撞检测,得到与所述目标基础模型对应的生成参照组件;
获取所述生成参照组件的第一朝向以及所述目标基础模型的中心指向所述生成参照组件的第二朝向,通过所述第一朝向与第二朝向的点乘,筛选出所述生成参照组件中的第五参照组件;
对所述第五参照组件进行删除。
10.根据权利要求9所述的模型组件放置方法,其特征在于,当所述第五参照组件跨越两个基础模型时,所述模型组件放置方法还包括:
获取与所述第五参照组件对应的目标基础模型、第二目标基础模型、所述目标基础模型的模型宽度以及所述第二目标基础模型的模型宽度;
根据所述目标基础模型的模型宽度对所述第五参照组件进行拆分,得到第四拆分组件以及第五拆分组件,其中,所述第四拆分组件的组件宽度与所述目标基础模型的模型宽度相等;
对所述第四拆分组件进行删除。
11.一种模型组件放置装置,其特征在于,包括:
参照组件生成模块,用于获取目标基础模型,基于所述目标基础模型生成参照组件;
碰撞检测模块,用于获取与所述参照组件中的第一参照组件对应的包围盒,通过所述包围盒进行碰撞检测,得到与所述第一参照组件关联的第二参照组件;
目标参照组件生成模块,用于获取并根据所述第一参照组件的目标宽度、第一实际宽度以及所述第二参照组件的第二实际宽度,对所述第一参照组件以及所述第二参照组件进行调整,得到目标参照组件;
目标模型组件放置模块,用于确定所述目标参照组件在虚拟空间中的位置,将所述位置确定为目标位置,获取与所述目标参照组件对应的目标模型组件,将所述目标模型组件放置在所述目标位置。
12.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-10任一项所述的模型组件放置方法。
13.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-10任一项所述的模型组件放置方法。
CN202310117027.8A 2023-02-14 2023-02-14 模型组件放置方法和装置、计算机存储介质、电子设备 Pending CN116036606A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310117027.8A CN116036606A (zh) 2023-02-14 2023-02-14 模型组件放置方法和装置、计算机存储介质、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310117027.8A CN116036606A (zh) 2023-02-14 2023-02-14 模型组件放置方法和装置、计算机存储介质、电子设备

Publications (1)

Publication Number Publication Date
CN116036606A true CN116036606A (zh) 2023-05-02

Family

ID=86125511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310117027.8A Pending CN116036606A (zh) 2023-02-14 2023-02-14 模型组件放置方法和装置、计算机存储介质、电子设备

Country Status (1)

Country Link
CN (1) CN116036606A (zh)

Similar Documents

Publication Publication Date Title
Zhao et al. Mathematical morphology-based generalization of complex 3D building models incorporating semantic relationships
KR102620835B1 (ko) 3D 기하 객체 정보를 이용한 CityGML 기반의 빌딩 객체 정보 생성 방법, 빌딩 객체 정보 생성 시스템, 이를 위한 컴퓨터 프로그램
CN109345615B (zh) 蒙皮数据生成方法以及装置、电子设备及存储介质
CN109388843B (zh) 一种基于vtk的桁架天线的可视化系统及方法、终端
CN112199751B (zh) 一种墙体模型的生成方法、装置、电子设备及存储介质
US20240153210A1 (en) Optimizing Distance Calculations for Objects in Three-Dimensional Views
CN112818457A (zh) 基于cad图纸的bim模型智能生成方法及系统
CN113827965A (zh) 游戏场景中样条线的渲染方法、装置及设备
CN116681835A (zh) 一种基于虚拟引擎的三维模型制作方法及系统
CN110555916B (zh) 虚拟场景的地形编辑方法及装置、存储介质及电子设备
CN112807695A (zh) 游戏场景生成方法和装置、可读存储介质、电子设备
CN116036606A (zh) 模型组件放置方法和装置、计算机存储介质、电子设备
JP2837584B2 (ja) 地形データの作成方法
CN116485995A (zh) 基于装配式建筑构件的建模方法、智能终端及存储介质
CN110837707B (zh) 一种有限元分析系统、方法、计算机设备及存储介质
CN112348955B (zh) 一种物体渲染方法
CN114564268A (zh) 一种设备管理方法、装置、电子设备和存储介质
CN114238528A (zh) 一种地图加载方法、装置、电子设备及存储介质
CN113987652A (zh) 墙模型的生成方法和装置
US20230031786A1 (en) Methods, systems, and media for generative urban design with spreadsheet and model integration features
CN111767594B (zh) 临时建筑模型生成方法和装置、设备及存储介质
CN117635775A (zh) 模型特效实现方法和装置、计算机存储介质、电子设备
US11893664B2 (en) Connecting overlapping line segments in a two-dimensional view
CN113838202B (zh) 地图中三维模型的处理方法、装置、设备及存储介质
CN117797471A (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