一种节点建模方法、装置、电子设备及存储介质
文献发布时间:2023-06-19 10:27:30
技术领域
本申请涉及三维建模技术领域,具体而言,涉及一种节点建模方法、装置、电子设备及存储介质。
背景技术
现有的家具的三维模型构建方法中,通常是将模型、算法和数据等作为一个节点存在,然后通过相互连线进行交互操作,其中,互相可能都作为输入输出,数据相互传递,并且相互影响,这样的关系就是非常复杂的,特别是对家具建模的需求较为复杂的时候,会出现很多不可预知的连线规则和节点之间的交互规则,对于非专业人员来说,存在技术壁垒,难以实现。
发明内容
本申请实施例的目的在于提供一种节点建模方法、装置、电子设备及存储介质,通过虚拟分裂链表和图形数据结构相结合,以解决现有方法建模方法节点交互操作复杂、难以实现的问题。
本申请实施例提供了一种节点建模方法,所述方法包括:
接收用户输入的分裂节点和至少一个板件节点,所述板件节点和所述分裂节点是预先封装的并提供操作接口的数据结构;
接收用户输入的所述板件节点与所述分裂节点的第一连接指令;
根据所述第一连接指令将所述板件节点作为虚拟分裂链表的根节点并按照虚拟链路建立方向进行遍历;
在所述分裂节点处分裂成新的链表,以将每条链路连接到根节点面,以生成所述根节点面对应的模型构件;
将所述虚拟分裂链表的每条链路进行保存并生成图形数据结构,以将所述模型构件组合成三维模型并输出。
在上述实现过程中,通过将构建三维模型所需的板件节点、分裂节点和根节点面等封装成数据结构,可以通过连接到分裂节点进行链表的分裂,这样链表的每条链路均能生成一个模型构件,最终生成一个图形数据结构,图形数据结构中的每个叶子节点都将对应一个模型构件,在实际操作中,用户只需通过操作连接线即可生成模型构件,通过图形数据结构进行数据保存,且节点交互操作更为简单,解决现有方法建模方法节点交互操作复杂、难以实现的问题。
进一步地,在所述根据所述连接指令将所述板件节点作为虚拟分裂链表的根节点并按照虚拟链路建立方向进行遍历的步骤之前,所述方法还包括:
从板件节点进行遍历,以检测是否存在从根节点到根节点面的链表通路。
在上述实现过程中,从板件节点到根节点面的链路为通路,这样在节点建模中,可以通过任意连线触发在三维空间中生成三维模型的模型构件。
进一步地,所述在所述分裂节点处分裂成新的链表,以将每条链路连接到根节点面,以生成所述根节点面对应的模型构件,包括:
将所述板件节点与对象组合节点连接,所述对象组合节点连接所述根节点面,所述虚拟分裂链表在所述对象组合节点处进行分裂,生成模型构件,其中,所述对象组合节点是与之连接的根节点面的集合。
在上述实现过程中,将板件节点与对象组合节点连接,在对象组合节点处发生分裂,将板件节点到对象组合节点的链路分成两个,从而生成两个根节点面,在裂变前会共用原有的链表,节省内存空间,裂变之后生成两个根节点面,与生成的模型构件是一一对应的关系。
进一步地,所述方法还包括:
接收用户输入的根节点面与位置节点的第二连接指令;
根据所述第二连接指令,将根节点面与位置节点连接,以调节所述模型构件在所述三维模型中的位置。
在上述实现过程中,可以通过位置节点来调节模型构件的位置,以最终形成三维模型。
本申请实施例还提供一种节点建模装置,所述装置包括:
节点接收模块,用于接收用户输入的分裂节点和至少一个板件节点,所述板件节点和所述分裂节点是预先封装的并提供操作接口的数据结构;
第一连接指令接收模块,用于接收用户输入的所述板件节点与所述分裂节点的第一连接指令;
遍历模块,用于根据所述第一连接指令将所述板件节点作为虚拟分裂链表的根节点并按照虚拟链路建立方向进行遍历;
模型构件生成模块,用于在所述分裂节点处分裂成新的链表,以将每条链路连接到根节点面,以生成所述根节点面对应的模型构件;
模型输出模块,用于将所述虚拟分裂链表的每条链路进行保存并生成图形数据结构,以将所述模型构件组合成三维模型并输出。
在上述实现过程中,相比于现有的家具建模,需要各种公式计算各个板块的位置、大小等,本申请所采用方法,对各种分裂节点和板件节点进行了封装,用户只需通过简单的连线操作即可快速搭建完成家具模型,解决了现有方法建模方法节点交互操作复杂、难以实现的问题。
进一步地,所述装置还包括:
通路检测模块,用于从板件节点进行遍历,以检测是否存在从根节点到根节点面的链表通路。
在上述实现过程中,由于图形数据结构中的根节点和叶子节点即板件节点、分裂节点和根节点面均为预先封装的数据结构,因此需要通过遍历来检测各个链路是否为通路,以便生成新的链表。
进一步地,所述模型构件生成模块包括:
链表分裂模块,用于将所述板件节点与对象组合节点连接,所述对象组合节点连接所述根节点面,所述虚拟分裂链表在所述对象组合节点处进行分裂,生成模型构件,其中,所述对象组合节点是与之连接的根节点面的集合。
在上述实现过程中,板件节点与对象组合节点连接,在对象组合节点处将生成新的链表,从而生成模型构件,通过图形数据结构保存每条链路对应的模型构件,对于用户来说操作简单易行。
进一步地,所述装置还包括:
第二连接指令接收模块,用于接收用户输入的模型构件与位置节点的第二连接指令;
位置调整模块,用于根据所述第二连接指令,将模型构件与位置节点连接,以调节所述模型构件在所述三维模型中的位置。
在上述实现过程中,通过位置节点对生成的模型构件的位置进行调整,以便生成完整的三维模型。
本申请实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使计算机设备执行根据上述中任一项所述的节点建模方法。
本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的节点建模方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种节点建模方法的流程图;
图2为本申请实施例提供的节点建模界面示意图;
图3为本申请实施例提供的虚拟分裂链表的原理示意图;
图4为本申请实施例提供的图形数据结构的原理示意图;
图5为本申请实施例提供的模型板件位置调整流程图;
图6为本申请实施例提供的构建三维柜体模型的示意图;
图7为本申请实施例提供的另外一种构建三维柜体模型的示意图;
图8为本申请实施例提供的节点建模装置的结构框图;
图9为本申请实施例提供的节点建模装置的具体结构框图。
图标:
100-节点接收模块;200-第一连接指令接收模块;300-遍历模块;310-通路检测模块;400-模型构件生成模块;401-链表分裂模块;500-模型输出模块;510-第二连接指令接收模块;520-位置调整模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例1
请参看图1,图1为本申请实施例提供的一种节点建模方法的流程图。该方法可以应用于通过UI界面构建三维家具模型,具体地,将虚拟分裂链表和图形数据结构相结合,将三维家具模型的建立过程与虚拟分裂链表的分裂过程对应起来,使得构成图形数据结构的各个根节点和叶子节点封装成数据结构并提供操作接口,用户只需通过UI界面进行连接操作即可实现三维家具模型的构建。该方法的具体步骤如下:
步骤S100:接收用户输入的分裂节点和至少一个板件节点,板件节点和分裂节点是预先封装的并提供操作接口的数据结构;
在此之前,如图2所示,为节点建模界面示意图,将板件节点、分裂节点以及根节点面等进行封装成提供操作接口的数据结构,如图2中的左面数组节点、右面数组节点、变换节点、对象数组节点、底板节点和左侧板节点等,用户通过UI界面中的连接线进行连接,从而建立一个虚拟分裂链表,每一条链路均对应一个模型构件如图2中的左侧三维模型中的底板,使得操作更加简单易行。
步骤S200:接收用户输入的板件节点与分裂节点的第一连接指令;
步骤S300:根据所述第一连接指令将所述板件节点作为虚拟分裂链表的根节点并按照虚拟链路建立方向进行遍历;
在该步骤之前,需要从板件节点进行遍历,以检测是否存在从根节点到根节点面的链表通路。
由于虚拟链表中的每个节点在UI界面中均以数据结构的形式进行封装,需要检测是否存在从根节点到根节点面的通路,具体地,从根节点进行遍历,直到查找到根节点面,表示处于连通状态;再从根节点出发进行遍历,通过记录的链表通路进行分裂成新的链表,从而建立新的链路,对应生成模型构件。
在UI界面中,用户通过连接线将板件节点与分裂节点连接,即接收到第一连接指令,将从板件节点出发进行遍历,当遇到分裂节点如对象组合节点这样属性的节点将会自动分裂成新的链表,分裂前共用原有的链表,节省空间,链表分裂后,生成根节点面,对应生成模型构件,使得每条链路与模型构件为一一对应的关系。
步骤S400:在分裂节点处分裂成新的链表,以将每条链路连接到根节点面,以生成根节点面对应的模型构件;
步骤S500:将虚拟分裂链表的每条链路进行保存并生成图形数据结构,以将模型构件组合成三维模型并输出。
如图3所示,为虚拟分裂链表的原理示意图,将板件节点作为根节点,对象组合节点为分裂节点,分裂成两个新的链表,生成两个根节点面,根节点面对应于UI界面中生成的模型构件,即每条链路对应生成一个模型构件。在分裂节点之前的链表是可以共用的,从而达到节省内存的效果,在这个分裂节点之后进行一分为二的分裂操作,分裂成两个根节点面,使得根节点对应的板件节点(如三维柜子模型中的底板)会自动分裂成两个,如分裂成三维柜子模型的两个左右侧板。
如图4所示,为图形数据结构的原理示意图,将完成的虚拟分裂链表的裂变以图形数据结构的形式保存,使得图形数据结构能够完整保存每个模型构件以及生成模型构件对应的链路,有效的解决数据保存和节点交互操作复杂的问题。
此外,如图5所示,为模型板件位置调整流程图,该过程具体可以包括以下步骤:
步骤S510:接收用户输入的根节点面与位置节点的第二连接指令;
步骤S520:根据所述第二连接指令,将根节点面与位置节点连接,以调节所述模型构件在所述三维模型中的位置。
在UI界面中还封装有位置节点,如变换节点,将底板作为板件节点进行分裂后连接到变换节点上,从而可以分裂成顶板、踢脚板等。
在图2中,需要将一个板件节点如底板放置到三维场景中的不同位置,共同构成一个组合模型如三维柜子模型,具体地,可以使用一块底板作为根节点,通过连接变换对象节点、对象数组节点之后,在对象数组节点侧连出两条线,此时,在该节点处发生分裂,使得底板分裂成两个模型构件(底板),这两个底板分别连接到三维场景中的底面和顶面,构成该三维柜子模型中的底板和顶板,因此,可以将板件节点分裂成多个对象,对每个对象对应到UI界面中的连线,可以将二维和三维进行完美结合。
示例地,如图6所示,为构建三维柜体模型的示意图,在现有的家具建模行业中,对于三维柜体的建模是相对困难的,对于一个简单的万能柜,通常需要通过各种公式的计算,精确定位柜体的各个板块的位置,而采用本申请中的节点建模方法,能够快速搭建柜体框架,简单易行,具体如下:
首先通过使用二维构建器构建板件节点(根节点),并作为构建柜子模型的根节点,并确定柜子的包围盒大小(也可自定义);根据需要,可以搭建柜子的上下左右和前后板件,通过二维构建器可以获得对应的板件节点(根节点面),然后通过连线的方式将根节点面与根节点连接从而建立虚拟分裂链表,使得每条链路与根节点面对应的模型构件对应,生成三维柜体模型,相较于现有的各个板件的位置关系通过复杂的公式驱动,可以轻松实现,简单易行。
对于柜子的位置大小变换,柜子的板件与板件之间的关系也可以使用关系节点进行调节,如可以使用对应的变换节点,然后连接到二维构建器上实现。
二维构建器就相当于一个根节点,对应三维世界的根节点,负责生成三维模型、组合三维模型,最终显示在三维世界中,二维构建器有多个连接点,包括“左边”,“右边”,“前边”,“后边”,“顶面”,“底面”代表了三维世界中包围柜体的六个面,这六个面可以挂不同的板件,方便组合成一个柜子或其他家具模型。
作为另外一种实施方式,如图7所示,为另外一种构建三维柜体模型的示意图,搭建柜子还有一个重要的工作,就是需要设置好各个板件中的相互分割关系,例如横板件和竖板件相交,那么就会需要横板件是一整块的,而竖板件会是被横板件分割成多块,参看图7是一个典型的竖板件打断横板件的示例。
一般的建模方法,要做这种效果,会需要一个一个板件进行调整位置,而使用节点建模的方法就可以简单到使用一个横板件节点和一个竖板件节点就能做出这样的效果;图7中只有“顶板”节点充当横板件,通过连线,裂变出顶面板件,地面板件和Z均分板件,Z均分板件就是分割柜子的高,图7是分为三层;而竖板件也只有一个“右侧板”节点充当,裂变出左右板件和X均分板件,X均分板件就是分割柜子的左右方向,图6是分割成三个间隔;本发明的应用对于此类柜子的建模是可以简化其流程,提高效率,图7中,总共使用了三个板件节点,通过分裂链接到二维构建器根节点,最终形成7个虚拟链表,对应建立7大块板件,组合而成图6所示的柜子模型,对于其他类型的家具模型的构建,与上述方法一致,在此不再赘述。
由上述可知,本申请针对复杂的UI图进行了数据结构抽象,封装起来的数据结构提供了简单的接口应用,为节点建模的各个节点之间的数据流通和节点交互操作提供了完整的解决方案,可以大大提高模型节点复用率,提高建模时的工作效率,减少重复劳动,用户只需通过连线进行操作,没有技术壁垒,对非专业人员非常友好,解决了现有建模方法节点交互操作复杂、难以实现的问题。
实施例2
本申请实施例提供一种节点建模装置,应用于实施例1中的节点建模方法,如图8所示,为节点建模装置的结构框图,该装置包括但不限于:
节点接收模块100,用于接收用户输入的分裂节点和至少一个板件节点,所述板件节点和所述分裂节点是预先封装的并提供操作接口的数据结构;
第一连接指令接收模块200,用于接收用户输入的所述板件节点与所述分裂节点的第一连接指令;
遍历模块300,用于根据所述第一连接指令将所述板件节点作为虚拟分裂链表的根节点并按照虚拟链路建立方向进行遍历;
模型构件生成模块400,用于在所述分裂节点处分裂成新的链表,以将每条链路连接到根节点面,以生成所述根节点面对应的模型构件;
模型输出模块500,用于将所述虚拟分裂链表的每条链路进行保存并生成图形数据结构,以将所述模型构件组合成三维模型并输出。
如图9所示,为节点建模装置的具体结构框图,该装置还包括:
通路检测模块310,用于从板件节点进行遍历,以检测是否存在从根节点到根节点面的链表通路。
所述模型构件生成模块400包括:
链表分裂模块401,用于将所述板件节点与对象组合节点连接,所述对象组合节点连接所述根节点面,所述虚拟分裂链表在所述对象组合节点处进行分裂,生成模型构件,其中,所述对象组合节点是与之连接的根节点面的集合。
所述装置还包括:
第二连接指令接收模块510,用于接收用户输入的模型构件与位置节点的第二连接指令;
位置调整模块520,用于根据所述第二连接指令,将模型构件与位置节点连接,以调节所述模型构件在所述三维模型中的位置。
通过将构建三维模型所需的板件节点、分裂节点和根节点面等封装成数据结构,可以通过连接到分裂节点进行链表的分裂,这样链表的每条链路均能生成一个模型构件,最终生成一个图形数据结构,图形数据结构中的每个叶子节点都将对应一个模型构件,在实际操作中,用户只需通过操作连接线即可生成模型构件,通过图形数据结构进行数据保存,且节点交互操作更为简单,相比于现有的家具建模,需要各种公式计算各个板块的位置、大小等,本申请所采用方法,对各种分裂节点和板件节点进行了封装,用户只需通过简单的连线操作即可快速搭建完成家具模型,解决现有方法建模方法节点交互操作复杂、难以实现的问题。
本申请实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使计算机设备执行实施例1所述的节点建模方法。
本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行实施例1所述的节点建模方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
- 一种节点建模方法、装置、电子设备及存储介质
- 实体节点的建模方法、装置及计算机可读存储介质