掌桥专利:专业的专利平台
掌桥专利
首页

模型渲染方法、装置、设备、存储介质及程序产品

文献发布时间:2024-04-18 19:58:21


模型渲染方法、装置、设备、存储介质及程序产品

技术领域

本申请涉及图形处理技术领域,特别涉及一种模型渲染方法、装置、设备、存储介质及程序产品。

背景技术

在一些虚拟应用场景中,为提高用户参与度,通常会增加针对虚拟角色的换装环节,来提高趣味性。

相关技术中,通过提前规划好虚拟角色模型和穿戴物模型的种类,在实际使用时,按照虚拟角色模型和穿戴物模型的种类及尺寸,如长裤短裤、虚拟角色高矮胖瘦等,搭配使用。

然而,上述方法设计难度较高,且可能由于穿戴物模型发生变更导致渲染点面数的冗余和穿帮,模型渲染效率较低。

发明内容

本申请实施例提供了一种模型渲染方法、装置、设备、存储介质及程序产品,能够提高模型渲染效率。所述技术方案如下。

一方面,提供了一种模型渲染方法,所述方法包括:

获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,所述第一模型是待被所述第二模型装扮的三维模型,所述第一模型由多个第一模型网格构成,所述第一模型网格信息用于指示所述多个第一模型网格的排布结构,所述第二模型用于覆盖所述第一模型,所述第二模型对应有预设的多个遮挡模型网格,所述遮挡网格信息用于指示所述多个遮挡模型网格的排布结构;

基于所述第一模型网格信息和所述遮挡网格信息指示的所述第一模型网格与所述第二模型之间的遮挡关系,确定所述第一模型的模型遮挡信息,所述模型遮挡信息用于指示所述多个第一模型网格中被所述第二模型遮挡的网格;

基于所述模型遮挡信息对所述第一模型进行网格可见性调整,得到目标模型,所述目标模型中包括多个目标模型网格,所述多个目标模型网格中包括所述第二模型覆盖所述第一模型时所述第一模型中可见的第一模型网格,所述目标模型网格是待渲染的模型网格。

另一方面,提供了一种模型渲染装置,所述装置包括:

处理模块,用于获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,所述第一模型是待被所述第二模型装扮的三维模型,所述第一模型由多个第一模型网格构成,所述第一模型网格信息用于指示所述多个第一模型网格的排布结构,所述第二模型用于覆盖所述第一模型,所述第二模型对应有预设的多个遮挡模型网格,所述遮挡网格信息用于指示所述多个遮挡模型网格的排布结构;

所述处理模块,还用于基于所述第一模型网格信息和所述遮挡网格信息指示的所述第一模型网格与所述第二模型之间的遮挡关系,确定所述第一模型的模型遮挡信息,所述模型遮挡信息用于指示所述多个第一模型网格中被所述第二模型遮挡的网格;

所述处理模块,还用于基于所述模型遮挡信息对所述第一模型进行网格可见性调整,得到目标模型,所述目标模型中包括多个目标模型网格,所述多个目标模型网格中包括所述第二模型覆盖所述第一模型时所述第一模型中可见的第一模型网格,所述目标模型网格是待渲染的模型网格。

另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本申请实施例中任一所述的模型渲染方法。

另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述本申请实施例中任一所述的模型渲染方法。

另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的模型渲染方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

通过获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,第一模型是待被第二模型装扮的三维模型,第一模型由多个第一模型网格构成,第一模型网格信息用于指示多个第一模型网格的排布结构,第二模型用于覆盖第一模型,第二模型对应有预设的多个遮挡模型网格,遮挡网格信息用于指示多个遮挡模型网格的排布结构;基于第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定第一模型的模型遮挡信息,模型遮挡信息用于指示多个第一模型网格中被第二模型遮挡的网格;基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,目标模型中包括多个目标模型网格,多个目标模型网格中包括第二模型覆盖第一模型时第一模型中可见的第一模型网格,目标模型网格是待渲染的模型网格,通过对第一模型进行网格可见性调整,得到目标模型,从而在模型渲染时只需要对多个目标模型网格进行渲染,而无需渲染第二模型覆盖第一模型时不可见的第一模型网格,从而减少了所需渲染的模型网格数量,从而提高渲染时中央处理器(Central Processing Unit,CPU)和图形处理器(GraphicProcessing Unit,GPU)的运算性能,提高模型渲染效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一个示例性实施例提供的实施环境示意图;

图2是本申请一个示例性实施例提供的模型渲染方法的流程图;

图3是本申请一个示例性实施例提供的模型示意图;

图4是本申请一个示例性实施例提供的目标模型示意图;

图5是本申请一个示例性实施例提供的模型遮挡信息获取方法的流程图;

图6是本申请一个示例性实施例提供的网格信息获取方法流程图;

图7是本申请一个示例性实施例提供的多线程并发处理方法流程图;

图8是本申请一个示例性实施例提供的性能对比示意图;

图9是本申请一个示例性实施例提供的网格可见性调整流程示意图;

图10是本申请一个示例性实施例提供的网格可见性调整示意图;

图11是本申请一个示例性实施例提供的网格可见性调整效果示意图;

图12是本申请一个示例性实施例提供的工作流对比示意图;

图13是本申请一个示例性实施例提供的模型渲染装置的结构框图;

图14是本申请一个示例性实施例提供的模型渲染装置模块的结构框图;

图15是本申请一个示例性实施例提供的终端的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

应当理解,尽管在本公开可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一参数也可以被称为第二参数,类似地,第二参数也可以被称为第一参数。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在一些虚拟应用场景中,为提高用户参与度,通常会增加针对虚拟角色的换装环节,来提高趣味性。相关技术中,通过提前规划好虚拟角色模型和穿戴物模型的种类,在实际使用时,按照虚拟角色模型和穿戴物模型的种类及尺寸,如长裤短裤、虚拟角色高矮胖瘦等,搭配使用。然而,上述方法设计难度较高,且可能由于穿戴物模型发生变更导致渲染点面数的冗余和穿帮,模型渲染效率较低。

本申请实施例中提供的模型渲染方法,通过获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,第一模型是待被第二模型装扮的三维模型,第一模型由多个第一模型网格构成,第一模型网格信息用于指示多个第一模型网格的排布结构,第二模型用于覆盖第一模型,第二模型对应有预设的多个遮挡模型网格,遮挡网格信息用于指示多个遮挡模型网格的排布结构;基于第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定第一模型的模型遮挡信息,模型遮挡信息用于指示多个第一模型网格中被第二模型遮挡的网格;基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,目标模型中包括多个目标模型网格,多个目标模型网格中包括第二模型覆盖第一模型时第一模型中可见的第一模型网格,目标模型网格是待渲染的模型网格,通过对第一模型进行网格可见性调整,得到目标模型,从而在模型渲染时只需要对多个目标模型网格进行渲染,而无需渲染第二模型覆盖第一模型时不可见的第一模型网格,从而减少了所需渲染的模型网格数量,从而提高渲染时CPU和GPU的运算性能,提高模型渲染效率。

首先,对本申请实施环境进行介绍。请参考图1,其示出了本申请一个示例性实施例提供的实施环境示意图,该实施环境中包括:终端110。

在一些实施例中,终端110安装有目标应用程序,该目标应用程序用于实现装扮功能,终端110通过渲染对应的三维模型展示装扮效果。终端110中存储有目标应用程序中预设的第一模型和第二模型,其中,第一模型是待被第二模型装扮的三维模型,第二模型用于覆盖第一模型,终端110通过渲染覆盖有第二模型的第一模型来展示装扮效果。

可选地,目标应用程序可以是虚拟射击游戏等游戏应用程序,也可以是三维建模等模拟应用程序,还可以是社交应用程序。

值得注意的是,上述目标应用程序仅为示例性举例,目标应用程序可以是任何用于展示第二模型覆盖第一模型的显示效果的程序,本申请对此不加以限定。

以虚拟游戏程序为例进行说明,用户可以通过该虚拟游戏程序对虚拟角色进行装扮,获取穿戴有指定虚拟物品的虚拟角色形象,则上述第一模型实现为虚拟角色对应的三维模型,第二模型实现为虚拟物品对应的三维模型。

在一些实施例中,终端110获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,第一模型是待被第二模型装扮的三维模型,第一模型中包括多个第一模型网格,第一模型网格信息用于指示多个第一模型网格的排布结构,第二模型用于覆盖第一模型,第二模型对应有预设的多个遮挡模型网格,遮挡网格信息用于指示多个遮挡模型网格的排布结构;基于第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定第一模型的模型遮挡信息,模型遮挡信息用于指示多个第一模型网格中被第二模型遮挡的网格;基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,目标模型中包括多个目标模型网格,多个目标模型网格中包括第二模型覆盖第一模型时第一模型中可见的第一模型网格,目标模型网格是待渲染的模型网格。终端110可以通过渲染目标模型和第二模型展示第二模型覆盖第一模型的展示效果。

在一些实施例中,上述实施环境中还包括服务器120和通信网络130。服务器120和终端110之间通过通信网络130进行数据传输。

在一些实施例中,服务器120用于基于终端110的请求对模型进行渲染,并将渲染结果返回给终端110。

以虚拟游戏程序为例进行说明,用户通过终端110使用该虚拟游戏程序对虚拟角色进行装扮,响应于接收到用户的装扮操作,终端110向服务器120发送渲染请求,该渲染请求用于指示服务器120渲染覆盖有第二模型的第一模型,其中,第一模型是与装扮操作对应的虚拟角色的三维模型,第二模型是与装扮操作对应的虚拟物品的三维模型。服务器120基于渲染请求获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,基于第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定第一模型的模型遮挡信息,基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,目标模型中包括多个目标模型网格,多个目标模型网格中包括第二模型覆盖第一模型时第一模型中可见的第一模型网格。服务器120基于目标模型和第二模型进行渲染得到渲染结果,并通过通信网络130将该渲染结果发送至终端110进行显示。

上述终端是可选的,终端可以是台式计算机、膝上型便携计算机、手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3(Moving Picture Experts Group AudioLayer III,MP3)播放器、动态影像专家压缩标准音频层4(Moving Picture Experts GroupAudio Layer IV,MP4)播放、智能电视、智能车载等多种形式的终端设备,本申请实施例对此不加以限定。

值得注意的是,上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云安全、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。

其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。

在一些实施例中,上述服务器还可以实现为区块链系统中的节点。

需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。例如,本申请中涉及到操作数据和帐号信息等都是在充分授权的情况下获取的。

进一步进行说明,本申请在收集用户的相关数据(例如:本申请中涉及到的帐号信息、操作数据和角色形象等)之前以及在收集用户的相关数据的过程中,都可以显示提示界面、弹窗或输出语音提示信息,该提示界面、弹窗或语音提示信息用于提示用户当前正在搜集其相关数据,使得本申请仅仅在获取到用户对该提示界面或者弹窗发出的确认操作后,才开始执行获取用户相关数据的相关步骤,否则(即未获取到用户对该提示界面或者弹窗发出的确认操作时),结束获取用户相关数据的相关步骤,即不获取用户的相关数据。换句话说,本申请所采集的所有用户数据都是在用户同意并授权的情况下进行采集的,且相关用户数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。

结合上述实施环境对本申请实施例提供的模型渲染方法的应用场景进行说明,本申请实施例的应用场景包括如下至少一种:

一、虚拟游戏应用场景

在一些实施例中,虚拟游戏应用程序提供虚拟角色形象配置功能,通过选取虚拟物品装扮虚拟角色,获得穿戴有该虚拟物品的虚拟角色形象,该虚拟游戏应用程序预设有虚拟角色对应的第一模型和虚拟物品对应的第二模型,其中,第一模型是待被第二模型装扮的三维模型,第二模型是用于覆盖第一模型的三维模型,通过获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,基于第一模型网格信息和遮挡模型网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定模型遮挡信息,基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,从而通过渲染目标模型和第二模型得到穿戴有该虚拟物品的虚拟角色形象。

二、三维建模应用场景

在一些实施例中,三维建模应用程序提供三维建筑模拟功能,以三维花园的模拟过程为例,通过构建虚拟围栏模拟三维花园的显示效果,该三维建模应用程序中预设有虚拟土地对应的第一模型和虚拟围栏对应的第二模型,其中,第一模型是待被第二模型装扮的三维模型,第二模型是用于覆盖第一模型的三维模型,通过获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,基于第一模型网格信息和遮挡模型网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定模型遮挡信息,基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,从而通过渲染目标模型和第二模型得到设置有虚拟围栏的虚拟花园的模拟效果。

三、云购物试穿场景

在一些实施例中,云购物试穿场景提供试穿效果展示功能,通过选取目标商品进行试穿,获取用户对应的试穿效果,云购物应用程序中通过采集用户姿态数据构建用户形象对应的第一模型,该云购物应用程序中预设有目标商品对应的第二模型,其中,第一模型是待被第二模型装扮的三维模型,第二模型是用于覆盖第一模型的三维模型,通过获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,基于第一模型网格信息和遮挡模型网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定模型遮挡信息,基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,从而通过渲染目标模型和第二模型得到用户穿戴目标商品的试穿效果。

值得注意的是,上述应用场景仅为示例性举例,本申请实施例提供的模型渲染方法可以应用于任何需要展示第二模型覆盖第一模型的三维模型渲染场景,本申请对此不加以限定。

可选地,第二模型覆盖第一模型可以是单面覆盖,也可以是多面覆盖,即第二模型包裹第一模型。当第二模型单面覆盖第一模型时,可以基于模型的显示视角,将第二模型覆盖面下垂直于显示视角的第一模型网格确定为被遮挡网格,被遮挡网格不参与模型渲染过程,从而大量减少待渲染模型网格数量,提高模型渲染效率。本申请以第二模型包裹第一模型为例进行说明。

示意性的,请参考图2,其示出了本申请一个示例性实施例提供的模型渲染方法的流程图,该方法可以由终端执行,也可以由服务器执行,也可以同时由终端和服务器共同执行,本申请实施例以该方法应用于终端为例进行说明,如图2所示,该方法包括如下步骤:

步骤210,获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息。

其中,第一模型是待被第二模型装扮的三维模型,第一模型由多个第一模型网格构成,第一模型网格信息用于指示多个第一模型网格的排布结构,第二模型用于覆盖第一模型,第二模型对应有预设的多个遮挡模型网格,遮挡网格信息用于指示多个遮挡模型网格的排布结构。

在一些实施例中,第一模型和第二模型是预设的三维模型,其中,第二模型用于覆盖第一模型。

以第一模型实现为虚拟角色对应的三维模型为例,第二模型实现为虚拟物品对应的三维模型,例如,第一模型实现为虚拟人体模型,第二模型可以实现为虚拟服饰模型,其中,第一模型可以是完整的虚拟人体模型,也可以是部分虚拟人体模型,如虚拟人体模型中的头部模型、四肢模型、躯体模型等,对应地,第二模型可以是完整的虚拟服饰模型,也可以是部分虚拟服饰模型,如虚拟上衣模型中的袖子部分、衣领部分、上衣主体部分等。

在一些实施例中,第一模型网格信息用于指示多个第一模型网格的排布结构,第一模型网格信息用于指示多个第一模型网格的数量信息、形状信息、排列信息等至少一种。

在一些实施例中,第一模型网格信息中包括第一模型网格的数量数据、形状数据、尺寸数据、位置数据、第一模型网格对应的第一包围盒数据和第一模型对应的第一转换矩阵。

其中,第一模型网格的数量数据用于指示第一模型网格的数量信息;第一模型网格的形状数据和尺寸数据用于指示形状信息;第一模型网格的位置数据用于指示排列信息;第一包围盒数据用于指示包含第一模型网格的空间体;第一转换矩阵用于将第一模型网格的位置数据指示的位置坐标从第一模型所在坐标系转换到预设坐标系中。

在一些实施例中,第一包围盒数据用于指示包含第一模型网格的最小空间体。

在一些实施例中,第一转换矩阵实现为局部空间到世界空间(Local To World)矩阵,即预设坐标系实现为世界坐标系,第一转换矩阵用于将第一模型网格的位置数据指示的位置坐标从第一模型所在坐标系转换到世界坐标系中。

示意性的,以第一模型网格实现为三角形子网格(Sub Mesh)为例,将第一模型网格3个顶点的位置数据指示的位置坐标分别与第一转换矩阵相乘,得到第一模型网格顶点在世界坐标系中的位置坐标,具体地,请参考如下公式:

第一世界坐标=第一顶点坐标*第一转换矩阵,

其中,第一顶点坐标是第一模型网格顶点在第一模型所在坐标系中的位置坐标,第一世界坐标是第一模型网格顶点在世界坐标系中的位置坐标。

在一些实施例中,第二模型中包括多个第二模型网格,第二模型由多个第二模型网格排布构成,遮挡模型网格是基于第二模型预设的包含第二模型网格的模型网格,遮挡模型网格包含第二模型网格是指第二模型网格位于遮挡模型网格所在位置区域内,遮挡模型网格用于模拟第二模型覆盖第一模型时对第一模型的遮挡区域的模型网格。

在一些实施例中,遮挡模型网格中包含多个第二模型网格。

示意性的,每m个第二模型网格位于一个遮挡模型网格所在位置区域内,其中,m为正整数。

示意性的,请参考图3,图3是本申请一个示例性实施例提供的模型示意图,如图3所示,人体模型310是预设的第一模型,人体模型310中包括多个第一模型网格,服饰模型320是预设的第二模型,服饰模型中包括多个第二模型网格,服饰模型对应有预设的多个遮挡模型网格,其中,多个遮挡模型网格组成遮挡模型,遮挡模型中包含第二模型,遮挡模型网格用于模拟第二模型覆盖第一模型时对第一模型的遮挡区域。

在一些实施例中,遮挡网格信息用于指示多个遮挡模型的排布结构,遮挡网格信息用于指示多个遮挡网格的数量信息、形状信息、排列信息中的至少一种。

在一些实施例中,遮挡网格信息中包括遮挡网格的数量数据、形状数据、尺寸数据、位置数据、遮挡网格对应的遮挡包围盒数据和第二模型对应的第二转换矩阵。

其中,遮挡模型网格的数量数据用于指示遮挡模型网格的数量信息;遮挡模型网格的形状数据和尺寸数据用于指示形状信息;遮挡模型网格的位置数据用于指示排列信息;遮挡包围盒数据用于指示包含遮挡模型网格的空间体;第二转换矩阵用于将预设坐标系中的位置坐标转换到第二模型所在坐标系中。

在一些实施例中,遮挡网格信息中包括与多个遮挡模型网格分别对应的第二转换矩阵,第二转换矩阵用于将预设坐标中的位置坐标转换为第二模型所在坐标系中与遮挡模型网格对应的位置坐标。

在一些实施例中,遮挡包围盒数据用于指示包含遮挡模型网格的最小空间体。

在一些实施例中,第二转换矩阵实现为世界空间到局部空间(World To Local)矩阵,即预设坐标系实现为世界坐标系,第二转换矩阵用于将遮挡模型网格的位置数据指示的位置坐标从世界坐标系转换到第二模型所在坐标系中。

可选地,遮挡模型网格可以实现为box,也可以实现为sphere等任意预设形状的模型网格。

示意性的,以遮挡模型网格实现为box为例,将遮挡模型网格8个顶点的位置数据指示的位置坐标分别与第二转换矩阵相乘,得到遮挡模型网格在世界坐标系中的位置坐标,具体地,请参考如下公式:

遮挡顶点坐标=第二世界坐标*第二转换矩阵,

其中,遮挡顶点坐标是遮挡模型网格顶点在第二模型所在坐标系中的位置坐标,第二世界坐标是遮挡模型网格顶点在世界坐标系中的位置坐标。

在一些实施例中,基于第一模型网格的位置数据、第一转换矩阵和第二转换矩阵,确定第一模型网格在第二模型所在坐标系中的位置坐标。

在一些实施例中,第一转换矩阵和第二转换矩阵互为逆矩阵。

示意性的,基于第一模型网格的位置数据确定第一模型网格在第一模型所在坐标系中的位置坐标,将该位置坐标与第一转换矩阵和第二转换矩阵依次相乘,得到第一模型网格在第二模型所在坐标系中的位置坐标,具体地,请参考如下公式:

第二顶点坐标=第一顶点坐标*第一转换矩阵*第二转换矩阵,

其中,第一顶点坐标是第一模型网格在第一模型所在坐标系中的位置坐标,第二顶点坐标是第一模型网格在第二模型所在坐标系中的位置坐标。

步骤220,基于第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定第一模型的模型遮挡信息。

其中,模型遮挡信息用于指示多个第一模型网格中被第二模型遮挡的网格。

在一些实施例中,第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系包括,第一模型网格被第二模型遮挡和第一模型网格未被第二模型遮挡两种情况。

在一些实施例中,基于第一模型网格信息和遮挡模型网格信息,确定第一模型网格和遮挡模型网格之间的包含关系,将遮挡模型网格包含的第一模型网格确定为多个第一模型网格中被第二模型遮挡的网格。

在一些实施例中,在确定第一模型的模型遮挡信息的过程中,先基于第一模型信息和遮挡网格信息确定多个第一模型网格与多个遮挡模型网格之间的位置关系,响应于位置关系指示第一模型网格与遮挡模型网格相交,确定第一模型网格与遮挡模型网格的包含关系,响应于包含关系指示遮挡模型网格包含第一模型网格,将第一模型网格确定为被遮挡网格,被遮挡网格是指第一模型中被第二模型遮挡的网格。

其中,遮挡模型网格包含第一模型网格是指第一模型网格在遮挡模型网格内,以第一模型网格实现为三角形子网格,遮挡模型网格实现为box为例,遮挡模型网格包含第一模型网格是指第一模型网格的3个顶点的位置坐标在遮挡模型网格内部。

在一些实施例中,在基于第一模型网格信息和遮挡网格信息,确定第一模型网格和遮挡模型网格之间的位置关系之前,需要先将第一模型网格和遮挡模型网格的位置坐标转换到同一坐标系下。

以将第一模型网格和遮挡模型网格的位置坐标均属于第二模型所在坐标系下确定位置关系为例,先将第一模型网格的位置坐标转换到第二模型所在坐标系下,再确定第二模型坐标系中第一模型网格和遮挡模型网格之间的位置关系。

示意性的,基于第一模型网格信息确定第一顶点坐标和第一转换矩阵,基于遮挡网格信息确定第二转换矩阵,基于第一顶点坐标、第一转换矩阵和第二转换矩阵确定第二顶点坐标,基于遮挡网格信息确定遮挡模型网格对应的遮挡位置信息,基于第二顶点坐标和遮挡位置信息确定第一模型网格与遮挡模型网格之间的位置关系,其中,第一顶点坐标是指第一模型网格的顶点在第一模型所在坐标系中的位置坐标,第二顶点坐标是指第一模型网格的顶点在第二模型所在坐标系中的位置坐标,遮挡位置信息用于指示遮挡模型网格的位置和尺寸,遮挡位置信息中包括遮挡模型网格的中心点位置坐标、顶点坐标、边长信息等。

步骤230,基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型。

其中,目标模型中包括多个目标模型网格,多个目标模型网格中包括第二模型覆盖第一模型时第一模型中可见的第一模型网格,目标模型网格是待渲染的模型网格。

在一些实施例中,通过网格可见性调整,将第一模型中的部分第一模型网格的网格可见性调整为不可见,其中,网格可见性用于指示模型网格在终端界面中的表现能力,不可见的第一模型网格不参与模型渲染过程。

在一些实施例中,在得到目标模型之后,还包括模型渲染过程,终端基于目标模型进行渲染。

在一些实施例中,基于目标模型和第二模型进行模型渲染,得到渲染结果,该渲染结果包括第二模型覆盖第一模型时的显示效果。

在一些实施例中,渲染过程包括如下两个步骤:

第一步,获取第二模型的第二模型数据。

其中,第二模型中包括多个第二模型网格,第二模型网格信息用于指示多个第二模型网格的排布结构。

在一些实施例中,第二模型网格信息用于指示多个第二模型网格的数量信息、形状信息、排列信息等至少一种。

在一些实施例中,第二模型网格信息中包括第二模型网格的数量数据、形状数据、尺寸数据、位置数据、第二模型网格对应的第二包围盒数据和第二模型对应的第二转换矩阵。

其中,第二模型网格的数量数据用于指示第二模型网格的数量信息;第二模型网格的形状数据和尺寸数据用于指示形状信息;第二模型网格的位置数据用于指示排列信息;第二包围盒数据用于指示包含第二模型网格的空间体;第二转换矩阵用于将预设坐标系中的位置坐标转换至第二模型所在坐标系中。

第二步,基于第二模型数据针对目标模型渲染第二模型,得到穿戴模型。

其中,穿戴模型用于展示第二模型覆盖第一模型时的显示效果。

在一些实施例中,基于目标模型中目标模型网格对目标模型进行渲染,得到第二模型覆盖第一模型时第一模型可见的模型显示效果,基于第二模型数据指示的第二模型网格在目标模型的基础上对第二模型进行渲染,得到穿戴模型。

示意性的,请参考图4,图4是本申请一个示例性实施例提供的目标模型示意图,如图4所示,预设有第一模型410,通过对第一模型进行网格可见性调整得到目标模型420,针对目标模型420渲染第二模型430,得到穿戴模型440。其中,第一模型410对应有第一数量的第一模型网格,按照传统渲染方法直接渲染第一模型410时,需要渲染第一数量的第一模型网格,渲染第二模型覆盖第一模型的显示效果时需要渲染第二数量的第一模型网格和第二模型网格,而采用本申请实施例提供的渲染方法渲染目标模型时,仅需渲染第三数量的目标模型网格,渲染第二模型覆盖第一模型的显示效果时仅需要渲染第四数量的目标模型网格和第二模型网格,其中,第三数量小于第一数量,第四数量小于第二数量。

在一些实施例中,目标模型和穿戴模型中仍然包括被遮挡网格,被遮挡网格是目标模型和穿戴模型中的组成部分,被遮挡网格不参与模型渲染过程,但仍参与模型控制过程,即,目标模型仍然由第一模型中的所有第一模型网格构成,目标模型中的目标模型网格是待渲染的模型网格,目标模型中的被遮挡网格是不被渲染的模型网格,穿戴模型由第一模型中的所有第一模型网格和第二模型中的第二模型网格共同构成。

综上所述,本申请实施例提供的方法,通过获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,第一模型是待被第二模型装扮的三维模型,第一模型由多个第一模型网格构成,第一模型网格信息用于指示多个第一模型网格的排布结构,第二模型用于覆盖第一模型,第二模型对应有预设的多个遮挡模型网格,遮挡网格信息用于指示多个遮挡模型网格的排布结构;基于第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定第一模型的模型遮挡信息,模型遮挡信息用于指示多个第一模型网格中被第二模型遮挡的网格;基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,目标模型中包括多个目标模型网格,多个目标模型网格中包括第二模型覆盖第一模型时第一模型中可见的第一模型网格,目标模型网格是待渲染的模型网格,通过对第一模型进行网格可见性调整,得到目标模型,从而在模型渲染时只需要对多个目标模型网格进行渲染,而无需渲染第二模型覆盖第一模型时不可见的第一模型网格,从而减少了所需渲染的模型网格数量,从而提高渲染时CPU和GPU的运算性能,提高模型渲染效率。

在一些实施例中,在确定模型遮挡信息的过程中,基于第一模型网格信息和遮挡网格信息确定第一模型网格和遮挡模型网格之间的包含关系,从而基于包含关系确定模型遮挡信息指示的被遮挡网格,示意性的,请参考图5,其示出了本申请一个示例性实施例提供的模型遮挡信息获取方法的流程图,该方法可以由终端执行,也可以由服务器执行,也可以同时由终端和服务器共同执行,本申请实施例以该方法应用于终端为例进行说明,如图5所示,该方法包括如下步骤:

步骤510,基于第一模型信息和遮挡网格信息确定多个第一模型网格与多个遮挡模型网格之间的位置关系。

在一些实施例中,基于第一模型信息确定第一模型网格顶点的位置坐标,基于遮挡网格信息确定遮挡模型网格的位置区域,基于位置坐标和位置区域确定第一模型网格与遮挡模型网格之间的位置关系。

在一些实施例中,当存在第一模型网格顶点的位置坐标属于遮挡模型网格对应的位置区域内时,确定第一模型网格与遮挡模型网格相交。

在一些实施例中,针对每个第一模型网格,分别遍历多个遮挡模型网格,当存在第一模型网格顶点的位置坐标属于第i个遮挡模型网格对应的位置区域内时,确定该第一模型网格与第i个遮挡模型网格相交,其中,i为正整数。

在一些实施例中,基于第一模型网格和遮挡模型网格分别对应的包围盒,确定第一模型网格与遮挡模型网格之间的位置关系。

在一些实施例中,第一模型信息中包括多个第一模型网格分别对应的第一包围盒数据,遮挡网格信息中包括多个遮挡模型网格分别对应的遮挡包围盒数据,第一包围盒数据用于指示包含第一模型网格的空间体,第一包围盒数据包括多个第一顶点,遮挡包围盒数据用于指示包含遮挡模型网格的空间体;上述步骤510包括如下三步:

第一步,基于第一包围盒数据确定第一模型网格中多个第一顶点分别对应的第一位置坐标。

在一些实施例中,第一顶点是第一包围盒对应的顶点,第一包围盒是包含第一模型网格且符合预设尺寸要求的空间体,例如包含第一模型网格的最小六面体。

在一些实施例中,第一包围盒数据用于指示多个第一顶点分别对应的第一位置坐标,通过读取第一包围盒数据获取第一位置坐标。

可选地,第一位置坐标可以是第一顶点在第一模型所在坐标系中的位置坐标,也可以是第一顶点在世界坐标系等预设坐标系中的位置坐标。

第二步,基于遮挡包围盒数据确定遮挡模型网格对应的遮挡位置区域。

在一些实施例中,遮挡位置区域是指遮挡包围盒所占用的位置区域,遮挡包围盒是包含遮挡模型网格且符合预设尺寸要求的空间体,例如包含遮挡模型网格的最小六面体。

可选地,遮挡包围盒可以是六面体包围盒,也可以是球形包围盒等任意预设形状的三维包围盒。

以遮挡包围盒是六面体包围盒为例,遮挡位置区域的确定过程实现为,基于遮挡包围盒数据确定遮挡模型网格中心点对应的中心位置坐标,以及遮挡包围盒的边长,基于中心位置坐标以及遮挡包围盒边长确定一个六面体,将该六面体所占用的位置区域确定为遮挡位置区域。

在一些实施例中,遮挡包围盒数据用于指示遮挡模型网格中心点对应的中心位置坐标,以及遮挡包围盒的边长,通过读取遮挡包围盒数据获取中心位置坐标和边长。

可选地,遮挡位置区域可以是遮挡包围盒在第二模型所在坐标系中的位置区域,也可以是遮挡包围盒在世界坐标系等预设坐标系中的位置区域。

第三步,基于第一位置坐标和遮挡位置区域确定位置关系。

在一些实施例中,基于第一位置坐标和遮挡位置区域确定位置关系之前,需要确定第一模型网格和遮挡模型网格属于同一坐标系。

可选地,可以将第一模型网格和遮挡模型网格都转换至世界坐标系中,也可以将第一模型网格转换至第二模型所在坐标系中,还可以将遮挡模型网格转换至第一模型所在坐标中。

在一些实施例中,响应于存在第一位置坐标属于遮挡位置区域内,确定第一位置关系,第一位置关系用于指示遮挡模型网格与第一模型网格相交。

在一些实施例中,响应于不存在第一位置坐标属于遮挡位置区域内,确定第二位置关系,第二位置关系用于指示遮挡模型网格与第一模型网格不相交。

在一些实施例中,在步骤510之前还包括坐标转换过程,该过程实现为,将第一位置坐标和遮挡位置区域转换至同一坐标系中。

可选地,该过程包括如下三种情况中的至少一种:

第一种,将第一位置坐标转换至第二模型所在坐标系中。

在一些实施例中,基于第一转换矩阵和第二转换矩阵,将第一位置坐标转换至第二模型所在坐标系中。

示意性的,将第一位置坐标依次与第一转换矩阵和第二转换矩阵相乘,得到第二位置坐标,第二位置坐标是第一顶点在第二模型所在坐标系中的位置坐标。

第二种,将遮挡位置区域转换至第一模型所在坐标系中。

在一些实施例中,基于第一转换矩阵和第二转换矩阵,将遮挡位置坐标转换至第一模型所在坐标系中。

示意性的,将遮挡位置坐标依次与第二转换矩阵和第一转换矩阵相乘,得到遮挡转换坐标,遮挡转换坐标是遮挡顶点在第一模型所在坐标系中的位置坐标。

第三种,将第一位置坐标和遮挡位置区域分别转换至预设坐标系中。

在一些实施例中,基于第一转换矩阵,将第一位置坐标转换至预设坐标系中,基于第二转换矩阵,将遮挡位置坐标转换至预设坐标系中。

示意性的,将第一位置坐标与第一转换矩阵相乘,得到第一世界坐标,第一世界坐标是第一顶点在预设坐标系中的位置坐标;将遮挡顶点坐标与第二转换矩阵相乘,得到第二世界坐标,第二世界坐标是遮挡顶点在世界坐标系中的位置坐标。

步骤520,响应于位置关系指示第一模型网格与遮挡模型网格相交,确定第一模型网格与遮挡模型网格的包含关系。

在一些实施例中,当存在第一位置坐标属于遮挡位置区域内,确定第一模型网格与遮挡模型网格相交时,基于第一位置坐标和遮挡位置区域确定第一模型网格与遮挡模型网格的包含关系。

在一些实施例中,当第一模型网格对应的多个第一顶点都属于遮挡位置区域内时,确定第一包含关系,第一包含关系用于指示遮挡模型网格包含第一模型网格。

在一些实施例中,步骤520实现为基于第一位置坐标和遮挡包围盒数据确定包含关系。

可选地,遮挡包围盒数据包括如下两种情况:

第一种,遮挡包围盒数据用于指示遮挡模型网格且符合指定尺寸要求的六面体。

以遮挡包围盒实现为包含遮挡模型网格的最小六面体为例进行说明,步骤520实现为,响应于第一位置坐标的绝对值小于六面体的边长,确定第一包含关系,第一包含关系用于指示遮挡模型网格包含第一模型网格。

示意性的,响应于第一位置坐标(x,y,z)符合如下公式:

确定第一包含关系,其中,Extents.xyz是指六面体边长。

第二种,遮挡包围盒数据用于指示遮挡模型网格且符合指定尺寸要求的球体。

其中,遮挡包围盒数据中包括球体的中心点位置坐标。

以遮挡包围盒实现为包含遮挡模型网格的最小球体为例进行说明,步骤520实现为,基于第一位置坐标和中心点位置坐标确定第一顶点与球体中心点之间的第一距离;响应于第一模型网格中多个第一顶点分别对应的第一距离小于球体的半径,确定第一包含关系,第一包含关系用于指示遮挡模型网格包含第一模型网格。

步骤530,响应于包含关系指示遮挡模型网格包含第一模型网格,将第一模型网格确定为被遮挡网格。

其中,被遮挡网格中包括多个第一模型网格中被第二模型遮挡的网格。

在一些实施例中,响应于获取第一包含关系,第一模型网格确定为被遮挡网格。

在一些实施例中,遍历第一模型中的多个第一模型网格,响应于包含关系指示第i个遮挡模型网格包含第j个第一模型网格,将第j个模型网格确定为第k个被遮挡网格,其中,i、j、k为正整数,k≤j。

步骤540,基于被遮挡网格确定模型遮挡信息。

在一些实施例中,模型遮挡信息是指被遮挡网格对应的第一模型网格信息。

在一些实施例中,存在N个被遮挡网格,步骤540实现为,分别获取N个被遮挡网格信息对应的第一模型信息并写入模型遮挡信息,直到被遮挡网格遍历完毕,得到模型遮挡信息。

综上所述,本申请实施例提供的方法,通过基于第一模型信息和遮挡网格信息确定多个第一模型网格与多个遮挡模型网格之间的位置关系,响应于位置关系指示第一模型网格与遮挡模型网格相交,确定第一模型网格与遮挡模型网格的包含关系,响应于包含关系指示遮挡模型网格包含第一模型网格,将第一模型网格确定为被遮挡网格,基于被遮挡网格确定模型遮挡信息,通过第一模型网格与遮挡模型网格之间的遮挡关系确定相交的第一模型网格与遮挡模型网格,减少包含关系确定过程中涉及的模型网格数量,再将遮挡模型网格包含的第一模型网格确定为被遮挡网格,简化了被遮挡网格的确定过程,能够提高被遮挡网格的确定效率。

本申请实施例提供的方法,通过基于第一包围盒数据确定第一模型网格中多个第一顶点分别对应的第一位置坐标,基于遮挡包围盒数据确定遮挡模型网格对应的遮挡位置区域,基于第一位置坐标和遮挡位置区域确定位置关系,明确了位置关系的确定方法,提高了位置关系的确定效率,为简化包含关系的确定过程提供了基础。

本申请实施例提供的方法,在遮挡包围盒数据用于指示遮挡模型网格且符合指定尺寸要求的六面体的情况下,响应于第一位置坐标的绝对值小于六面体的边长,确定第一包含关系,第一包含关系用于指示遮挡模型网格包含第一模型网格,明确了遮挡包围盒实现为六面体时第一包含关系的确定方法。

本申请实施例提供的方法,在遮挡包围盒数据用于指示遮挡模型网格且符合指定尺寸要求的球体的情况下,基于第一位置坐标和中心点位置坐标确定第一顶点与球体中心点之间的第一距离;响应于第一模型网格中多个第一顶点分别对应的第一距离小于球体的半径,确定第一包含关系,第一包含关系用于指示遮挡模型网格包含第一模型网格,明确了遮挡包围盒实现为球体时第一包含关系的确定方法。

本申请实施例提供的方法,在确定位置关系之前,将第一位置坐标和遮挡位置区域转换至同一坐标系中,简化了位置关系的确定方法。

本申请实施例提供的方法,通过将第一位置坐标转换至第二模型所在坐标系中,或者,将遮挡位置区域转换至第一模型所在坐标系中,或者,将第一位置坐标和遮挡位置区域分别转换至预设坐标系中,提供了三种坐标转换方法,提高了坐标转换效率。

在一些实施例中,网格信息获取过程是基于模型对模型网格进行遍历得到的,示意性的,请参考图6,图6是本申请一个示例性实施例提供的网格信息获取方法流程图,该方法可以由终端执行,也可以由服务器执行,也可以同时由终端和服务器共同执行,本申请实施例以该方法应用于终端为例进行说明,如图6所示,上述步骤210包括如下步骤:

步骤610,获取第一模型。

在一些实施例中,第一模型是预设的,待被第二模型装扮的三维模型。

在一些实施例中,第一模型中包括多个第一模型网格,第一模型是由多个第一模型网格排布构成的。

步骤620,遍历第一模型的多个第一模型网格,并获取第一模型网格信息。

其中,第一模型网格信息中包括第一模型网格的数量数据、形状数据、尺寸数据、位置数据、第一模型网格对应的第一包围盒数据和第一模型对应的第一转换矩阵,第一转换矩阵用于将第一模型网格的位置数据指示的位置坐标从第一模型所在坐标系转换到预设坐标系中。

在一些实施例中,第一包围盒数据用于指示包含第一模型网格的最小空间体。

在一些实施例中,第一转换矩阵实现为局部空间到世界空间矩阵,即预设坐标系实现为世界坐标系,第一转换矩阵用于将第一模型网格的位置数据指示的位置坐标从第一模型所在坐标系转换到世界坐标系中。

示意性的,以第一模型网格实现为三角形子网格为例,将第一模型网格3个顶点的位置数据指示的位置坐标分别与第一转换矩阵相乘,得到第一模型网格顶点在世界坐标系中的位置坐标,具体地,请参考如下公式:

第一世界坐标=第一顶点坐标*第一转换矩阵,

其中,第一顶点坐标是第一模型网格顶点在第一模型所在坐标系中的位置坐标,第一世界坐标是第一模型网格顶点在世界坐标系中的位置坐标。

步骤630,获取第二模型。

在一些实施例中,第二模型是预设的,用于覆盖第一模型的三维模型。

在一些实施例中,第二模型中包括多个第二模型网格,第二模型是由多个第二模型网格排布构成的。

在一些实施例中,第二模型对应有预设的多个遮挡模型网格,遮挡模型网格用于模拟第二模型覆盖第一模型时,第二模型能够遮挡的空间区域。

步骤640,遍历第二模型对应的多个遮挡模型网格,并获取遮挡网格信息。

其中,遮挡网格信息中包括遮挡模型网格的数量数据、形状数据、尺寸数据、位置数据、遮挡模型网格对应的遮挡包围盒数据和第二模型对应的第二转换矩阵,第二转换矩阵用于将预设坐标中的位置坐标转换至第二模型所在坐标系中。

在一些实施例中,遮挡包围盒数据用于指示包含遮挡模型网格的最小空间体。

在一些实施例中,第二转换矩阵实现为世界空间到局部空间(World To Local)矩阵,即预设坐标系实现为世界坐标系,第二转换矩阵用于将遮挡模型网格的位置数据指示的位置坐标从世界坐标系转换到第二模型所在坐标系中。

可选地,遮挡模型网格可以实现为box,也可以实现为sphere等任意预设形状的模型网格。

示意性的,以遮挡模型网格实现为box为例,将遮挡模型网格8个顶点的位置数据指示的位置坐标分别与第二转换矩阵相乘,得到遮挡模型网格在世界坐标系中的位置坐标,具体地,请参考如下公式:

遮挡顶点坐标=第二世界坐标*第二转换矩阵,

其中,遮挡顶点坐标是遮挡模型网格顶点在第二模型所在坐标系中的位置坐标,第二世界坐标是遮挡模型网格顶点在世界坐标系中的位置坐标。

在一些实施例中,基于第一模型网格的位置数据、第一转换矩阵和第二转换矩阵,确定第一模型网格在第二模型所在坐标系中的位置坐标。

其中,第一转换矩阵和第二转换矩阵互为逆矩阵。

示意性的,基于第一模型网格的位置数据确定第一模型网格在第一模型所在坐标系中的位置坐标,将该位置坐标与第一转换矩阵和第二转换矩阵依次相乘,得到第一模型网格在第二模型所在坐标系中的位置坐标,具体地,请参考如下公式:

第二顶点坐标=第一顶点坐标*第一转换矩阵*第二转换矩阵,

其中,第一顶点坐标是第一模型网格在第一模型所在坐标系中的位置坐标,第二顶点坐标是第一模型网格在第二模型所在坐标系中的位置坐标。

综上所述,本申请实施例提供的方法,通过获取第一模型,基于第一模型遍历多个第一模型网格,并获取第一模型网格信息,获取第二模型,基于第二模型遍历多个遮挡模型网格,并获取遮挡网格信息,明确了网格信息的获取过程,通过遍历模型网格,避免网格信息的遗漏。

在一些实施例中,待装扮的三维模型由多个第一模型构成,针对该三维模型进行网格可见性调整的过程可以由多个线程基于多个第一模型并行处理,示意性的,请参考图7,图7是本申请一个示例性实施例提供的多线程并发处理方法流程图,该方法可以由终端执行,也可以由服务器执行,也可以同时由终端和服务器共同执行,本申请实施例以该方法应用于终端为例进行说明,如图7所示,该方法包括如下步骤:

步骤710,获取第三模型。

其中,第三模型中包括多个第一模型,多个第一模型分别对应有第一模型网格信息。

在一些实施例中,第三模型是完整的待装扮的三维模型,第三模型由多个不同的第一模型组成。

以人体模型为例进行说明,第三模型是完整的人体模型,第一模型是四肢模型、头部模型、躯体模型等人体模型中的部分模型。

步骤720,获取第四模型。

其中,第四模型中包括与多个第一模型分别对应的第二模型,第二模型对应有遮挡网格信息。

在一些实施例中,第四模型是完整的用于覆盖第三模型的三维模型,第四模型由多个不同的第二模型组成。

以服饰模型为例进行说明,第四模型是完整的服饰模型,第二模型是袖子模型、衣领模型、上衣主体模型、裤子模型等服饰模型中的部分模型。

在一些实施例中,第二模型与第一模型之间存在对应关系,例如,实现为袖子模型的第二模型与实现为手臂模型的第一模型对应,实现为裤子模型的第二模型与实现为腿部模型的第一模型对应。

步骤730,通过多个线程基于第一模型网格信息和遮挡网格信息以并发形式分别对第三模型中的多个第一模型进行网格可见性调整,得到包括多个目标模型的第五模型。

其中,第五模型用于展示第四模型覆盖第三模型时的显示效果。

在一些实施例中,第三模型由N个第一模型构成,通过N个线程对N个第一模型进行网格可见性调整,其中,N个线程并发处理,第i个线程对第i个第一模型进行网格可见性调整,其中,N、i为正整数。

示意性的,请参考图8,图8是本申请一个示例性实施例提供的性能对比示意图,如图8所示,使用预设引擎中的任务系统(Job System)分别采用单线程和多线程对第一模型进行网格可见性调整,对共包含3000个第一模型网格的10个第一模型分别进行网格可见性调整,每个第一模型对应6个遮挡模型网格,采用单线程进行处理,得到目标模型所需消耗的时长为120毫秒,采用多线程进行处理,得到目标模型所需消耗的时长为34毫秒。

综上所述,本申请实施例提供的方法,通过获取第三模型,获取第四模型,通过多个线程同时基于第一模型网格信息和遮挡网格信息分别对第三模型中的多个第一模型进行网格可见性调整,得到包括多个目标模型的第五模型,提供了多线程并发调整网格可见性的方案,能够缩短处理时长,提高处理效率。

在一些实施例中,本申请实施例提供的模型渲染方法,基于遍历第一模型网格和遮挡模型网格对第一模型进行网格可见性调整,示意性的,请参考图9,图9是本申请一个示例性实施例提供的网格可见性调整流程示意图,该方法可以由终端执行,也可以由服务器执行,也可以同时由终端和服务器共同执行,本申请实施例以该方法应用于终端为例进行说明,如图9所示,网格可见性调整过程包括如下步骤:

步骤901,加载第一模型。

在一些实施例中,第一模型是预设的三维模型,通过读取存储在本地或云端的预设模型获取第一模型。第一模型中包括多个第一模型网格。具体地,请参考上述步骤610。

步骤902,加载第二模型。

在一些实施例中,第二模型是预设的三维模型,通过读取存储在本地或云端的预设模型获取第二模型。第二模型中包括多个第二模型网格,且第二模型对应有预设的多个遮挡模型网格。具体地,请参考上述步骤630。

步骤903,分析遮挡模型网格列表。

在一些实施例中,步骤903实现为获取第二模型对应的遮挡网格信息,具体地,请参考上述步骤210。

步骤904,获取第i个遮挡模型网格。

其中,i为正整数。

在一些实施例中,步骤904实现为遍历第二模型对应的多个遮挡模型网格。

步骤905,判断第i个遮挡模型网格是否存在。

在一些实施例中,响应于第i个遮挡模型网格存在,执行步骤906,否则,结束网格可见性调整过程。

步骤906,获取第j个第一模型网格。

在一些实施例中,步骤906实现为遍历第一模型中的多个第一模型网格。

步骤907,判断第j个第一模型网格是否存在。

在一些实施例中,响应于第j个第一模型网格存在,执行步骤908,否则,将i置为i+1,并返回步骤904。

步骤908,对第一模型进行网格可见性调整得到目标模型。

在一些实施例中,在步骤908执行完毕后,将j置为j+1,并返回步骤906。

示意性的,请参考图10,图10是本申请一个示例性实施例提供的网格可见性调整示意图,如图10所示,遍历第一模型中的多个第一模型网格1010,针对每个第一模型网格1010,遍历遮挡模型网格1020,并将第一模型网格转换至遮挡模型网格1020所在坐标系中,当遮挡模型网格1020包含第一模型网格1010时,将该第一模型网格1010确定为被遮挡网格。

示意性的,请参考图11,图11是本申请一个示例性实施例提供的网格可见性调整效果示意图,如图11所示,将第一模型1110与第二模型对应的遮挡模型网格1120结合,基于遮挡模型网格1120对第一模型1110调整网格可见性,得到目标模型1130,其中,第一模型1110中被遮挡模型网格1120遮挡的第一模型网格实现为被遮挡网格,在网格可见性调整中,将被遮挡网格确定为不可见的网格。

示意性的,请参考图12,图12是本申请一个示例性实施例提供的工作流对比示意图,如图12所示,子图a示出了采用传统模型渲染方法对应的原始工作流,在原始工作流中包括:步骤1210,规划第二模型的尺寸,步骤1220,确定第一模型中的被遮挡网格,步骤1230,按照不包括被遮挡网格的第一模型制作第二模型,步骤1240,检查第一模型与第二模型是否满足设计需求,若不满足则返回步骤1220。子图b示出了采用本申请实施例提供的模型渲染方法对应的当前工作流,在当前工作流中包括:步骤1201,制作第一模型,步骤1202,制作第二模型,步骤1203,设置第二模型对应的多个遮挡模型网格,步骤1204,基于第一模型和第二模型对应的多个遮挡模型网格在运行过程中对第一模型进行实时网格可见性调整。在当前工作流中,减少了第一模型和第二模型的耦合度,降低设计复杂度,当第二模型覆盖第一模型出现穿帮问题时,只需要调整第二模型对应的多个遮挡模型网格,提高了模型渲染效率。

图13是本申请一个示例性实施例提供的模型渲染装置的结构框图,如图13所示,该装置包括如下部分:

处理模块1310,用于获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,所述第一模型是待被所述第二模型装扮的三维模型,所述第一模型由多个第一模型网格构成,所述第一模型网格信息用于指示所述多个第一模型网格的排布结构,所述第二模型用于覆盖所述第一模型,所述第二模型对应有预设的多个遮挡模型网格,所述遮挡网格信息用于指示所述多个遮挡模型网格的排布结构;

所述处理模块1310,还用于基于所述第一模型网格信息和所述遮挡网格信息指示的所述第一模型网格与所述第二模型之间的遮挡关系,确定所述第一模型的模型遮挡信息,所述模型遮挡信息用于指示所述多个第一模型网格中被所述第二模型遮挡的网格;

所述处理模块1310,还用于基于所述模型遮挡信息对所述第一模型进行网格可见性调整,得到目标模型,所述目标模型中包括多个目标模型网格,所述多个目标模型网格中包括所述第二模型覆盖所述第一模型时所述第一模型中可见的第一模型网格,所述目标模型网格是待渲染的模型网格。

请参考图14,图14是本申请一个示例性实施例提供的模型渲染装置模块的结构框图,如图14所示,在一些实施例中,所述处理模块1310,包括:

第一处理单元1311,用于基于所述第一模型信息和所述遮挡网格信息确定所述多个第一模型网格与所述多个遮挡模型网格之间的位置关系;

第二处理单元1312,用于响应于所述位置关系指示所述第一模型网格与所述遮挡模型网格相交,确定所述第一模型网格与所述遮挡模型网格的包含关系;

第三处理单元1313,用于响应于所述包含关系指示所述遮挡模型网格包含所述第一模型网格,将所述第一模型网格确定为被遮挡网格,所述被遮挡网格中包括所述多个第一模型网格中被所述第二模型遮挡的网格;

第四处理单元1314,用于基于所述被遮挡网格确定所述模型遮挡信息。

在一些实施例中,所述第一模型信息中包括所述多个第一模型网格分别对应的第一包围盒数据,所述遮挡网格信息中包括所述多个遮挡模型网格分别对应的遮挡包围盒数据,所述第一包围盒数据用于指示包含所述第一模型网格的空间体,所述第一包围盒数据包括多个第一顶点,所述遮挡包围盒数据用于指示包含所述遮挡模型网格的空间体,所述遮挡包围盒数据包括多个遮挡顶点;

所述第一处理单元1311,用于:

基于所述第一包围盒数据确定所述第一模型网格中所述多个第一顶点分别对应的第一位置坐标;

基于所述遮挡包围盒数据确定所述遮挡模型网格对应的遮挡位置区域;

基于所述第一位置坐标和所述遮挡位置区域确定所述位置关系。

在一些实施例中,所述第二处理单元1312,用于基于所述第一位置坐标和所述遮挡包围盒数据确定所述包含关系。

在一些实施例中,所述遮挡包围盒数据用于指示包含所述遮挡模型网格且符合所述指定尺寸要求的六面体;

所述第二处理单元1312,用于响应于所述第一位置坐标的绝对值小于所述六面体的边长,确定第一包含关系,所述第一包含关系用于指示所述遮挡模型网格包含所述第一模型网格。

在一些实施例中,所述遮挡包围盒数据用于指示包含所述遮挡模型网格且符合所述指定尺寸要求的球体,所述遮挡包围盒数据中包括所述球体的中心点位置坐标;

所述第二处理单元1312,用于:

基于所述第一位置坐标和所述中心点位置坐标确定所述第一顶点与所述球体中心点之间的第一距离;

响应于所述第一模型网格中所述多个第一顶点分别对应的所述第一距离小于所述球体的半径,确定第一包含关系,所述第一包含关系用于指示所述遮挡模型网格包含所述第一模型网格。

在一些实施例中,所述第一处理单元1311中包括坐标转换子单元1301,用于将所述第一位置坐标和所述遮挡位置区域转换至同一坐标系中。

在一些实施例中,所述坐标转换子单元1301,用于:

将所述第一位置坐标转换至所述第二模型所在坐标系中;或者,

将所述遮挡位置区域转换至所述第一模型所在坐标系中;或者,

将所述第一位置坐标和所述遮挡位置区域分别转换至预设坐标系中。

在一些实施例中,所述处理模块1310,还用于获取所述第二模型的第二模型数据,所述第二模型中包括多个第二模型网格,所述第二模型网格信息用于指示所述多个第二模型网格的排布结构;基于所述第二模型数据针对所述目标模型渲染所述第二模型,得到穿戴模型,所述穿戴模型用于展示所述第二模型覆盖所述第一模型时的显示效果。

在一些实施例中,所述处理模块1310,还用于:

获取所述第一模型;

遍历所述第一模型的多个第一模型网格,并获取所述第一模型网格信息,所述第一模型网格信息中包括所述第一模型网格的数量数据、形状数据、尺寸数据、位置数据、所述第一模型网格对应的第一包围盒数据和所述第一模型对应的第一转换矩阵,所述第一转换矩阵用于将所述第一模型网格的位置数据指示的位置坐标从第一模型所在坐标系转换到预设坐标系中;

获取所述第二模型;

遍历所述第二模型对应的多个遮挡模型网格,并获取所述遮挡网格信息,所述遮挡网格信息中包括所述遮挡模型网格的数量数据、形状数据、尺寸数据、位置数据、所述遮挡模型网格对应的遮挡包围盒数据和所述第二模型对应的第二转换矩阵,所述第二转换矩阵用于将所述预设坐标中的位置坐标转换至所述第二模型所在坐标系中。

在一些实施例中,所述处理模块1310,还用于:

获取第三模型,所述第三模型中包括多个第一模型,所述多个第一模型分别对应有所述第一模型网格信息;

获取第四模型,所述第四模型中包括与所述多个第一模型分别对应的第二模型,所述第二模型对应有所述裁剪体信息;

通过多个线程基于所述第一模型网格信息和所述遮挡网格信息以并发形式分别对所述第三模型中的多个第一模型进行网格可见性调整,得到包括多个目标模型的第五模型,所述第五模型用于展示所述第四模型覆盖所述第三模型时的显示效果。

综上所述,本申请实施例提供的装置,通过获取第一模型的第一模型网格信息和第二模型对应的遮挡网格信息,第一模型是待被第二模型装扮的三维模型,第一模型由多个第一模型网格构成,第一模型网格信息用于指示多个第一模型网格的排布结构,第二模型用于覆盖第一模型,第二模型对应有预设的多个遮挡模型网格,遮挡网格信息用于指示多个遮挡模型网格的排布结构;基于第一模型网格信息和遮挡网格信息指示的第一模型网格与第二模型之间的遮挡关系,确定第一模型的模型遮挡信息,模型遮挡信息用于指示多个第一模型网格中被第二模型遮挡的网格;基于模型遮挡信息对第一模型进行网格可见性调整,得到目标模型,目标模型中包括多个目标模型网格,多个目标模型网格中包括第二模型覆盖第一模型时第一模型中可见的第一模型网格,目标模型网格是待渲染的模型网格,通过对第一模型进行网格可见性调整,得到目标模型,从而在模型渲染时只需要对多个目标模型网格进行渲染,而无需渲染第二模型覆盖第一模型时不可见的第一模型网格,从而减少了所需渲染的模型网格数量,从而提高渲染时CPU和GPU的运算性能,提高模型渲染效率。

需要说明的是:上述实施例提供的模型渲染装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

图15示出了本申请一个示例性实施例提供的终端1500的结构框图。该终端1500可以是:智能手机、平板电脑、MP3播放器、MP4播放器、笔记本电脑或台式电脑。终端1500还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端1500包括有:处理器1501和存储器1502。

处理器1501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1501可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器1501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1501可以在集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1501还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器1502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1501所执行以实现本申请中方法实施例提供的模型渲染方法。

在一些实施例中,终端1500还包括其他组件,本领域技术人员可以理解,图15中示出的结构并不构成对终端1500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本申请的实施例还提供了一种计算机设备,该计算机设备可以实现为如图1所示的终端或者服务器。该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的模型渲染方法。

本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行,以实现上述各方法实施例提供的模型渲染方法。

本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例提供的模型渲染方法。

可选地,该计算机可读存储介质可以包括:只读存储器(Read Only Memory,ROM)、随机存取记忆体(Random Access Memory,RAM)、固态硬盘(Solid State Drives,SSD)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(Resistance Random AccessMemory,ReRAM)和动态随机存取存储器(Dynamic Random Access Memory,DRAM)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 小程序的界面渲染方法、装置、电子设备和存储介质
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 目标检测方法和装置、电子设备、存储介质、程序产品
  • 行人再识别方法和装置、电子设备、存储介质、程序产品
  • 模型训练、目标检测及渲染方法、存储介质、程序产品
  • 量子门组件渲染方法、装置、设备、存储介质及程序产品
技术分类

06120116483457