处理效果图的方法、装置、电子设备及可读存储介质

文档序号:1148900 发布日期:2020-09-15 浏览:4次 >En<

阅读说明:本技术 处理效果图的方法、装置、电子设备及可读存储介质 (Method and device for processing effect graph, electronic equipment and readable storage medium ) 是由 傅强 于 2020-06-04 设计创作,主要内容包括:本发明提供了一种在图形界面开发中处理效果图的方法、装置、电子设备及计算机可读存储介质;方法包括:接收图像处理程序输出的图形界面效果图的图像格式文件;对图像格式文件进行结构转换,生成对应图像格式文件的全量预设体树;生成与全量预设体树的子树一一对应的多个结果树;从多个结果树中筛选出与公共预设体树匹配的结果树,作为匹配结果树;将全量预设体树中与匹配结果树对应的子树、与全量预设体树之间的引用关系,替换为公共预设体树与全量预设体树之间的引用关系,生成嵌套预设体树;对嵌套预设体树进行结构转换,生成用于开发图形界面的开发格式文件。通过本发明,能够自动并高效地生成用于开发图形界面的开发格式文件。(The invention provides a method, a device, electronic equipment and a computer-readable storage medium for processing an effect graph in graphical interface development; the method comprises the following steps: receiving an image format file of a graphical interface effect graph output by an image processing program; performing structure conversion on the image format file to generate a full-scale preset tree corresponding to the image format file; generating a plurality of fruit trees which correspond to subtrees of the full preset tree one by one; screening a bearing tree matched with a public preset body tree from a plurality of bearing trees as a matched bearing tree; replacing the reference relation between the subtree corresponding to the matching result tree in the full-scale preset body tree and the full-scale preset body tree with the reference relation between the public preset body tree and the full-scale preset body tree to generate a nested preset body tree; and performing structure conversion on the nested preset body tree to generate a development format file for developing a graphical interface. According to the invention, the development format file for developing the graphical interface can be automatically and efficiently generated.)

处理效果图的方法、装置、电子设备及可读存储介质

技术领域

本发明涉及计算机图形技术,尤其涉及一种在图形界面开发中处理效果图的方法、装置、电子设备及计算机可读存储介质。

背景技术

基于图形处理硬件的显示技术,扩展了感知环境以及获取信息的渠道,尤其是虚拟场景的显示技术,能够根据实际应用需求实现人与人、人与虚拟场景中各种虚拟对象的智能化的交互。随着信息技术的普及,电子设备可以实现更加丰富的和形象的场景,典型地,例如游戏,游戏中存在各种效果图(即人物图、道具图等)。

然而,相关技术对于效果图的处理非常局限,主要依赖于人工方案,例如,美工人员通过图像处理工具绘制出游戏效果图后,开发人员在图形界面开发工具中手动将效果图制作成用于开发图形界面的开发格式文件,以通过开发格式文件进行后续游戏开发。但是,这种方式效率太低,无法满足图像界面开发的要求。

发明内容

本发明实施例提供一种在图形界面开发中处理效果图的方法、装置、电子设备及计算机可读存储介质,能够自动并高效地生成用于开发图形界面的开发格式文件,提升开发效率。

本发明实施例的技术方案是这样实现的:

本发明实施例提供一种在图形界面开发中处理效果图的方法,包括:

接收图像处理程序输出的图形界面效果图的图像格式文件;

对所述图像格式文件进行结构转换,以生成对应所述图像格式文件的全量预设体树,所述全量预设体树包括若干个子树;

生成与所述全量预设体树的子树一一对应的多个结果树;

从所述多个结果树中筛选出与公共预设体树匹配的结果树,以作为匹配结果树;

将所述全量预设体树中与所述匹配结果树对应的子树、与所述全量预设体树之间的引用关系,替换为所述公共预设体树与所述全量预设体树之间的引用关系,以生成嵌套预设体树;

对所述嵌套预设体树进行结构转换,以生成在图形界面开发工具用于开发图形界面的开发格式文件。

本发明实施例提供一种在图形界面开发中处理效果图的装置,包括:

接收模块,用于接收图像处理程序输出的图形界面效果图的图像格式文件;

第一转换模块,用于对所述图像格式文件进行结构转换,以生成对应所述图像格式文件的全量预设体树,所述全量预设体树包括若干个子树;

生成模块,用于生成与所述全量预设体树的子树一一对应的多个结果树;

筛选模块,用于从所述多个结果树中筛选出与公共预设体树匹配的结果树,以作为匹配结果树;

替换模块,用于将所述全量预设体树中与所述匹配结果树对应的子树、与所述全量预设体树之间的引用关系,替换为所述公共预设体树与所述全量预设体树之间的引用关系,以生成嵌套预设体树;

第二转换模块,用于对所述嵌套预设体树进行结构转换,以生成在图形界面开发工具用于开发图形界面的开发格式文件。

上述技术方案中,所述第一转换模块还用于对所述图像格式文件包含的多个图层进行切割处理,得到对应所述多个图层的多个切图;

根据所述多个切图的位置关系,构建对应所述图像格式文件的全量预设体树。

上述技术方案中,所述第一转换模块还用于针对所述多个图层中的每个图层执行以下处理:

将图层的内容的横向长度确定为包围所述内容的矩形的长度;

将图层的内容的纵向长度确定为包围所述内容的矩形的宽度;

通过包围所述内容的矩形,对所述图层中的内容进行切割,以生成对应所述图层的切图。

上述技术方案中,所述第一转换模块还用于当所述多个切图中任意两个切图的位置关系为相离关系或相交关系时,确定所述两个切图对应的节点的关系为兄弟关系或者旁系亲属关系;

当所述两个切图的位置关系为包含关系时,确定所述两个切图对应的节点的关系为祖先关系;

对多个切图对应的节点的关系进行组合,以生成对应所述图像格式文件的全量预设体树。

上述技术方案中,所述第一转换模块还用于对所述多个切图的面积进行降序排列,并按照降序顺序遍历降序排列后的多个切图;

针对遍历到的切图执行以下处理:

当按照从遍历到的切图到最大面积的切图的查找方向,查找到包含遍历到的切图的目标切图时,将所述包含所述当前遍历到的切图的目标切图,确定为所述遍历到的切图的父节点,并

将所述遍历到的切图的标志位置位标识为已找到父节点;

对所述多个切图对应的节点的关系进行组合,以生成对应所述图像格式文件的全量预设体树。

上述技术方案中,所述生成模块还用于分别对公共预设体树以及所述全量预设体树进行节点编码,得到对应所述公共预设体树的各节点的编码信息、以及对应所述全量预设体树的各节点的编码信息;

根据所述公共预设体树的各节点的编码信息以及所述全量预设体树的各节点的编码信息,将所述公共预设体树的各节点与所述全量预设体树的各节点进行匹配;

将在所述全量预设体树中匹配到的多个节点所构成的树,确定为与所述全量预设体树的子树对应的结果树。

上述技术方案中,所述生成模块还用于从所述全量预设体树中匹配到与所述公共预设体树的根节点对应的匹配节点时,将所述匹配节点确定为与所述全量预设体树的子树对应的结果树的根节点;

遍历所述公共预设体树中除根节点以外的节点,当遍历到的节点存在于所述全量预设体树、且满足节点匹配条件时,将遍历到的节点与所述结果树进行合并,以更新所述结果树。

上述技术方案中,所述生成模块还用于当确定遍历到的节点存在于所述全量预设体树,且根据所述遍历到的节点在所述全量预设体树中的编码信息,确定所述结果树中的根节点为所述遍历到的节点的祖先节点时,确定从所述全量预设体树中与所述结果树中的根节点对应的节点开始,到所述全量预设体树中与所述遍历到的节点对应的节点之间的路径,并

将所述路径与所述结果树进行合并,并将所述路径中不存在于所述公共预设体中的节点标识为中间节点。

上述技术方案中,所述生成模块还用于复制模块,用于当确定遍历到的节点存在于所述全量预设体树和所述结果树中,且在所述结果树中所述遍历到的节点被标识为中间节点时,对所述结果树进行复制,并

在复制得到的结果树中,去除对应所述遍历到的节点的后代节点,以生成新的结果树。

上述技术方案中,所述装置还包括:

处理模块,用于确定多个结果树中每个结果树中匹配到的节点数量;

根据每个结果树中匹配到的节点数量,对所述多个结果树进行降序排序,保留排序在前的至少一个结果树。

上述技术方案中,所述生成模块还用于针对保留的结果树中的每个结果树执行以下处理:

获取所述结果树的根节点,并在所述全量预设体树中获取以所述结果树的根节点为根节点的子树,并

遍历所述子树的每个节点,以执行以下处理:

当所述节点存在于所述公共预设体树中,且所述节点在所述结果树中被标识为中间节点时,将所述节点与所述结果树进行合并,以更新所述结果树;

当所述节点不存在于所述结果树中时,将所述节点与所述结果树进行合并,以更新所述结果树。

上述技术方案中,所述装置还包括:

确定模块,用于根据以下公式,确定多个结果树中每个结果树与所述公共预设体树的相似度:

其中,Sim(Q,D)表示结果树D与所述公共预设体树Q的相似度,w表示结果树D的匹配节点数与公共预设体树Q的总节点数的比值,Vm表示结果树D中匹配的节点总数,Vt表示公共预设体树Q的节点总数,Im表示结果树D中匹配的图像类型的节点总数,It表示结果树D中所有的图像类型的节点总数,Tm表示结果树D中匹配的文本类型的节点总数,Tt表示结果树D中所有的文本类型的节点总数,Qu表示公共预设体树Q的总节点数,Du表示结果树D的总节点数。

上述技术方案中,所述筛选模块还用于确定与所述公共预设体树的相似度最高的结果树,以作为与所述公共预设体树匹配的匹配结果树;

所述替换模块还用于对多个公共预设体树与对应的匹配结果树之间的相似度进行降序排序,并将排序在前的至少一个公共预设体树确定为待引用的公共预设体树;

将所述全量预设体树中与所述匹配结果树对应的子树、与所述全量预设体树之间的引用关系,替换为所述待引用的公共预设体树与所述全量预设体树之间的引用关系;

其中,所述匹配结果树与所述待引用的公共预设体树对应。

本发明实施例提供一种用于在图形界面开发中处理效果图的电子设备,所述电子设备包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的在图形界面开发中处理效果图的方法。

本发明实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的在图形界面开发中处理效果图的方法。

本发明实施例具有以下有益效果:

通过将图像处理程序输出的图形界面效果图的图像格式文件,自动地转换为用于开发图形界面的开发格式文件,提高开发格式文件的生成效率,以便后续可以基于开发格式文件进行及时地图形界面开发,提高图形界面应用的上线速度和图形界面的开发效率。

附图说明

图1是本发明实施例提供的效果图处理系统10的应用场景示意图;

图2是本发明实施例提供的用于在图形界面开发中处理效果图的电子设备的结构示意图;

图3A-3C是本发明实施例提供的在图形界面开发中处理效果图的方法的流程示意图;

图4是本发明实施例提供的游戏界面系统开发工作流示意图;

图5A-5B是本发明实施例提供的角色扮演游戏界面示意图;

图6A是本发明实施例提供的全量预设体的示意图;

图6B是本发明实施例提供的嵌套预设体的示意图;

图7是本发明实施例提供的Photoshop中的层次结构和Unity3D中的层次结构的示意图;

图8是本发明实施例提供的最小包围盒的示意图;

图9是本发明实施例提供的矩形的位置关系的示意图;

图10是本发明实施例提供的效果图的示意图;

图11是本发明实施例提供的Photoshop中的层次结构示意图;

图12是本发明实施例提供的游戏引擎中的层次结构示意图;

图13是本发明实施例提供的基于感官的树结构的示意图;

图14是本发明实施例提供的Photoshop中的图层结构的示意图;

图15A是本发明实施例提供的存在父节点的示意图;

图15B是本发明实施例提供的不存在父节点的示意图;

图16是本发明实施例提供的感官树结构的示意图;

图17是本发明实施例提供的引用关系转换的示意图;

图18A是本发明实施例提供的树嵌入匹配的示意图;

图18B是本发明实施例提供的树包含匹配的示意图;

图18C是本发明实施例提供的树包容匹配的示意图;

图19是本发明实施例提供的节点编码的示意图;

图20是本发明实施例提供的树匹配的结果示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。

1)预设体(Prefab):一种游戏引擎、游戏开发工具(Unity3D)中的资源类型,可以保存工程资源的组合及资源信息。例如,Prefab是一种存储在项目视图中的一种可反复使用的游戏对象,能够被放到多个场景中,也能够在同一个场景中放置多次,当将一个Prefab放到场景中时,就创建一个对应的实例。其中,全量预设体为直接引用所有资源的预设体,全量预设体树为全量预设体所形成的树结构;嵌套预设体为预设体之间相互嵌套引用的预设体,嵌套预设体树为嵌套预设体所形成的树结构;公共预设体为开发人员预先设置的预设体,且该公共预设体具有开发工具的某些公共功能,公共预设体树为公共预设体所形成的树结构。

2)图像格式文件:图像文件格式是记录和存储影像信息的格式。对数字图像进行存储、处理、传播,必须采用一定的图像格式,也就是把图像的像素按照一定的方式进行组织和存储,把图像数据存储成文件就得到图像格式文件。图像文件格式决定了应该在文件中存放何种类型的信息,文件如何与各种应用软件兼容,文件如何与其它文件交换数据。例如,PSD文件为一种图像处理软件(Photoshop)的专用图像格式文件,文件扩展名为.psd,可以支持图层、通专道、蒙板和不同色彩模式的各种图像特征,是一种非压缩的原始保存格式文件;DXF文件为一种图像处理软件(AutoCAD)中的图像格式文件,扩展名是.dxf,以ASCII方式储存图权形,在表现图形的大小方面十分精确,可被大型软件(例如CorelDraw和3DS等)调用编辑。

3)开发格式文件:图形界面开发使用和维护过程中的必备文件。开发格式文件能提高图形界面开发的效率,保证图形界面开发工具的质量,而且在图形界面开发工具的使用过程中有指导的作用,尤其在维护工作中,开发格式文件是不可或缺的资料。例如,Unity3D文件为图形界面开发工具(Unity3D)的专用开发格式文件,文件扩展名为.unity3d,可以支持游戏网页开发。

本发明实施例提供了一种在图形界面开发中处理效果图的方法、装置、电子设备及计算机可读存储介质,能够自动并高效地生成于开发图形界面的开发格式文件。

下面说明本发明实施例提供的用于在图形界面开发中处理效果图的电子设备的示例性应用。

本发明实施例提供的用于在图形界面开发中处理效果图的电子设备可以是各种类型的终端设备或服务器,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器;终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明在此不做限制。以服务器为例,服务器接收到图像处理程序输出的图形界面效果图的图像格式文件后,服务器调用封装的处理效果图的程序,根据图像格式文件,生成在图形界面开发工具用于开发图形界面的开发格式文件,从而实现自动生成与图像格式文件对应的开发格式文件,以便后续根据自动生成的开发格式文件进行图形界面开发。

参见图1,图1是本发明实施例提供的效果图处理系统10的应用场景示意图,终端200通过网络300连接服务器100,网络300可以是广域网或者局域网,又或者是二者的组合。

终端200可以被用来获取图像格式文件,例如,美工人员通过终端的图像处理工具编辑图形界面效果图后,终端自动获取对应图形界面效果图的图像格式文件。

在一些实施例中,终端200本地执行本发明实施例提供的在图形界面开发中处理效果图的方法,来完成自动生成用于开发图形界面的开发格式文件,例如,在终端200上安装图形界面开发工具,其中,图形界面开发工具集成有图像处理程序和图形界面开发程序,开发人员打开图形界面开发工具后,自动获取图像处理程序输出的图形界面效果图的图像格式文件,并调用图形界面开发程序,根据图像格式文件,生成在图形界面开发工具用于开发图形界面的开发格式文件,从而实现自动生成与图像格式文件对应的开发格式文件,以便后续根据自动生成的开发格式文件进行图形界面开发。

在一些实施例中,终端200也可以通过网络300向云端的服务器100发送美工人员在终端200编辑的图形界面效果图的图像格式文件,并调用服务器100提供的效果图处理功能(封装的效果图处理的程序),服务器100通过本发明实施例提供的在图形界面开发中处理效果图的方法,自动生成用于开发图形界面的开发格式文件,例如,在终端200上安装图像处理工具,美工人员在图像处理工具中编辑图形界面效果图,终端200通过网络300向服务器100发送该图形界面效果图的图像格式文件,服务器100接收到该图像格式文件后,调用封装的效果图处理的程序,根据图像格式文件,生成在图形界面开发工具用于开发图形界面的开发格式文件,从而实现自动生成与图像格式文件对应的开发格式文件,以便后续开发人员根据自动生成的开发格式文件进行图形界面开发,并将开发人员开发的图形界面返回至图像处理工具,以便美工人员核查开发的图形界面,当确定开发的图形界面与效果图不对应时,让开发人员对开发的图形界面进行及时的修正。

下面说明本发明实施例提供的用于在图形界面开发中处理效果图的电子设备的结构,用于在图形界面开发中处理效果图的电子设备可以是各种终端,例如手机、电脑等,也可以是如图1示出的服务器100。

参见图2,图2是本发明实施例提供的用于在图形界面开发中处理效果图的电子设备500的结构示意图,以电子设备500是服务器为例说明,图2所示的用于在图形界面开发中处理效果图的电子设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。电子设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。

处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Onl y Memory),易失性存储器可以是随机存取存储器(RAM,Random Access M emory)。本发明实施例描述的存储器550旨在包括任意适合类型的存储器。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。

在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;

在一些实施例中,本发明实施例提供的在图形界面开发中处理效果图的装置可以采用软件方式实现,图2示出了存储在存储器550中的在图形界面开发中处理效果图的装置555,其可以是程序和插件等形式的软件,并包括一系列的模块,包括接收模块5551、第一转换模块5552、生成模块5553、筛选模块5554、替换模块5555、第二转换模块5556、处理模块5557以及确定模块5558;其中,接收模块5551、第一转换模块5552、解码模块5553、生成模块5553、筛选模块5554、替换模块5555、第二转换模块5556、处理模块5557以及确定模块5558用于实现本发明实施例提供的效果图处理的功能。

根据上文可以理解,本发明实施例提供的在图形界面开发中处理效果图的方法可以由各种类型的用于在图形界面开发中处理效果图的电子设备实施,例如智能终端和服务器等。

下面结合本发明实施例提供的服务器的示例性应用和实施,说明本发明实施例提供的在图形界面开发中处理效果图的方法。参见图3A,图3A是本发明实施例提供的在图形界面开发中处理效果图的方法的流程示意图,结合图3A示出的步骤进行说明。

在步骤101中,接收图像处理程序输出的图形界面效果图的图像格式文件。

作为获取图像格式文件的示例,美工人员可以在终端的图形处理工具中编辑图形界面效果图,编辑完成后,终端将图形界面效果图的图像格式文件发送至服务器,服务器接收图形界面效果图的图像格式文件,并对图像格式文件进行处理,以得到开发格式文件。或者,服务器调用图形界面开发工具,该图形界面开发工具集成有图像处理程序以及图形界面开发程序,因此,服务器可以直接获取图像处理程序输出的图形界面效果图的图像格式文件,并调用图形界面开发程序对图像格式文件进行处理。

在步骤102中,对图像格式文件进行结构转换,以生成对应图像格式文件的全量预设体树,全量预设体树包括若干个子树。

在本发明实施例中发现,图像格式文件所呈现的感官信息与开发格式文件所呈现的感官信息相同,例如图像格式文件所呈现的效果图为一张游戏虚拟人物图,开发格式文件所呈现的效果图也是一张一样的游戏虚拟人物图。为了能够根据图像格式文件,生成不同于图像格式文件的开发格式文件,因此,本发明实施例对图像格式文件进行结构转换,以生成对应图像格式文件的全量预设体树,当对全量预设体树进行结构转换,可以直接生成开发格式文件,该开发格式文件与图像格式文件呈现的感官信息相同。

参见图3B,图3B是本发明实施例提供的在图形界面开发中处理效果图的方法的一个可选的流程示意图,图3B示出图3A中的步骤102可以通过图3B示出的步骤1021-1022实现。在步骤1021中,对图像格式文件包含的多个图层进行切割处理,得到对应多个图层的多个切图;在步骤1022中,根据多个切图的位置关系,构建对应图像格式文件的全量预设体树。

例如,由于像格式文件所呈现的感官信息与开发格式文件所呈现的感官信息相同,即对应图像格式文件的树结构与对应开发格式文件的树结构。因此,为了获得开发格式文件,需要对图像格式文件进行结构转换,以获得对应图像格式文件的全量预设体树(即对应图像格式文件的树结构)。其中,图像格式文件包含多个图层,对每个图层进行切图,以获得对应多个图层的多个切图,并根据多个切图的位置关系(例如包含、相交、相离),确定多个切图的对应树结构的节点关系,从而构建对应图像格式文件的全量预设体树。

在一些实施例中,对图像格式文件包含的多个图层进行切割处理,得到对应多个图层的多个切图,包括:针对多个图层中的每个图层执行以下处理:将图层的内容的横向长度确定为包围内容的矩形的长度;将图层的内容的纵向长度确定为包围内容的矩形的宽度;通过包围内容的矩形,对图层中的内容进行切割,以生成对应图层的切图。

例如,图层的内容包括文字或者图像,当图层的内容是文字时,对每个文字进行切割处理,得到对应每个文字的切图,将某文字的横向长度确定为包围该文字的矩形的长度,将该文字的纵向长度确定为包围该文字的矩形的宽度,并通过包围该文字的矩形,对图层中的该文字进行切割,以生成对应该图层的切图;当图层的内容是图像时,对每个图像进行切割处理,得到对应图像的切图,将某图像的横向长度确定为包围该图像的矩形的长度,将该图像的纵向长度确定为包围该图像的矩形的宽度,并通过包围该图像的矩形,对图层中的该图像进行切割,以生成对应该图层的切图。

在一些实施例中,根据多个切图的位置关系,构建对应图像格式文件的全量预设体树,包括:当多个切图中任意两个切图的位置关系为相离关系或相交关系时,确定两个切图对应的节点的关系为兄弟关系或者旁系亲属关系;当两个切图的位置关系为包含关系时,确定两个切图对应的节点的关系为祖先关系;对多个切图对应的节点的关系进行组合,以生成对应图像格式文件的全量预设体树。

例如,在获取了多个切图后,还可以根据多个切图在图形界面效果图中对应的位置,可以确定多个切图中任意两个切图的位置关系,例如当切图A和切图B在图形界面效果图中的位置关系为相离关系或相交关系时,则可以确定切图A和切图B对应的节点的关系为兄弟关系或者旁系亲属关系;当切图A和切图B的位置关系为包含关系时,则可以确定切图A和切图B对应的节点的关系为祖先关系。在获得了多个切图对应的节点的关系后,组合所有切图对应的节点的关系,从而可以生成对应图像格式文件的全量预设体树。

在一些实施例中,根据多个切图的位置关系,构建对应图像格式文件的全量预设体树,包括:对多个切图的面积进行降序排列,并按照降序顺序遍历降序排列后的多个切图;针对遍历到的切图执行以下处理:当按照从遍历到的切图到最大面积的切图的查找方向,查找到包含遍历到的切图的目标切图时,将包含当前遍历到的切图的目标切图,确定为遍历到的切图的父节点,并将遍历到的切图的标志位置位标识为已找到父节点;对多个切图对应的节点的关系进行组合,以生成对应图像格式文件的全量预设体树。

例如,为了能够快速地构建全量预设体树。在获得了多个切图后,首先根据多个切图的面积,对多个切图的面积进行降序排列,并按照降序顺序遍历降序排列后的多个切图,例如,对于当前遍历到的切图1执行以下处理:按照切图1到最大面积的切图的查找方向,查找能够包含切图1的目标切图,当查找到第一个能够包含切图1的切图2(即目标切图)时,即切图2的面积大于切图1,则将切图2确定为切图1的父节点,并将切图1的标志位置位(初始的标志位置位的标识为未找到父节点,例如标识为0)标识为已找到父节点,例如标识为1。当遍历完所有的切图后,组合所有切图对应的节点的关系,从而生成对应图像格式文件的全量预设体树。

在步骤103中,生成与全量预设体树的子树一一对应的多个结果树。

在本发明实施例中发现,对全量预设体树进行结构转换,可以生成用于开发图形界面的开发格式文件。但是,生成的开发格式文件并没有引用公共预设体,造成冗余的开发时间、重复开发。为了减小开发时间,提高开发的效率,可以根据公共预设体树,生成与全量预设体树的子树一一对应的多个结果树,以便后续根据结果树、全量预设体树以及公共预设体树,生成嵌套预设体树。

参见图3C,图3C是本发明实施例提供的在图形界面开发中处理效果图的方法的一个可选的流程示意图,图3C示出图3A中的步骤103可以通过图3C示出的步骤1031-1033实现。在步骤1031中,分别对公共预设体树以及全量预设体树进行节点编码,得到对应公共预设体树的各节点的编码信息、以及对应全量预设体树的各节点的编码信息;在步骤1032中,根据公共预设体树的各节点的编码信息以及全量预设体树的各节点的编码信息,将公共预设体树的各节点与全量预设体树的各节点进行匹配;在步骤1033中,将在全量预设体树中匹配到的多个节点所构成的树,确定为与全量预设体树的子树对应的结果树。

作为示例,为了方便匹配公共预设体树和全量预设体树,可以对公共预设体树以及全量预设体树分别进行节点编码,并根据编码好的各节点的编码信息,匹配公共预设体树的各节点和全量预设体树的各节点,将在全量预设体树中匹配到的多个节点所构成的树,确定为与全量预设体树的子树对应的结果树。例如,对公共预设体树的节点A1、节点A2进行编码,得到节点A1的编码信息为1、节点A2的编码信息为1.1(即节点A1为节点A2的父节点);对公共预设体树的节点B1、节点B2、节点B3进行编码,得到节点B1的编码信息为1、节点B2的编码信息为1.1、节点B3的编码信息为1.2(即节点B1为节点B2和节点B3的父节点,节点B2和节点B3互为兄弟节点),根据节点A1(1)和节点A2(1.1)的编码信息、内容,以及节点B1和节点B2的编码信息、内容,可以确定节点B1和节点B2为全量预设体树中匹配到的节点,并将节点B1和节点B2所构成的树确定为与全量预设体树的子树对应的结果树。

在一些实施例中,将公共预设体树的各节点与全量预设体树的各节点进行匹配,包括:从全量预设体树中匹配到与公共预设体树的根节点对应的匹配节点时,将匹配节点确定为与全量预设体树的子树对应的结果树的根节点;将在全量预设体树中匹配到的多个节点所构成的树,确定为与全量预设体树的子树对应的结果树,包括:遍历公共预设体树中除根节点以外的节点,当遍历到的节点存在于全量预设体树、且满足节点匹配条件时,将遍历到的节点与结果树进行合并,以更新结果树。

作为示例,为了从全量预设体树中匹配到与公共预设体树匹配的节点,首先确定公共预设体的根节点,并在全量预设体树中查找到与公共预设体的根节点匹配的节点,则将匹配到的节点作为结果树的根节点。在确定结果树的根节点后,继续遍历公共预设体树的后代节点,当遍历到的节点存在于全量预设体树、且满足节点匹配条件时,则将遍历到的节点与结果树进行合并,以更新结果树,实现结果树的生长,使得结果树与公共预设体树越相似。

在一些实施例中,当遍历到的节点存在于全量预设体树、且满足节点匹配条件时,将遍历到的节点与结果树进行合并,包括:当确定遍历到的节点存在于全量预设体树,且根据遍历到的节点在全量预设体树中的编码信息,确定结果树中的根节点为遍历到的节点的祖先节点时,确定从全量预设体树中与结果树中的根节点对应的节点开始,到全量预设体树中与遍历到的节点对应的节点之间的路径,并将路径与结果树进行合并,并将路径中不存在于公共预设体中的节点标识为中间节点。

作为示例,在确定了结果树的根节点后,继续遍历公共预设体树的后代节点,当确定遍历到的节点存在于全量预设体树时,则根据遍历到的节点在全量预设体树中的编码信息,确定结果树中的根节点为遍历到的节点的祖先节点时,确定从全量预设体树中与结果树中的根节点对应的节点开始,到全量预设体树中与遍历到的节点对应的节点之间的路径,并将确定出的路径与当前的结果树合并,以更新当前的结果树,并将路径中不存在于公共预设体中的节点标识为中间节点,其中,中间节点不计入后续相似度的计算。

在一些实施例中,将匹配节点确定为与全量预设体树的子树对应的结果树的根节点之后,还包括:当确定遍历到的节点存在于全量预设体树和结果树中,且在结果树中遍历到的节点被标识为中间节点时,对结果树进行复制,并在复制得到的结果树中,去除对应遍历到的节点的后代节点,以生成新的结果树。

作为示例,在确定了结果树的根节点后,继续遍历公共预设体树的后代节点,当确定遍历到的节点A存在于全量预设体树和结果树中,且在结果树中遍历到的节点A被标识为中间节点时,可以对该结果树进行复制,以得到一棵复制的结果树,并去除复制的结果树中对应遍历到的节点A的后代节点,以生成一棵新的结果树。

在一些实施例中,将遍历到的节点与结果树进行合并,以更新结果树之后,还包括:确定多个结果树中每个结果树中匹配到的节点数量;根据每个结果树中匹配到的节点数量,对多个结果树进行降序排序,保留排序在前的至少一个结果树。

在本发明实施例中发现,每匹配一个节点都需要遍历所有的结果树(所有的结果树构成结果森林),但结果森林中存在大量较低匹配度的结果树,较低匹配度的一个必要但不充分条件就是当前匹配的节点较少。为了提高公共预设体树与全量预设体树的匹配速率,因此,在遍历到匹配的节点,并更新结果树后,对所有结果树进行有损过滤,即确定所有结果树中每个结果树中匹配到的节点数量,并根据每个结果树中匹配到的节点数量,对所有结果树进行降序排序,保留排序在前的N个结果树,其中N为自然数,N的取值越大,公共预设体树与全量预设体树的匹配速率越慢。

在一些实施例中,保留排序在前的至少一个结果树之后,还包括:针对保留的结果树中的每个结果树执行以下处理:获取结果树的根节点,并在全量预设体树中获取以结果树的根节点为根节点的子树,并遍历子树的每个节点,以执行以下处理:当节点存在于公共预设体树中,且节点在结果树中被标识为中间节点时,将节点与结果树进行合并,以更新结果树;当节点不存在于结果树中时,将节点与结果树进行合并,以更新结果树。

在本发明实施例中发现,对结果树进行有损过滤可能会导致节点漏匹配或节点被标记为中间节点而被忽略的情形。为了避免节点漏匹配或节点被标记为中间节点而被忽略的情形,因此需要对有损过滤后的结果树进行修正。在保留排序在前的至少一个结果树之后,针对保留的结果树中的每个结果树执行以下处理:例如当前结果树为结果树A,获取结果树A的根节点,并在全量预设体树中获取以结果树A的根节点为根节点的子树,遍历子树的每个节点,一种方案是,当遍历的节点存在于公共预设体树中,且遍历到的节点在结果树中被标识为中间节点时,则将遍历到的节点与结果树进行合并,以更新结果树;另一种方案是,当遍历到的节点不存在于结果树中时,将遍历到的节点与结果树进行合并,以更新结果树。

在步骤104中,从多个结果树中筛选出与公共预设体树匹配的结果树,以作为匹配结果树。

其中,在服务器获得了与全量预设体树的子树一一对应的多个结果树之后,可以根据每个结果树与公共预设体树的相似度,从多个结果树中筛选出与公共预设体树匹配的结果树,以作为匹配结果树,以用于后续替换操作,生成嵌套预设体树。

在一些实施例中,从多个结果树中筛选出与公共预设体树匹配的匹配结果树之前,还包括:根据以下公式,确定多个结果树中每个结果树与公共预设体树的相似度:

Figure BDA0002524972630000181

其中,Sim(Q,D)表示结果树D与公共预设体树Q的相似度,w表示结果树D的匹配节点数与公共预设体树Q的总节点数的比值,Vm表示结果树D中匹配的节点总数,Vt表示公共预设体树Q的节点总数,Im表示结果树D中匹配的图像类型的节点总数,It表示结果树D中所有的图像类型的节点总数,Tm表示结果树D中匹配的文本类型的节点总数,Tt表示结果树D中所有的文本类型的节点总数,Qu表示公共预设体树Q的总节点数,Du表示结果树D的总节点数。

其中,Vm与Vt的比值表示结果树D的总节点与公共预设体树Q的总节点的相似度,Im与It的比值表示结果树D中图像类型的节点与公共预设体树Q中图像类型的节点的相似度,Tm与Tt的比值表示结果树D中文本类型的节点与公共预设体树Q中文本类型的节点的相似度。由于结果树D和公共预设体树Q的节点与相似度Sim(Q,D)有紧密的关系,通过结果树D和公共预设体树Q中的各种简单的节点数,即匹配节点数、总节点、图像类型的节点数、文本类型的节点数,可以确定结果树D与公共预设体树Q的相似度。因此,通过简单的节点数的比值运算,即可快速获得准确的相似度Sim(Q,D),从而节约了计算量,并提高相似度的计算效率,以便提高后续开发格式文件的生成速度以及准确度。

在步骤105中,将全量预设体树中与匹配结果树对应的子树、与全量预设体树之间的引用关系,替换为公共预设体树与全量预设体树之间的引用关系,以生成嵌套预设体树。

其中,在服务器从多个结果树中筛选出匹配结果树后,可以改变全量预设体树中的引用关系,将全量预设体树中与匹配结果树对应的子树、与全量预设体树之间的引用关系,替换为公共预设体树与全量预设体树之间的引用关系,以生成嵌套预设体树,从而在全量预设体树中引入公共预设体树,避免重复开发,提高开发的速率。

在一些实施例中,从多个结果树中筛选出与公共预设体树匹配的结果树,以作为匹配结果树,包括:确定与公共预设体树的相似度最高的结果树,以作为与公共预设体树匹配的匹配结果树;将全量预设体树中与匹配结果树对应的子树、与全量预设体树之间的引用关系,替换为公共预设体树与全量预设体树之间的引用关系,包括:对多个公共预设体树与对应的匹配结果树之间的相似度进行降序排序,并将排序在前的至少一个公共预设体树确定为待引用的公共预设体树;将全量预设体树中与匹配结果树对应的子树、与全量预设体树之间的引用关系,替换为待引用的公共预设体树与全量预设体树之间的引用关系。

其中,匹配结果树与待引用的公共预设体树对应。在服务器确定所有结果树中每个结果树与公共预设体树的相似度之后,可以选取与公共预设体树的相似度最高的结果树,以作为与公共预设体树匹配的匹配结果树。当存在多个公共预设体树时,将多个公共预设体树与对应的匹配结果树之间的相似度进行降序排序,并将排序在前的M个公共预设体树确定为待引用的公共预设体树,其中M为自然数,并将全量预设体树中与匹配结果树对应的子树、与全量预设体树之间的引用关系,替换为待引用的公共预设体树与全量预设体树之间的引用关系,以生成嵌套预设体树。

在服务器确定所有结果树中每个结果树与公共预设体树的相似度之后,还可以对每个结果树与公共预设体树的相似度进行降序排序,将排序在前的K个结果树确定为与公共预设体树匹配的K个匹配结果树。当存在多个公共预设体树时,将多个公共预设体树与对应的匹配结果树之间的相似度进行降序排序,并将排序在前的M个公共预设体树确定为待引用的公共预设体树,其中M为自然数,并将全量预设体树中与匹配结果树对应的子树、与全量预设体树之间的引用关系,替换为待引用的公共预设体树与全量预设体树之间的引用关系,以生成嵌套预设体树。

在步骤106中,对嵌套预设体树进行结构转换,以生成在图形界面开发工具用于开发图形界面的开发格式文件。

由于公共预设体树与匹配结果树相似,即公共预设体树的功能、内容与匹配结果树的功能、内容相似,因此,全量预设体树与嵌套预设体树相似。对嵌套预设体树进行结构转换,可以生成在图形界面开发工具用于开发图形界面的开发格式文件,开发格式文件所呈现的感官信息与图像格式文件所呈现的感官信息相同,例如图像格式文件所呈现的效果图为一张游戏虚拟人物图,开发格式文件所呈现的效果图也是一张相似的游戏虚拟人物图。

下面,将说明本发明实施例在一个实际的应用场景中的示例性应用。

本发明实施例可以应用于游戏界面开发的应用场景中。如图4所示,相关技术中,游戏界面(User Interface,UI)系统开发工作流可以由美工人员和开发人员共同实现,图4中箭头方向为工作流的输出方向,在美工人员输出的PSO效果图经过一系列变换后,导入到游戏工程中形成工程资源。开发人员根据美工人员输出的PSD效果图,手动在游戏工程内将效果图制作成UI系统的Prefab。在制作的过程中,UI系统的部分公共部分将引用已有的Prefab。

然而,相关技术存在一些问题,问题如下:1)手动制作的Prefab与效果图存在位置偏差,由于人眼偏差,且人工制作时高度依赖开发人员的经验及技术水平,因此,工作流中的手动制作与效果图往往存在位置偏差;2)引用错误的相似资源,基于人工制作的经验和技术水平的原因,可能在制作时错误地引用资源;3)未正常引用已有的公共Prefab,客户端程序(开发程序)往往会基于业务逻辑的原因,提取出部分公共功能作为公共Prefab,在人工制作时依赖于开发经验,可能未正常引用公共Prefab,造成冗余的开发时间,降低开发效率。

为了解决上述问题,本发明实施例提出了一种基于感官的树形结构生成方法,通过感官上UI元素包围盒的包含关系,将UI界面(Photoshop中的文件与Unity3D中的文件)无歧义的表征为一棵数据结构中的普通树形结构,而不管UI界面存在于Photoshop中或是在游戏工程中,将PSD和Prefab统一到了同一个维度,实现PSD到Unity3D的文件的快速创建。进而,还可以精准引用已有公共Prefab,以快速判定Unity3D中资源的相互引用关系,可以无位置偏差的1:1复原效果图,可以自动化地将PSD导出为Prefab。因此,本发明实施例具有不依赖人工操作,准确性高的特点,能极大程度地提升UI系统的开发效率,降低开发人员的开发压力,提高游戏UI系统的开发速度。

如图5A和5B所示的一款多人同屏自由战斗的角色扮演游戏(Role Playing Game,RPG)手游,如图5A所示,该手游中的数值系统较多,如福利501,如图5B所示,该手游中的战斗系统数量较多,如战魂502。在给玩家带来更丰富的游戏体验的同时,多个系统的复杂UI的开发量也非常繁重。从产品需求出发,该手游对UI系统的开发需求较多。因此,本发明实施例需要解决游戏UI系统开发效率问题,极大程度提升开发效率,同时提高UI系统复原质量。

其中,本发明实施例中的Prefab又称预设体,是一种资源类型,可以重复使用并实例化为游戏对象。实质上Prefab可以理解为一系列工程资源的组合的链接,保存了使用的所有资源的信息、相对位置、缩放、旋转等信息。在Unity中,支持预设体的嵌套(NestedPrefab),即Prefab可以由其他Prefab组成,并非所有的Prefab都需要持有对具体工程资源的直接引用。如图6A所示,图中的预设体601持有了对所有资源的直接引用,即被定义为全量预设体;如图6B所示,图中的层次结构为预设体之间互相嵌套持有引用,例如预设体602引用预设体603和预设体604,即被定义为嵌套预设体。

本发明实施例可以将PSD文件表示为一棵树,同时将Unity3D文件也表示为一棵树,从而将PSD文件与Unity3D文件的对应关系问题转换为在一棵给定的树中寻找对应子树的问题。

其中,美工人员根据游戏系统的交互,在Photoshop中制作游戏系统的效果图,效果图由多个图层组成,图层与图层可以形成组,图层与图层、图层与组、组与组之间的关系是由美工人员在制作的过程中决定,即满足视觉上的前后遮挡关系。

Unity3D(Prefab)是由开发人员在客户端程序上,根据美工人员提供的效果图,在项目工程中索引对应的资源(即切图),将资源摆放到效果图对应位置后形成游戏资产(Prefab)。Prefab由一层或多层资产(Asset)组成,资产与资产之间的关系除满足视觉上的前后遮挡关系外,有时还需满足逻辑上的分组。

作为示例,如图7所示,虽然,Photoshop中的层次结构和Unity3D中的层次结构有差异。但是,实质是同一个意象的两种不同思维的具体表现,即呈现的效果图是相同的。

游戏开发过程中,UI系统的开发占用了大量的时间。通常游戏中使用的UI界面可由美工人员或开发人员实现。由美工人员实现时,对UI效果图的复原效果有保证,但其思路与开发人员的思路有差异,即开发人员对于拼好的UI界面,还需要对元素的子孙关系进行调整;由开发人员实现时,由于拼界面和写代码的都是同一个人,UI界面的层次结构关系能直接确定,但UI界面的复原质量没有保证。

因此,本发明实施例提出一种基于感官的树生成方法,通过感官上UI元素包围盒的包含关系,将UI界面无歧义的表征为一棵普通树,Photoshop文件与Unity3D文件都可以通过树结果统一到同一个维度,从而使得PSD和Prefab可以用同一种树形结构表示,PSD到Prefab的快速生成的过程,即可转换成普通树的复原。

将Prefab无歧义地生成树结构后,可以通过树的相似度对比,识别Prefab的组成(即大树找小树),检测Prefab的差异等。在游戏开发过程中,可能出现Prefab的原始PSD文件丢失的情况,此时对该Prefab的修改可能变得困难,通过本发明实施例提出的PSD到Prefab的对应关系可以解决该问题,只需将已有Prefab反向回溯生成对应PSD即可。

下面介绍本发明实施例的核心原理:

PSD与Prefab之间虽然存在结构上的差异,但视觉感官上是一致的。考虑到游戏引擎会将游戏内可见的UI元素(如图像,文本等)渲染为一个矩形,同时,Photoshop文件中的图层也是以矩形为单位,根据这些矩形的嵌套关系,可以无歧义的将表征相同感官的PSD与Prefab转换成同一个树结构。PSD与Prefab在基于视觉感官的维度达到统一,即可实现PSD快速创建Prefab。

关于矩形的渲染,无论是Photoshop还是游戏引擎,都需要将文字和图像渲染到屏幕上才能被人看见。对于Photoshop和游戏引擎来说,都会将图像和文字渲染为矩形(最小包围盒)。如图8所示,无论图像的形状是什么,或者文字的内容是什么,最后都是以矩形的形式表现的,例如矩形801包围三角形,矩形802包围“华”字,矩形803包围“夏”字。

由于无论是在Photoshop还是在游戏引擎中,图像或文字都会被渲染为矩形,则在屏幕坐标系内的这些矩形就一定存在相互位置关系,例如相离、相交和包含的位置关系。如图9所示,当矩形A和矩形B为相交或相离的位置关系时,矩形A和矩形B对应的节点的关系为兄弟关系或旁系亲属关系;当矩形A和矩形B为包含关系时,矩形A和矩形B对应的节点的关系为祖先关系。

关于树结构,树结构是数据结构中的一种非线性数据结构,它是树中的各个节点按照分支关系组织起来的结构。本发明实施例的树结构中,各个节点对应Photoshop中的文字节点或图片节点;各个节点对应游戏引擎中的文字节点或图片节点。这些节点根据上述矩形包含关系,生成节点之间的关系,从而生成树结构。

作为示例,如图10所示的效果图,效果图1001本质上由5层图像或文字组成,即文字1002、图像1003、图像1004、图像1005以及图像1006。如图11所示,在Photoshop中,美工人员能将层次结构调整为如图11所示的结构,分别为“已拥有角标”1101(对应图10中的文字1002)、“角标绿”1102(对应图10中的图像1003)、“品质框”1103(对应图10中的图像1004)、“物品贴纸”1104(对应图10中的图像1005)以及、“通用底”1105(对应图10中的图像1006)。如图12所示,在游戏引擎中,程序可能基于逻辑考虑,会将层次结构调整为如图12所示的结构,分别为“rawImg”1201(对应图10中的图像1006)、“img_53111003”(对应图10中的图像1005)、“rawImg_BorderOrange”(对应图10中的图像1004)、“img_CM_Jiaobiao”(对应图10中的图像1003)以及、“txt_已拥有”(对应图10中的图文字1002)。其中,这些层次所对应的文字或图片在Photoshop或游戏引擎中会被渲染成一个个的矩形,而这些矩形的相互关系决定了这些层次所对应的节点的相互关系,由这些相互关系就可以生成如图13所示的树结构,即基于感官的树结构。

下面介绍PSD树的生成方法和关于Prefab树的生成方法:

A)关于PSD树的生成方法

在PhotoShop中,图层底部表示屏幕后(即远离屏幕观察者),图层顶部表示屏幕前(靠近屏幕观察者),如图14所示,图层1401远离屏幕观察者,图层1402靠近屏幕观察者。其中,PSD树的生成方法包括以下步骤:

步骤11,从Photoshop导出PSD的描述文件,以Json格式存储(即Json文件),Json文件实际上是从屏幕前到屏幕后的树结构的深度优先遍历结果。

步骤12,读取Json文件,并逐结构读取图层信息,过滤美工人员在制作过程中新建的组(类似于文件系统中的文件夹结构,没有具体的文件信息,不会被Photoshop渲染),只保留图层的图片信息和文本信息。

步骤13,将已保存的图层信息,根据图层的包围面积(矩形面积)降序排列,当面积相同且坐标相同时,按照读取顺序倒序排列,以保证生成的树的层次结构无二义性。

步骤14,为每个图层节点设置标志位置位,该标志位置位用于表征图层节点是否找到父节点,初始标志位置位标识为未找到父节点。

步骤15,顺序读取已降序排列的图层信息,对每一个图层节点,向后(当前图层到最大面积的图层的方向)找到第一个可完整包含当前图层节点的图层时,将包含当前图层节点的图层作为当前图层的父节点,同时将当前图层节点的标志位置位表示为已找到父节点。

步骤16,除最后一个图层节点外,当所有图层已找到父节点时,则直接返回至最后一个节点。当存在未找到父节点的图层,则新建一个根(Root)节点,并将所有未找到父节点的图层节点作为该Root节点的子节点。

B)关于Prefab树的生成方法

Prefab树的生成方法包括以下步骤:

步骤21,通过Transform函数命令,获取Transform节点所有包含Graphic(图像和文本)组件的Transform子节点,并存储在列表中。

步骤22,为Transform节点创建结构体Element(数据结构,即树的节点的程序表现)。

步骤23,反向步骤21中获取到的所有Transform子节点的列表顺序,以更正Transform子节点的顺序。

步骤24,遍历列表,向后(当前节点到最大面积的节点的方向)找到第一个完全包含当前节点的父节点,并将当前节点添加到父节点下,其中,包含的条件为:Rect.Contains(矩形包含)。

步骤25,遍历结果集,当所有子节点(除队尾节点外)都找到父节点时,则Prefab树创建成功,树的根就是队尾节点,如图15A所示,除队尾节点外,所有节点存在父节点。

步骤26,当存在节点未找到父节点时,则创建一个新的Root节点做所有没有父节点的节点的父节点,如图15B所示,节点1501创建的Root节点。

如图16所示,根据PSD树的生成方法从Photoshop的PSD效果图生成感官树结构与根据Prefab树的生成方法从Prefab生成的感官树结构是相同的。

关于树的匹配,将Prefab表示成树结构后,大Prefab对小Prefab的引用关系(全量Prefab对公共Prefab的引用关系,或者全量Prefab树对公共Prefab树的引用关系)就转变成了树的引用关系,即在树结构中找子树,如图17所示,Prefab对Prefab的引用关系转换为唯一感官树对子树的引用关系。

本发明实施例提出的基于树的相似度计算的方案,首先需要明确树的匹配模型的概念。树的匹配是指两棵树(一般为用户需求树和数据源树,用户需求树是指待匹配的子树,在本发明实施例中来源于所有已有的Prefab(公共Prefab)生成的树(公共预设体树)所组成的森林;数据源树(目标树)来源于输入的树,在本发明实施例中来源于全量Prefab所生成的树(全量预设体树))之间的映射关系,即两棵树之间具有映射关系的节点对之间的对应关系及其保持的代际关系。通过计算树的相似度,并按相似度降序排列,可以快速获取与用户需求最相近的匹配结果。

其中,树的匹配模型主要包含3类,分别为树嵌入匹配、树包含匹配、树包容匹配。关于树嵌入匹配,映射的节点对的定义域必须与用户需求树的节点集合相等,且树的结构、节点必须完全一致,映射的节点对之间的父子关系也必须完全一致,不允许出现其他的兄弟节点或孩子节点,树嵌入匹配是一种精确匹配,精确度极高,但由于匹配要求苛刻,匹配率相对较低,如图18A所示,节点1801与节点1804完全对应、节点1802与节点1805完全对应、节点1803与节点1806完全对应。关于树包含匹配,映射的节点对的定义域必须与用户需求树的节点集合相等,映射的节点对之间的关系为满足祖孙关系即可,允许出现多余的节点,树的包含匹配的匹配精确度小于树的嵌入匹配,但匹配率有所提高,如图18B所示,节点1804与节点1805之间存在多余的节点1807。关于树包容匹配,映射的节点对的子集合为用户需求树的节点集合的子集即可,映射的节点对之间的关系为满足祖孙关系即可,允许出现多余的节点,或者缺失节点,树的包容匹配的匹配精确度在三种匹配模型中最低,但匹配率最高,如图18C所示,节点1801与节点1804对应、节点1802与节点1805对应、节点1803没有对应的节点。

本发明实施例中定义节点结构体TreeElement(树的节点),关键信息包含节点类型、引用资源、包围矩形等。由于数据源树(全量Prefab树)的复杂性,以及公共Prefab树需要保持一定的通用性,且Prefab树是基于感官生成的,树的父子节点中可能***非当前数据源树的节点。为了支持节点的跨层匹配和低相似度的树匹配,本发明实施例中的树匹配模型均是基于树包容匹配进行的。

其中,基于树的包容匹配在对树进行聚类时,随着树的节点和层数的增大,这种匹配方式的计算时间呈乘法级增加,在匹配大规模节点(大规模节点的非严格定义为:层数大于5层,节点数量大于50个。在本发明实施例的应用场景中,层数基本都会高于5层,节点数量远大于150个,大概率处于100-200个之间)时,计算速度较慢,不满足可用性要求。

本发明实施例在对大规模节点的树的包容匹配时,提出一种快速匹配方案:在逐节点匹配时,对结果森林(结果树所形成的森林)做有损过滤,待全部节点匹配结束后,对匹配结果进行反向重匹配,以修正匹配结果。本发明实施例提出的二次匹配方案,将大规模节点树的包容匹配时间复杂度降低至与节点数量呈线性关系O(n),满足可用性要求,同时,树的相似度结果不受速度优化的影响。

关于树相似度计算存在3种方式,分别为基于树结构的编辑距离、基于路径分割技术以及基于节点间路径权重的匹配方式。关于基于树结构的编辑距离,树的编辑距离是指由一棵树变换到另一棵树的最小代价,变换手段包括修改节点、***、删除节点,这种方式计算复杂度较高,在大规模节点的相似度计算中耗时较长。关于基于路径分割技术,定义每一个节点相对于树根节点的路径,基于路径匹配计算相似度,这种方法不能很好的体现兄弟节点之间的关系,且强依赖于根节点的存在,在树的包容匹配中,根节点是有可能是不存在映射关系的,因此基于路径分割技术的相似度计算不能很好的应用于本发明实施例的应用场景中。关于基于节点间路径权重的匹配方式,基于节点间路径权重的匹配方式准确性较高,在匹配开始前,需要提供每一条路径分支的权重分量,树的路径分支总数与节点总数的关系为v=u-1,其中v为路径总数,u为节点总数,在大规模节点树的匹配中,准确分割所有节点的加权权重的工作量较大,且不能保证分割的准确性。

因此,在本发明实施例提出相似度的计算依赖于用户需求树的总节点数、数据源树的总节点树以及映射结果集的匹配节点数。另外,结合本发明实施例的应用场景,将节点的分类型匹配节点的总数纳入相似度计算中,本发明实施例提出的相似度计算能很好地满足本发明实施例的应用场景。

下面介绍树的相似度计算方案:

首先,介绍树的结构编码,将用户需求树与数据源树分层遍历,对每个节点进行编码,节点编码的规则为:从根节点开始,第n层的第m个节点的编码为an-1.m其中an-1为该节点相对于父节点的索引。本发明实施例中的用户需求树和数据源树基于同样的树生成方法生成,父子节点满足节点包围矩形的包含关系,兄弟节点满足包围矩形面积的降序排列关系,因此,用户需求树与数据源树都是唯一的有序树,对于给定节点的编码在同一棵树中具有唯一性,在多次计算中具有稳定性。如图19所示,节点F的编码为1,节点D的编码为1.1,节点A的编码为1.2。

关于节点的匹配规则包含以下规则:

1)规则1,根据节点编码,确定在数据源树中查找的节点与用户需求树中查找的节点分别与结果森林中的结果树的节点满足祖先关系。

2)规则2,当查找到的节点满足规则1时,生成一个从当前结果树的根节点到当前节点的路径p,p中如果含有当前结果树不包含的节点时,该不包含的节点并入结果树,并记为中间节点,其中,中间节点用于输出匹配结果的结构,但不计入相似度计算,也不计入树的相等判断或子树判断。

3)规则3,查找的节点已经被当前结果树包含,且已被标记为中间节点时,则复制当前结果树,生成一棵新树q,并去除新树q中该节点的所有后代节点,然后将去除后代节点的树q作为新的结果树,放入结果森林中。

4)规则4,在数据源树中查找的节点与用户需求树中查找的节点除满足规则1的关系外,还需满足以下子规则:

A)子规则1,当前节点与结果树的兄弟节点的合并包围矩形满足用户需求树中当前节点与兄弟节点的包围矩形关系。该规则是基于本发明实施例的应用场景提出的,由于Prefab中文字是大量存在的,相对于图像资源,文字的内容是可变的。因此,如果不加限制地匹配文字类型的节点,将导致结果森林存在很多低相似度的结果树,这些结果树包含少量的图像节点和个别文字节点。限制合并包围矩形后,将大大减少低相似度结果树的产生。

B)子规则2,当前节点与结果树的兄弟节点的方向向量与用户需求树中对应方向向量的朝向角度在一定阈值范围内。其中,方向向量的产生方式为:当前节点的包围矩形中心点对应兄弟节点的包围矩形中心点。该规则是基于本发明实施例的应用场景提出的,Prefab中锚点的设置仅影响节点方向向量的值,但不会剧烈影响方向向量的朝向。

5)规则5,将当前节点合并入结果树后,结果树不能与结果森林中其他结果树相同,或者是结果森林中其他结果树的子树。该规则是基于优化匹配结果提出的,如果结果树是其他结果树的子树,则其相似度一定相对较低。

下面介绍树的匹配方法,该方法包括以下步骤:

步骤301,对用户需求树和数据源树的节点编码。

步骤302,读取用户需求树的根节点,在用户需求树中查找满足匹配规则的节点,复制节点放入结果森林,其匹配规则如节点的匹配规则中的规则2所示。

步骤303,读取下一层节点,当存在下一层节点时,则执行步骤304;当不存在下一层节点,则执行步骤310。

步骤304,在数据源树中,找到当前节点的所有满足匹配规则的节点,放入临时节点集d中。

步骤305,对于临时节点集d中的每一个节点,遍历结果森林的每一棵树。

步骤306,当当前节点满足节点的匹配规则中的规则3,则产生新的结果树,并执行步骤309;否则,执行步骤307。

步骤307,当结果树的根节点是当前节点的祖先节点,则找到结果树中离当前节点最近的祖先节点n,生成一条节点n到当前节点的路径,按照节点的匹配规则中的规则2将路径与结果树合并,并执行步骤309;否则,执行步骤308。

步骤308,当不存在当前节点的祖先节点的结果树,则复制当前节点作为一棵新树,并执行步骤309;否则,执行步骤310。

步骤309,当当前节点满足节点的匹配规则中的规则5,则将结果树放回结果森林,并执行步骤310。

步骤310,确定当前子节点的兄弟节点是否存在,当存在当前子节点的兄弟节点,则执行步骤304;否则,执行步骤311。

步骤311,确定当前节点的兄弟节点是否存在,当存在当前节点的兄弟节点,则执行步骤303;否则,执行步骤312。

步骤312,根据相似度计算公式计算结果森林中每一棵结果树与用户需求树的相似度,并执行步骤313。其中,相似度计算公式为Sim(Q,D)表示结果树D与用户需求树Q的相似度,w表示权重,即结果树D的匹配节点数与用户需求树Q的总节点数的比值,Vm表示结果树D中匹配的节点总数,Vt表示用户需求树Q的节点总数,Im表示结果树D中满足映射关系的图像类型的节点总数,It表示结果树D中所有的图像类型的节点总数,Tm表示结果树D中满足映射关系的文本类型的节点总数,Tt表示结果树D中所有的文本类型的节点总数,Qu表示公共预设体树Q的总节点数,Du表示结果树D的总节点数。当用户需求树Q与结果树D完全相同时,Sim(Q,D)的结果为1;当用户需求树Q与结果树D不相同时,Sim(Q,D)随相似程度的降低而逐渐降低直至趋近于0。

步骤313,输出相似度最高的结果树,并结束当前流程。

本发明实施例中发现,上述树的匹配过程的计算准确度能满足小规模节点树的匹配需求,但存在结果森林数量呈乘法关系增长的问题,在大规模节点树的匹配过程中,可能造成内存溢出或匹配程序未响应的问题。因此,本发明实施例在上述树的匹配过程的基础上,提出了一种快速匹配方案:在逐节点匹配过程中,对结果森林做有损过滤,待全部节点匹配结束后,对匹配结果进行反向重匹配,以修正匹配结果。该快速匹配方案如下所示:

在步骤309和步骤310之间,还可以包括步骤309.1:在步骤309.1中,对结果森林的所有结果树做匹配节点数量排序(中间节点不计数),仅保留前N个结果树,N为正整数,其中N=10为经验值,N取值越大,计算速度越慢,但计算结果越接近不做有损过滤的情况。

其中,增加此步骤309.1的原因是:对于每一个待匹配的节点都需要遍历结果森林,但结果森林中存在大量较低匹配度的结果树,较低匹配度的结果树的一个必要但不充分条件就是当前匹配到的节点较少。因此,过滤掉较低匹配度的结果树可以大幅提升匹配速率,将匹配时间复杂度由O(m)=m*O(m-1)的乘法关系降低为与节点数量的线性关系O(n)。

为了弥补有损过滤可能会导致的匹配相似度偏离问题,本发明实施例提出反向匹配修正的方案,即在步骤311和步骤312之间,还包括步骤311.1:在步骤311.1中,对结果森林中的每一棵结果树,取其根节点r,在数据源树中获取以r为根节点的子树t。遍历子树t的每一个节点n,当节点n满足节点的匹配规则中的规则1和规则4,且节点n存在于用户需求树,且节点n在结果树中被标记为中间节点,或节点n不存在,则将节点n合并入当前结果树,将结果树放回结果森林。

通过步骤311.1,可以修正由于有损过滤而导致的节点漏匹配或节点被标记为中间节点而被忽略的情形。该快速匹配方案可大幅加快匹配速度,且匹配结果不受速度优化的影响。运用本发明实施例所提出的树的相似度的计算方法,对比2棵180节点的树耗时约3秒,能较好满足工具的可用性要求,相似度计算结果为1,符合实际应用场景,且无节点漏匹配或被忽略的情况发生。

作为示例,如图20所示,GameObject图为数据源树,rawImg_Bottom1为最终匹配的用户需求树,maxMatch为匹配的结果树。根据rawImg_Bottom1和maxMatch,可以看出匹配结果为1,符合实际应用场景。

本发明实施例提出的基于树的相似度计算的Prefab匹配方案,将Prefab的嵌套关系转换成了树的相似度计算,可以应用于以下场景:

(1)Prefab的组成识别。根据PSD自动生成全量Prefab后,可以识别全量Prefab由哪些公共Prefab组成,避免重复的对资源的直接引用。

(2)Prefab的差异对比。本发明实施例提出的相似度计算方法与树的层数呈线性关系,在计算较大规模的树的相似度时,仍保持良好的计算速度。可用于需求变更时,新的Prefab与已有Prefab(公共Prefab)的差异对比,也可用于自动生成同一系统的效果图的差异部分。

(3)同家族Prefab扫描与识别。同家族Prefab是指引用资源不同,但功能相同或相近的一类Prefab。例如物品Prefab,物品品质框和物品图像可能是不同的资源,但其被归为同一个家族。

综上,本发明实施例解决了在Unity3d引擎开发的游戏内使用字体描边效果(手工制作)效率较低的问题,将Photoshop的文件和游戏引擎的文件统一到同一个维度,提高游戏开发的效率,提升了游戏美术品质的同时,降低了游戏开发的压力和工作量。

至此已经结合本发明实施例提供的服务器的示例性应用和实施,说明本发明实施例提供的在图形界面开发中处理效果图的方法,下面继续说明本发明实施例提供的在图形界面开发中处理效果图的装置555中各个模块配合实现在图形界面开发中处理效果图的方案。

接收模块5551,用于接收图像处理程序输出的图形界面效果图的图像格式文件;第一转换模块5552,用于对所述图像格式文件进行结构转换,以生成对应所述图像格式文件的全量预设体树,所述全量预设体树包括若干个子树;生成模块5553,用于生成与所述全量预设体树的子树一一对应的多个结果树;筛选模块5554,用于从所述多个结果树中筛选出与公共预设体树匹配的结果树,以作为匹配结果树;替换模块5555,用于将所述全量预设体树中与所述匹配结果树对应的子树、与所述全量预设体树之间的引用关系,替换为所述公共预设体树与所述全量预设体树之间的引用关系,以生成嵌套预设体树;第二转换模块5556,用于对所述嵌套预设体树进行结构转换,以生成在图形界面开发工具用于开发图形界面的开发格式文件。

在一些实施例中,所述第一转换模块5552还用于对所述图像格式文件包含的多个图层进行切割处理,得到对应所述多个图层的多个切图;根据所述多个切图的位置关系,构建对应所述图像格式文件的全量预设体树。

在一些实施例中,所述第一转换模块5552还用于针对所述多个图层中的每个图层执行以下处理:将图层的内容的横向长度确定为包围所述内容的矩形的长度;将图层的内容的纵向长度确定为包围所述内容的矩形的宽度;通过包围所述内容的矩形,对所述图层中的内容进行切割,以生成对应所述图层的切图。

在一些实施例中,所述第一转换模块5552还用于当所述多个切图中任意两个切图的位置关系为相离关系或相交关系时,确定所述两个切图对应的节点的关系为兄弟关系或者旁系亲属关系;当所述两个切图的位置关系为包含关系时,确定所述两个切图对应的节点的关系为祖先关系;对多个切图对应的节点的关系进行组合,以生成对应所述图像格式文件的全量预设体树。

在一些实施例中,所述第一转换模块5552还用于对所述多个切图的面积进行降序排列,并按照降序顺序遍历降序排列后的多个切图;针对遍历到的切图执行以下处理:当按照从遍历到的切图到最大面积的切图的查找方向,查找到包含遍历到的切图的目标切图时,将所述包含所述当前遍历到的切图的目标切图,确定为所述遍历到的切图的父节点,并将所述遍历到的切图的标志位置位标识为已找到父节点;对所述多个切图对应的节点的关系进行组合,以生成对应所述图像格式文件的全量预设体树。

在一些实施例中,所述生成模块5553还用于分别对公共预设体树以及所述全量预设体树进行节点编码,得到对应所述公共预设体树的各节点的编码信息、以及对应所述全量预设体树的各节点的编码信息;根据所述公共预设体树的各节点的编码信息以及所述全量预设体树的各节点的编码信息,将所述公共预设体树的各节点与所述全量预设体树的各节点进行匹配;将在所述全量预设体树中匹配到的多个节点所构成的树,确定为与所述全量预设体树的子树对应的结果树。

在一些实施例中,所述生成模块5553还用于从所述全量预设体树中匹配到与所述公共预设体树的根节点对应的匹配节点时,将所述匹配节点确定为与所述全量预设体树的子树对应的结果树的根节点;遍历所述公共预设体树中除根节点以外的节点,当遍历到的节点存在于所述全量预设体树、且满足节点匹配条件时,将遍历到的节点与所述结果树进行合并,以更新所述结果树。

在一些实施例中,所述生成模块5553还用于当确定遍历到的节点存在于所述全量预设体树,且根据所述遍历到的节点在所述全量预设体树中的编码信息,确定所述结果树中的根节点为所述遍历到的节点的祖先节点时,确定从所述全量预设体树中与所述结果树中的根节点对应的节点开始,到所述全量预设体树中与所述遍历到的节点对应的节点之间的路径,并将所述路径与所述结果树进行合并,并将所述路径中不存在于所述公共预设体中的节点标识为中间节点。

在一些实施例中,所述生成模块5553还用于复制模块,用于当确定遍历到的节点存在于所述全量预设体树和所述结果树中,且在所述结果树中所述遍历到的节点被标识为中间节点时,对所述结果树进行复制,并在复制得到的结果树中,去除对应所述遍历到的节点的后代节点,以生成新的结果树。

在一些实施例中,所述装置还包括:处理模块5557,用于确定多个结果树中每个结果树中匹配到的节点数量;根据每个结果树中匹配到的节点数量,对所述多个结果树进行降序排序,保留排序在前的至少一个结果树。

在一些实施例中,所述生成模块5553还用于针对保留的结果树中的每个结果树执行以下处理:获取所述结果树的根节点,并在所述全量预设体树中获取以所述结果树的根节点为根节点的子树,并遍历所述子树的每个节点,以执行以下处理:当所述节点存在于所述公共预设体树中,且所述节点在所述结果树中被标识为中间节点时,将所述节点与所述结果树进行合并,以更新所述结果树;当所述节点不存在于所述结果树中时,将所述节点与所述结果树进行合并,以更新所述结果树。

在一些实施例中,所述装置还包括:确定模块5558,用于根据以下公式,确定多个结果树中每个结果树与所述公共预设体树的相似度:其中,Sim(Q,D)表示结果树D与所述公共预设体树Q的相似度,w表示结果树D的匹配节点数与公共预设体树Q的总节点数的比值,Vm表示结果树D中匹配的节点总数,Vt表示公共预设体树Q的节点总数,Im表示结果树D中匹配的图像类型的节点总数,It表示结果树D中所有的图像类型的节点总数,Tm表示结果树D中匹配的文本类型的节点总数,Tt表示结果树D中所有的文本类型的节点总数,Qu表示公共预设体树Q的总节点数,Du表示结果树D的总节点数。

在一些实施例中,所述筛选模块5554还用于确定与所述公共预设体树的相似度最高的结果树,以作为与所述公共预设体树匹配的匹配结果树;所述替换模块还用于对多个公共预设体树与对应的匹配结果树之间的相似度进行降序排序,并将排序在前的至少一个公共预设体树确定为待引用的公共预设体树;将所述全量预设体树中与所述匹配结果树对应的子树、与所述全量预设体树之间的引用关系,替换为所述待引用的公共预设体树与所述全量预设体树之间的引用关系;其中,所述匹配结果树与所述待引用的公共预设体树对应。

本发明实施例还提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的在图形界面开发中处理效果图的方法,例如,如图3A-3C示出的在图形界面开发中处理效果图的方法。

在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个计算设备(包括智能终端和服务器在内的设备)上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

44页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:虚拟资源显示方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类