CN115984440B - 对象渲染方法、装置、计算机设备和存储介质 - Google Patents
对象渲染方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115984440B CN115984440B CN202310268580.1A CN202310268580A CN115984440B CN 115984440 B CN115984440 B CN 115984440B CN 202310268580 A CN202310268580 A CN 202310268580A CN 115984440 B CN115984440 B CN 115984440B
- Authority
- CN
- China
- Prior art keywords
- sphere
- target
- model
- grid
- rendering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本申请涉及一种对象渲染方法、装置、计算机设备和存储介质。涉及到游戏领域,包括:对目标虚拟对象的三维对象模型进行球体网格化,得到所述目标虚拟对象的目标球体网格模型;所述目标球体网格模型包括多个目标球体网格;确定所述目标球体网格模型中各目标球体网格各自的可见性函数;所述可见性函数属于可微分的函数;基于所述目标球体网格模型以及各所述目标球体网格的可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。采用本方法能够提高渲染效率。
Description
技术领域
本申请涉及渲染技术领域,特别是涉及一种对象渲染方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术和游戏行业的发展,出现了光照渲染技术,通过渲染技术可以渲染出虚拟场景中的虚拟对象。例如,通常采用三角形网格表示虚拟对象的模型,然后利用该虚拟对象的模型渲染出该虚拟对象,在虚拟对象的模型中包括的三角形网格较少的情况下,利用该模型渲染出该虚拟对象后,该虚拟对象会缺乏较多的细节。
传统技术中,为了增加渲染出的虚拟对象呈现出的细节,通常采用人工编写代码的方法进行细节的增强,然而这种方式会消耗较多的时间,从而导致渲染效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高渲染效率的对象渲染方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
一方面,本申请提供了一种对象渲染方法。所述方法包括:对目标虚拟对象的三维对象模型进行球体网格化,得到所述目标虚拟对象的目标球体网格模型;所述目标球体网格模型包括多个目标球体网格;确定所述目标球体网格模型中各目标球体网格各自的可见性函数;所述可见性函数属于可微分的函数;基于所述目标球体网格模型以及各所述目标球体网格的可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。
另一方面,本申请还提供了一种对象渲染装置。所述装置包括:球体化模块,用于对目标虚拟对象的三维对象模型进行球体网格化,得到所述目标虚拟对象的目标球体网格模型;所述目标球体网格模型包括多个目标球体网格;可见性确定模块,用于确定所述目标球体网格模型中各目标球体网格各自的可见性函数;所述可见性函数属于可微分的函数;渲染模块,用于基于所述目标球体网格模型以及各所述目标球体网格的可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。
在一些实施例中,所述球体化模块,还用于对目标虚拟对象的三维对象模型进行球体网格化,生成所述目标虚拟对象的当前球体网格模型;确定非重叠体积;所述非重叠体积是指所述当前球体网格模型与所述三维对象模型之间的非重叠区域的体积;朝着使得所述非重叠体积减小的方向更新所述当前球体网格模型,直到所述非重叠体积小于或等于体积阈值为止;在所述非重叠体积小于或等于所述体积阈值的情况下,将所述当前球体网格模型确定为所述目标虚拟对象的目标球体网格模型。
在一些实施例中,所述球体化模块,还用于从所述目标虚拟对象的三维对象模型的内部确定多个点,得到多个内部点;针对每个所述内部点,将所述内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成所述目标虚拟对象的当前球体网格模型。
在一些实施例中,所述球体化模块,还用于确定所述三维对象模型的点集合;所述点集合包括所述三维对象模型的表面点和内部点;基于所述点集合中的内部点和表面点生成多个目标球体网格,将生成的所述多个目标球体网格组成所述目标虚拟对象的目标球体网格模型;所述点集合中的每个表面点属于至少一个所述目标球体网格。
在一些实施例中,所述球体化模块,还用于将所述点集合中的多个内部点分别作为球体中心点生成多个当前球体网格;依次从所述三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点;更新所述多个当前球体网格中与所述目标点匹配的当前球体网格;更新后所述目标点位于所述匹配的当前球体网格中;所述目标点匹配的当前球体网格与所述目标点相邻近;返回所述依次从所述三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点的步骤,直到所述点集合中每个表面点均位于至少一个当前球体网格为止,得到所述多个目标球体网格。
在一些实施例中,所述球体化模块,还用于确定所述目标点匹配的当前球体网格的步骤包括:将所述目标点的多个邻近球体网格,作为各候选球体网格;分别更新各所述候选球体网格;更新后所述目标点位于所述候选球体网格中;确定更新前后所述候选球体网格的外部体积增量;所述外部体积增量是指更新后所述候选球体网格的外部体积相对于更新前所述候选球体网格的外部体积的增量,所述外部体积是指所述候选球体网格的位于所述三维对象模型之外的区域的体积;将外部体积增量最小的候选球体网格所对应的所述目标点的邻近球体网格,确定为所述目标点匹配的当前球体网格。
在一些实施例中,所述装置还包括姿势变换模块,所述姿势变换模块,用于;在所述三维对象模型的姿势发生变换的情况下,基于各所述目标球体网格的球体中心点对应的邻近顶点分别在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置,得到姿势变换后的球体网格模型;基于所述姿势变换后的球体网格模型、所述姿势变换后的球体网格模型中各球体网格的可见性函数进行渲染,得到更新渲染结果;所述更新渲染结果中的所述目标虚拟对象的姿势与所述姿势变换后的三维对象模型的姿势相匹配。
在一些实施例中,所述球体中心点对应的各邻近顶点的位置的加权结果为所述球体中心点的位置;所述姿势变换模块,还用于确定所述球体中心点对应的各邻近顶点在所述姿势变换后的三维对象模型中的位置,得到各邻近顶点位置;对各所述邻近顶点位置进行加权计算得到所述球体中心点的待移动至的位置;将所述球体中心点的位置更新为所述待移动至的位置,以更新对应的目标球体网格的位置。
在一些实施例中,所述渲染模块,还用于对各所述目标球体网格的可见性函数进行组合,得到总可见性函数;基于所述目标球体网格模型以及所述总可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。
在一些实施例中,所述渲染是通过已训练的对象渲染模型实现的;所述装置还包括训练模块,所述训练模块,用于对样本虚拟对象的三维对象模型进行球体网格化,得到样本球体网格模型;将所述样本球体网格模型和样本场景信息输入待训练的对象渲染模型中,得到各所述样本球体网格各自的可见性函数,并利用各所述样本球体网格各自的可见性函数进行渲染得到渲染图像数据;基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到所述已训练的对象渲染模型。
在一些实施例中,所述训练模块,还用于确定所述渲染图像数据与参考图像数据之间的差异值,得到图像差异值;利用所述图像差异值更新待训练的对象渲染模型,并利用所述图像差异值更新所述样本球体网格的可见性函数;返回所述将所述样本球体网格模型和各所述样本球体网格各自的可见性函数,输入待训练的对象渲染模型进行渲染得到渲染图像数据的步骤,直到图像差异值小于或等于图像差异阈值为止,得到所述已训练的对象渲染模型。
另一方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述对象渲染方法中的步骤。
另一方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述对象渲染方法中的步骤。
另一方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述对象渲染方法中的步骤。
上述对象渲染方法、装置、计算机设备、存储介质和计算机程序产品,对目标虚拟对象的三维对象模型进行球体网格化,得到目标虚拟对象的目标球体网格模型,目标球体网格模型包括多个目标球体网格,确定目标球体网格模型中各目标球体网格各自的可见性函数,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。即,通过将三维对象模型进行球体网格化,实现对各个目标球体网格计算相应的可微分的可见性函数,从而可以基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,加快了渲染的效率。
附图说明
图1为一些实施例中对象渲染方法的应用环境图;
图2为一些实施例中对象渲染方法的流程示意图;
图3为一些实施例中三维对象模型的示意图;
图4为一些实施例中目标球体网格模型的示意图;
图5为一些实施例中进行渲染的原理图;
图6为一些实施例中进行训练对象渲染模型的原理图;
图7为一些实施例中对象渲染方法的流程示意图;
图8为一些实施例中对象渲染装置的结构框图;
图9为一些实施例中计算机设备的内部结构图;
图10为一些实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的对象渲染方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。
具体地,在需要渲染目标虚拟对象的情况下,终端102可以对目标虚拟对象的三维对象模型进行球体网格化,得到目标虚拟对象的目标球体网格模型,目标球体网格模型包括多个目标球体网格,确定目标球体网格模型中各目标球体网格各自的可见性函数,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。其中,可见性函数属于可微分的函数。其中,目标虚拟对象的三维对象模型可以是终端102从服务器104获取的。终端102可以将目标虚拟对象的渲染结果进行展示。
本申请提供的对象渲染方法可以是基于人工智能技术(ArtificialIntelligence, AI)。例如,本申请中可以是基于人工智能技术实现渲染的。人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。本申请基于人工智能技术实现渲染,可以提高渲染效率。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、云安全、主机安全等网络安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端102以及服务器104可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一些实施例中,如图2所示,提供了一种对象渲染方法,该方法可以由终端或服务器执行,还可以由终端和服务器共同执行,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
步骤202,对目标虚拟对象的三维对象模型进行球体网格化,得到目标虚拟对象的目标球体网格模型;目标球体网格模型包括多个目标球体网格。
其中,虚拟对象是指虚拟场景中的事物,虚拟对象包括但不限于是虚拟的人物、动物、家具或建筑物等中的至少一种。目标虚拟对象可以为虚拟场景中的任一虚拟对象。虚拟场景,是指计算机通过数字通讯技术勾勒出的数字化场景,虚拟场景包括但不限于是二维虚拟场景或三维虚拟场景中的至少一种。虚拟场景例如可以是游戏中的场景、VR(VirtualReality,VR)中的场景或动漫中的场景。虚拟对象例如可以为游戏中的角色或游戏中的环境对象等。
三维对象模型是由一系列基本几何图形组成的多边形网格,用于表征虚拟对象。基本几何图形是构成三维对象模型的最小的形状,基本几何图形例如可以为三角形或四边形等中的任意一种,基本几何图形包括多个顶点,例如,三角形包括3个顶点,四边形包括4个顶点。以虚拟对象为一个球形对象、基本几何图形为三角形为例,如图3所示,展示了该球形对象的三维对象模型,从图3可以看出,该球形对象的三维对象模型中的基本几何图形为三角形。
每个球体网格为一个球体,球体网格是组成球体网格模型的最小单元,即球体网格模型是由多个球体组成的模型,若将表征虚拟对象的模型理解为由网格组成的模型,则球体可以理解为一种特征的网格,故将球体称为球体网格。球体网格化是将采用球体网格来表征目标虚拟对象。目标球体网格模型是对目标虚拟对象的三维对象模型进行球体网格化后生成的模型。目标球体网格模型中的球体网格称为目标球体网格,目标球体网格可以为多个,多个是指至少两个,例如为100个。以虚拟对象为一个虚拟动物为例,如图4所示,展示了虚拟对象的三维对象模型402以及对三维对象模型402进行球体网格化后生成的目标球体网格模型404。
具体地,终端可以从目标虚拟对象的三维对象模型的内部确定多个点,得到多个内部点,内部点可以是三维对象模型内部的顶点,也可以是通过三维对象模型中的顶点插值出的位于该三维对象模型的内部的点。针对每个内部点,将内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成目标虚拟对象的当前球体网格模型。每个球体网格的半径或直径可以预先设置。球体网格中心点是指球体网格的中心点。终端可以确定非重叠体积,非重叠体积是指当前球体网格模型与的三维对象模型之间的非重叠区域的体积,朝着使得非重叠体积减小的方向更新当前球体网格模型,直到非重叠体积小于或等于体积阈值为止,在非重叠体积小于或等于体积阈值的情况下,将当前球体网格模型确定为目标虚拟对象的目标球体网格模型。其中,体积阈值可以根据需要设置。其中,更新当前球体网格模型,可以通过更新当前球体网格模型中的至少一个球体网格的半径的大小或球体中心点的位置来实现。
在一些实施例中,终端可以确定三维对象模型的点集合,点集合包括三维对象模型的表面点和内部点。表面点可以是三维对象模型表面的顶点,可以是在三维对象模型表面的基本几何图形上选取的点,例如在基本几何图形为三角形的情况下,表面点可以是在三角形上选取的点。终端可以将点集合中的多个内部点分别作为球体中心点生成多个当前球体网格,依次从三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点,更新多个当前球体网格中与目标点匹配的当前球体网格,更新后目标点位于匹配的当前球体网格中,目标点匹配的当前球体网格与目标点相邻近,更新后,终端可以返回依次从三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点的步骤,直到点集合中每个表面点均位于至少一个当前球体网格为止,得到多个目标球体网格,将生成的该多个目标球体网格组成目标球体网格模型。
步骤204,确定目标球体网格模型中各目标球体网格各自的可见性函数;可见性函数属于可微分的函数。
其中,可见性函数属于可微分的函数,例如,每个球体网格的可见性函数可以分别通过球谐(Sphere Harmonic,SH)函数表示。可见性函数通过目标场景信息确定,目标场景信息包括纹理贴图、照明信息或姿势信息中的至少一种。球谐函数可以表示为,其中,yi(w)为球谐函数的基函数,fi代表基函数yi(w)的权重。基函数可以通过公式/>计算得到,w为角度,表示光线的方向,i近似线性化,且i=c2+c+m,c为SH基带(基础带宽)的索引,m是基带内的索引,且-1≤m≤1,n为球谐函数的阶数,n可以根据需要预先设置,例如n=8。
具体地,终端可以确定目标场景信息,目标场景信息包括但不限于是三维虚拟对象的姿势信息、照明信息或纹理信息中的至少一种。终端可以基于目标场景信息,确定目标球体网格模型中各目标球体网格各自的可见性函数,可见性函数对姿势信息、照明信息或纹理信息中的任一种可微。
步骤206,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。
具体地,目标球体网格的可见性函数用于确定目标球体网格的光照信息,光照信息包括但不限于是光照强度或光照颜色中的至少一种。从而根据可见性函数可以进行渲染。终端可以对各目标球体网格的可见性函数进行组合,得到第一总可见性函数,基于目标球体网格模型以及第一总可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。渲染可以利用任意的能够实现渲染的方法,例如可以采用微分渲染方法或其他的渲染方法,这里不做限定。
在一些实施例中,终端可以利用已训练的对象渲染模型进行渲染,得到包括目标虚拟对象的渲染结果。如图5所示,终端可以将姿势信息、照明信息或纹理信息和目标球体网格模型,输入到已训练的对象渲染模型中进行渲染,得到包括目标虚拟对象的渲染结果。已训练的对象渲染模型具有渲染的功能。
在一些实施例中,终端可以确定待渲染的对象渲染模型,该对象渲染模型具有渲染的功能。终端可以对样本虚拟对象的三维对象模型进行球体网格化,得到样本球体网格模型,将样本场景信息和样本球体网格模型输入到待渲染的对象渲染模型中,利用待渲染的对象渲染模型对样本场景信息进行计算,得到各样本球体网格各自的可见性函数,并利用待渲染的对象渲染模型对样本球体网格模型和各样本球体网格各自的可见性函数进行渲染,得到渲染图像数据,基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到已训练的对象渲染模型。其中,样本虚拟对象可以为虚拟场景中的任一虚拟对象,样本虚拟对象可以与目标虚拟对象为同一虚拟对象或者为不同的虚拟对象。样本场景信息中包括姿势信息、照明信息或纹理信息中的至少一种。得到样本球体网格模型的过程参照得到目标球体网格模型的过程,确定样本球体网格的可见性函数的过程参照确定目标球体网格的可见性函数,这里不再赘述。终端可以通过已训练的对象渲染模型进行渲染,得到包括目标虚拟对象的渲染结果。
上述对象渲染方法中,对目标虚拟对象的三维对象模型进行球体网格化,得到目标虚拟对象的目标球体网格模型,目标球体网格模型包括多个目标球体网格,确定目标球体网格模型中各目标球体网格各自的可见性函数,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。即,通过将三维对象模型进行球体网格化,实现对各个目标球体网格计算相应的可微分的可见性函数,从而可以基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,加快了渲染的效率。
在一些实施例中,对目标虚拟对象的三维对象模型进行球体网格化,得到目标虚拟对象的目标球体网格模型包括:对目标虚拟对象的三维对象模型进行球体网格化,生成目标虚拟对象的当前球体网格模型;确定非重叠体积;非重叠体积是指当前球体网格模型与的三维对象模型之间的非重叠区域的体积;朝着使得非重叠体积减小的方向更新当前球体网格模型,直到非重叠体积小于或等于体积阈值为止;在非重叠体积小于或等于体积阈值的情况下,将当前球体网格模型确定为目标虚拟对象的目标球体网格模型。
具体地,终端可以从目标虚拟对象的三维对象模型的内部确定多个点,针对该多个点中的每个内部点,将该点作为球体网格中心点生成球体网格,将生成的各球体网格组成目标虚拟对象的当前球体网格模型,其中,每个球体网格的半径或直径可以预先设置。球体网格中心点是指球体网格的中心点。
在一些实施例中,终端可以确定非重叠体积;所述非重叠体积是指当前球体网格模型与的三维对象模型之间的非重叠区域的体积,在非重叠体积大于体积阈值的情况下,终端可以朝着使得非重叠体积减小的方向,更新当前球体网格模型中的至少一个球体网格,更新后,返回确定非重叠体积的步骤,在非重叠体积小于或等于体积阈值的情况下,终端将当前球体网格模型确定为目标虚拟对象的目标球体网格模型。其中,体积阈值可以根据需要设置。
本实施例中,在非重叠体积小于或等于体积阈值的情况下,将当前球体网格模型确定为目标虚拟对象的目标球体网格模型,从而可以使得目标球体网格模型呈现的几何结构与三维对象模型呈现的几何结构相近,使得基于目标球体网格模型进行渲染出的目标虚拟对象更加准备。
在一些实施例中,对目标虚拟对象的三维对象模型进行球体网格化,生成目标虚拟对象的当前球体网格模型包括:从目标虚拟对象的三维对象模型的内部确定多个点,得到多个内部点;针对每个内部点,将内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成目标虚拟对象的当前球体网格模型。
其中,内部点是指处于目标虚拟对象的三维对象模型内部的点。每个球体网格的半径或直径可以预先设置。
具体地,终端可以将内部点作为球体网格中心点,生成球体半径为指定球体半径的球体网格,生成每个球体网格所采用的指定球体半径可以相同也可以不同。终端可以通过更新该球体网格的球体网格中心点或球体半径中的至少一个,来实现对球体网格的更新。
本实施例中,将内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成目标虚拟对象的当前球体网格模型,从而可以使得生成的当前球体网格模型与三维对象模型之间的非重叠区域较少,从而可以加快从当前球体网格模型得到目标球体网格模型的过程,提高了生成目标球体网格模型的效率。
在一些实施例中,对目标虚拟对象的三维对象模型进行球体网格化,得到目标虚拟对象的目标球体网格模型包括:确定三维对象模型的点集合;点集合包括三维对象模型的表面点和内部点;基于点集合中的内部点和表面点生成多个目标球体网格,将生成的多个目标球体网格组成目标虚拟对象的目标球体网格模型;点集合中的每个表面点属于至少一个目标球体网格。
其中,三维对象模型的内部点是指位于三维对象模型内部的点。三维对象模型的表面点是指三维对象模型的表面上的点。内部点可以是三维对象模型内部的顶点,也可以是通过三维对象模型中的顶点插值出的位于该三维对象模型的内部的点。表面点可以是三维对象模型表面的顶点,可以是在三维对象模型表面的基本几何图形上选取的点,例如在基本几何图形为三角形的情况下,表面点可以是在三角形上选取的点。
具体地,终端可以从点集合的各内部点中随机选取多个内部点,多个内部点是指至少两个内部点,将选取的各内部点分别作为球体中心点生成多个当前球体网格,当前球体网格的球体半径可以为预设球体半径,预设球体半径可以为0或接近0的正数。终端可以不断的更新各当前球体网格,使得点集合中的各表面点被至少一个当前球体网格所包围,直到点集合中的每个表面点均位于至少一个当前球体网格为止,在点集合中的每个表面点均位于至少一个当前球体网格的情况下,将各当前球体网格作为各目标球体网格,将各目标球体网格组成目标球体网格模型。
在一些实施例中,终端可以不断的更新各当前球体网格的球体半径,使得点集合中的各表面点被至少一个当前球体网格所包围。
本实施例中,由于点集合中的每个表面点属于至少一个目标球体网格,从而生成的目标球体网格模型包围了各个表面点,从而可以利用目标球体网格模型中各目标球体网格准确的确定三维对象模型表面的光照信息,提高了渲染的准确度。
在一些实施例中,基于点集合中的内部点和表面点生成多个目标球体网格包括:将点集合中的多个内部点分别作为球体中心点生成多个当前球体网格;依次从三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点;更新多个当前球体网格中与目标点匹配的当前球体网格;更新后目标点位于匹配的当前球体网格中;目标点匹配的当前球体网格与目标点相邻近;返回依次从三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点的步骤,直到点集合中每个表面点均位于至少一个当前球体网格为止,得到多个目标球体网格。
其中,当前球体网格的初始的球体半径可以为预设球体半径,预设球体半径例如可以为0或接近0的正数。目标点是指点集合中位于各当前球体网格之外的表面点。生成的当前球体网格的球体半径为预设球体半径,由于预设球体半径为0或接近0的正数,故生成的当前球体网格的体积较小,从而与三维对象模型的重叠区域较少,故存在一些表面点并未被任一当前球体网格包围。当前球体网格的球体半径可以不断更新,通过更新例如增大当前球体网格的球体半径,可以使得更多的表面点被至少一个当前球体网格所包围。
具体地,对于每个目标点,终端可以计算目标点与各当前球体网格的球体中心点之间的距离,得到目标距离,基于目标距离从各当前球体网格中确定目标点匹配的当前球体网格。例如,可以将目标距离最小的当前球体网格中确定目标点匹配的当前球体网格。
在一些实施例中,终端可以依次从点集合中查找位于各当前球体网格之外的表面点即目标点,在查找到目标点的情况下,从多个当前球体网格中确定与目标点匹配的当前球体网格,对该目标点匹配的当前球体网格进行更新,例如增大匹配的当前球体网格的球体半径,并且增大后目标点位于匹配的当前球体网格中,即增大后该匹配的当前球体网格包围该目标点。在查找不到目标点的情况下,即在确定点集合中每个表面点均位于至少一个当前球体网格中的情况下,将当前球体网格确定为目标球体网格。
本实施例中,由于目标点匹配的当前球体网格与目标点相邻近,更新后目标点位于匹配的当前球体网格中,从而通过调整与目标点相邻近的当前球体网格来包围该目标点,提高了调整当前球体网格的合理性。
在一些实施例中,确定目标点匹配的当前球体网格的步骤包括:将目标点的多个邻近球体网格,作为各候选球体网格;分别更新各候选球体网格;更新后目标点位于候选球体网格中;确定更新前后候选球体网格的外部体积增量;外部体积增量是指更新后候选球体网格的外部体积相对于更新前候选球体网格的外部体积的增量,外部体积是指候选球体网格的位于三维对象模型之外的区域的体积;将外部体积增量最小的候选球体网格所对应的目标点的邻近球体网格,确定为目标点匹配的当前球体网格。
其中,外部体积增量是指更新后候选球体网格的外部体积相对于更新前候选球体网格的外部体积的增量,外部体积是指候选球体网格的位于三维对象模型之外的区域的体积。需要说明的是,候选球体网格与目标点的邻近球体网格是指两个球体网格,针对候选球体网格的更新,并非针对目标点的邻近球体网格的更新,例如,目标点的邻近球体网格为球体网格A,将球体网格A作为候选球体网格H,则针对候选球体网格H的更新,并不会引起对球体网格A的更新。
候选球体网格所对应的目标点的邻近球体网格,是指被作为该候选球体网格的邻近球体网格,例如,将球体网格A作为候选球体网格H,则候选球体网格H对应的邻近球体网格则指的是球体网格A。
具体地,针对每个候选球体网格,终端可以确定候选球体网格中位于三维对象模型之外的区域的体积,得到第一外部体积,更新该候选球体网格,以使得目标点位于该候选球体网格,更新后确定该候选球体网格中位于三维对象模型之外的区域的体积,得到第二外部体积,计算第二外部体积与第一外部体积之间的差异值,得到更新前后该候选球体网格的外部体积增量。
在一些实施例中,在确定各候选球体网格的外部体积增量的情况下,终端可以确定外部体积增量最小的候选球体网格,得到最小增量球体网格,将最小增量球体网格所对应的该目标点的邻近球体网格,确定为目标点匹配的当前球体网格。
本实施例中,将外部体积增量最小的候选球体网格所对应的目标点的邻近球体网格,确定为目标点匹配的当前球体网格,从而可以在外部体积增量尽可能少的情况下使得目标点被当前球体网格所包围,从而使得最终生成的目标球体网格模型中处于三维对象模型之间的区域的体积尽量少,提高了目标球体网格模型与三维对象模型在占用的空间上的接近程度,从而利用目标球体网格模型的可见性函数对三维对象模型进行渲染,提高了渲染的准确度。
在一些实施例中,方法还包括:在三维对象模型的姿势发生变换的情况下,基于各目标球体网格的球体中心点对应的邻近顶点分别在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置,得到姿势变换后的球体网格模型;基于姿势变换后的球体网格模型、姿势变换后的球体网格模型中各球体网格的可见性函数进行渲染,得到更新渲染结果;更新渲染结果中的目标虚拟对象的姿势与姿势变换后的三维对象模型的姿势相匹配。
其中,三维对象模型的姿势可以发生变换,例如,当目标虚拟对象的姿势发生变换时,则对应的三维对象模型的姿势也会发生变换。
具体地,终端可以从三维对象模型的各顶点中,确定球体中心点周围的多个顶点,得到候选顶点集合,计算候选顶点集合中各候选顶点分别与球体中心点之间的距离,按照距离从小到大的顺序从候选顶点集合中选取候选顶点,作为该球体中心点的邻近顶点。邻近顶点可以为至少一个。球体中心点的位置随着球体中心点的各邻近顶点的位置的变化而变化,终端可以基于球体中心点对应的各邻近顶点在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置,得到姿势变换后的球体网格模型。
在一些实施例中,各邻近顶点分别对应的权重,利用各权重对各邻近顶点的位值进行加权计算所得到的结果为该球体中心点的位置。在三维对象模型的姿势发生变换的情况下,终端可以确定球体中心点对应的各邻近顶点在姿势变换后的三维对象模型中的位置,得到各邻近顶点位置,利用各邻近顶点的权重对该球体中心点对应的各邻近顶点位置进行加权计算,得到球体中心点的待移动至的位置,将球体中心点的位置更新为待移动至的位置,以更新对应的目标球体网格的位置,从而实现了对目标球体网格模型的姿势的变换。
在一些实施例中,终端可以基于姿势变换后的球体网格模型、姿势变换后的球体网格模型中各球体网格的可见性函数进行渲染,得到更新渲染结果;更新渲染结果中的目标虚拟对象的姿势与姿势变换后的三维对象模型的姿势相匹配。从而可以通过姿势变换,可以渲染出不同姿势的目标虚拟对象。
本实施例中,基于姿势变换后的球体网格模型中各球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果,从而可以快速的渲染出姿势不同的目标虚拟对象,提高了渲染效率。
在一些实施例中,球体中心点对应的各邻近顶点的位置的加权结果为球体中心点的位置;基于球体中心点对应的各邻近顶点在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置包括:确定球体中心点对应的各邻近顶点在姿势变换后的三维对象模型中的位置,得到各邻近顶点位置;对各邻近顶点位置进行加权计算得到球体中心点的待移动至的位置;将球体中心点的位置更新为待移动至的位置,以更新对应的目标球体网格的位置。
具体地,在三维对象模型的姿势发生变换的情况下,针对每个目标球体网格,终端可以确定球体中心点的邻近顶点在姿势变换后的三维对象模型中的位置,将邻近顶点在姿势变换后的三维对象模型中的位置记作邻近顶点位置,利用该目标球体网格的球体中心点的各邻近顶点的权重,对各邻近顶点位置进行加权计算,将加权计算的结果确定为该目标球体网格的待移动至的位置,将该目标球体网格的球体中心点的位置调整为该待移动至的位置,从而实现了目标球体网格模型的姿势的变换。
本实施例中,由于目标球体网格的球体中心点的位置,为利用各权重对至少一个邻近顶点的位置进行加权计算所得到的结果,从而在姿势发生变换时,可以利用邻近顶点的位置来确定球体中心点的位置,提高了姿势变换后球体中心点的位置的准确度。
在一些实施例中,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果包括:对各目标球体网格的可见性函数进行组合,得到总可见性函数;基于目标球体网格模型以及总可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。
具体地,终端可以将各目标球体网格的可见性函数相乘,将相乘的结果确定为总可见性函数。终端在得到总可见性函数的情况下,可以基于目标球体网格模型以及总可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。
在一些实施例中,终端可以利用已训练的对象渲染模型进行渲染。已训练的对象渲染模型具有渲染的功能。具体地,终端可以将目标球体网格模型和目标场景信息输入该已训练的对象渲染模型中,得到总可见性函数,并利用该已训练的对象渲染模型对目标球体网格模型以及总可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。
本实施例中,对各目标球体网格的可见性函数进行组合,得到总可见性函数,从而将多个可见性函数合并为一个总可见性函数,减少了可见性函数的数量,从而加快了数据运算的效率。
在一些实施例中,渲染是通过已训练的对象渲染模型实现的;得到已训练的对象渲染模型的步骤包括:对样本虚拟对象的三维对象模型进行球体网格化,得到样本球体网格模型;将样本球体网格模型和样本场景信息输入待训练的对象渲染模型中,得到各样本球体网格各自的可见性函数,并利用各样本球体网格各自的可见性函数进行渲染得到渲染图像数据;基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到已训练的对象渲染模型。
其中,样本虚拟对象可以为虚拟场景中的任一虚拟对象,样本虚拟对象可以与目标虚拟对象为同一虚拟对象或者为不同的虚拟对象。得到样本球体网格模型的过程参照得到目标球体网格模型的过程,确定样本球体网格的可见性函数的过程参照确定目标球体网格的可见性函数,这里不再赘述。
渲染图像数据是指渲染出的图像数据。例如,渲染图像数据IR可以表示为:IR=R(B(X0),…,B(Xj), …,B(XN),P)。其中,Xj代表第j个样本球体网格,N为样本球体网格的个数,B(.)包括阴影以及表面的漫反射阴影, R是球谐的光栅化函数, B(Xj)包括球体网格的辐射度,P是相机的投影矩阵。参考图像数据是参考图像的数据,参考图像是期望渲染出的图像,参照图像中包括样本虚拟对象,且样本虚拟对象在参照图像中的姿势为目标姿势。样本球体网格的可见性函数,是样本虚拟对象在处于该目标姿势的情况下确定的。
具体地,可以将对各目标球体网格的可见性函数进行组合得到的总可见性函数记作第一总可见性函数。终端将样本球体网格模型和样本场景信息输入待训练的对象渲染模型中,得到各样本球体网格各自的可见性函数,并可以对各样本球体网格的可见性函数进行组合,得到第二总可见性函数,基于样本球体网格模型和第二总可见性函数进行渲染得到渲染图像数据。
在一些实施例中,终端可以确定渲染图像数据与参考图像数据之间的差异值,得到图像差异值。由于渲染图像数据是基于可微分的可见性函数渲染出的,故图像差异值也是可以微分的,例如,图像差异值L(θ,L, a0,…,an)可以表示为,其中,I代表参考图像数据,θ包括场景中物体的全局刚性姿态和嵌入变形,IR(θ,L,a0,…,an)= R(B(X0),…,B(Xj), …,B(XN),P)。图像差异值L(θ,L, a0,…,an)是可微的函数,a0~an分别代表一个球体网格。朝着使得图像差异值变小的方向,更新待训练的对象渲染模型,直到图像差异值小于或等于图像差异阈值为止,得到已训练的对象渲染模型。图像差异阈值可以根据需要设置。如图6所示,将样本球体网格模型602和样本场景信息,输入到对象渲染模型中进行渲染,得到渲染出的图像604,将渲染出的图像604的图像数据即渲染图像数据与参考图像数606的图像数据进行差异值计算,得到图像差异值。样本场景信息包括姿势信息、照明信息或纹理贴图中的至少一种。图6中,前向通道是指由样本球体网格模型602和样本场景信息生成渲染图像数据的过程,反向通道是指利用图像差异值更新对象渲染模型的过程。
本实施例中,基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到已训练的对象渲染模型,从而训练出了具有渲染功能的对象渲染模型。
在一些实施例中,基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到已训练的对象渲染模型包括:确定渲染图像数据与参考图像数据之间的差异值,得到图像差异值;利用图像差异值更新待训练的对象渲染模型,并利用图像差异值更新样本球体网格的可见性函数;返回将样本球体网格模型和各样本球体网格各自的可见性函数,输入待训练的对象渲染模型进行渲染得到渲染图像数据的步骤,直到图像差异值小于或等于图像差异阈值为止,得到已训练的对象渲染模型。
具体地,由于渲染结果受到可见性函数的影响,故在训练过程中可以调整可见性函数,以提高训练准确度。终端在得到图像差异值的情况下,可以朝着使得图像差异值变小的方向,调整对象渲染模型,并朝着图像差异值变小的方向调整可见性函数,直到图像差异值小于或等于图像差异阈值为止,得到已训练的对象渲染模型。
在一些实施例中,终端可以通过调整影响可见性函数的样本场景信息,来实现对可见性函数的调整。具体地,通过调整可见性函数,可以生成具有软阴影的图像,例如,参照图像中存在样本虚拟对象的软阴影,通过调整可见性函数,可以使得对象渲染模型渲染出的图像中呈现出与样本参照图像中一致的软阴影。
本实施例中,由于渲染结果受到可见性函数的影响,故在训练过程中可以调整可见性函数,以提高了训练准确度。
在一些实施例中,如图7所示,提供了一种对象渲染方法,该方法可以由终端执行,还可以由终端和服务器共同执行,以该方法应用于终端为例进行说明,包括以下步骤:
步骤702,从目标虚拟对象的三维对象模型的内部确定多个点,得到多个内部点。
其中,内部点可以是三维对象模型内部的顶点,也可以是通过三维对象模型中的顶点插值出的位于该三维对象模型的内部的点。表面点可以是三维对象模型表面的顶点,可以是在三维对象模型表面的基本几何图形上选取的点,例如在基本几何图形为三角形的情况下,表面点可以是在三角形上选取的点。
步骤704,针对每个内部点,将内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成目标虚拟对象的当前球体网格模型。
其中,每个球体网格的半径或直径可以预先设置。
步骤706,确定非重叠体积;非重叠体积是指当前球体网格模型与三维对象模型之间的非重叠区域的体积。
步骤708,朝着使得非重叠体积减小的方向更新当前球体网格模型,直到非重叠体积小于或等于体积阈值为止。
其中,更新当前球体网格模型,可以通过更新当前球体网格模型中的至少一个球体网格的半径的大小或球体中心点的位置来实现。
步骤710,在非重叠体积小于或等于体积阈值的情况下,将当前球体网格模型确定为目标虚拟对象的目标球体网格模型。
步骤712,确定目标球体网格模型中各目标球体网格各自的可见性函数。
其中,可见性函数属于可微分的函数,例如可以通过球谐函数来表示。
步骤714,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。
其中,终端可以通过已训练的对象渲染模型进行渲染,得到包括目标虚拟对象的渲染结果。终端可以将姿势信息、照明信息或纹理信息和目标球体网格模型,输入到已训练的对象渲染模型中,利用已训练的对象渲染模型生成各目标球体网格各自的可见性函数,并基于各目标球体网格各自的可见性函数和目标球体网格模型进行渲染,得到包括目标虚拟对象的渲染结果。
本实施例中,利用球体网格表示目标虚拟对象,确定每个球体网格的可见性函数,基于球体网格的可见性函数进行渲染,从而提高了渲染效率。
本申请提供的对象渲染方法可以应用于任何的需要渲染虚拟对象的场景中,包括但不限于是游戏场景、动漫场景或虚拟现实(Virtual Reality,VR)、工业仿真和数字文创等场景中的至少一种。本申请提供的对象渲染方法,应用于游戏、动漫、虚拟现实场景、工业仿真和数字文创中,可以提高虚拟对象的渲染效率。
比如,针对游戏中渲染效率较低的游戏虚拟对象,游戏虚拟对象可以是游戏中的角色或游戏中的环境对象等,具体地,终端可以从游戏虚拟对象的三维对象模型的内部确定多个点,得到多个内部点,针对每个内部点,将内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成游戏虚拟对象的当前球体网格模型,确定非重叠体积,非重叠体积是指当前球体网格模型与三维对象模型之间的非重叠区域的体积,朝着使得非重叠体积减小的方向更新当前球体网格模型,直到非重叠体积小于或等于体积阈值为止,在非重叠体积小于或等于体积阈值的情况下,将当前球体网格模型确定为游戏虚拟对象的目标球体网格模型。终端可以确定目标球体网格模型中各目标球体网格各自的可见性函数,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括游戏虚拟对象的渲染结果,从而利用本申请提供的对象渲染方法实现游戏虚拟对象的快速渲染。
再比如,针对工业仿真中渲染效率较低的仿真对象,终端可以从仿真对象的三维对象模型的内部确定多个点,得到多个内部点,针对每个内部点,将内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成仿真对象的当前球体网格模型,确定非重叠体积,非重叠体积是指当前球体网格模型与三维对象模型之间的非重叠区域的体积,朝着使得非重叠体积减小的方向更新当前球体网格模型,直到非重叠体积小于或等于体积阈值为止,在非重叠体积小于或等于体积阈值的情况下,将当前球体网格模型确定为仿真对象的目标球体网格模型。终端可以确定目标球体网格模型中各目标球体网格各自的可见性函数,基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括仿真对象的渲染结果。应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的对象渲染方法的对象渲染装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个对象渲染装置实施例中的具体限定可以参见上文中对于对象渲染方法的限定,在此不再赘述。
在一些实施例中,如图8所示,提供了一种对象渲染装置,包括:球体化模块802、可见性确定模块804和渲染模块806,其中:
球体化模块802,用于对目标虚拟对象的三维对象模型进行球体网格化,得到目标虚拟对象的目标球体网格模型;目标球体网格模型包括多个目标球体网格。
可见性确定模块804,用于确定目标球体网格模型中各目标球体网格各自的可见性函数;可见性函数属于可微分的函数。
渲染模块806,用于基于目标球体网格模型以及各目标球体网格的可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。
在一些实施例中,球体化模块802,还用于对目标虚拟对象的三维对象模型进行球体网格化,生成目标虚拟对象的当前球体网格模型;确定非重叠体积;非重叠体积是指当前球体网格模型与的三维对象模型之间的非重叠区域的体积;朝着使得非重叠体积减小的方向更新当前球体网格模型,直到非重叠体积小于或等于体积阈值为止;在非重叠体积小于或等于体积阈值的情况下,将当前球体网格模型确定为目标虚拟对象的目标球体网格模型。
在一些实施例中,球体化模块802,还用于从目标虚拟对象的三维对象模型的内部确定多个点,得到多个内部点;针对每个内部点,将内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成目标虚拟对象的当前球体网格模型。
在一些实施例中,球体化模块802,还用于确定三维对象模型的点集合;点集合包括三维对象模型的表面点和内部点;基于点集合中的内部点和表面点生成多个目标球体网格,将生成的多个目标球体网格组成目标虚拟对象的目标球体网格模型;点集合中的每个表面点属于至少一个目标球体网格。
在一些实施例中,球体化模块802,还用于将点集合中的多个内部点分别作为球体中心点生成多个当前球体网格;依次从三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点;更新多个当前球体网格中与目标点匹配的当前球体网格;更新后目标点位于匹配的当前球体网格中;目标点匹配的当前球体网格与目标点相邻近;返回依次从三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点的步骤,直到点集合中每个表面点均位于至少一个当前球体网格为止,得到多个目标球体网格。
在一些实施例中,球体化模块802,还用于确定目标点匹配的当前球体网格的步骤包括:将目标点的多个邻近球体网格,作为各候选球体网格;分别更新各候选球体网格;更新后目标点位于候选球体网格中;确定更新前后候选球体网格的外部体积增量;外部体积增量是指更新后候选球体网格的外部体积相对于更新前候选球体网格的外部体积的增量,外部体积是指候选球体网格的位于三维对象模型之外的区域的体积;将外部体积增量最小的候选球体网格所对应的目标点的邻近球体网格,确定为目标点匹配的当前球体网格。
在一些实施例中,装置还包括姿势变换模块,姿势变换模块,用于在三维对象模型的姿势发生变换的情况下,基于各目标球体网格的球体中心点对应的邻近顶点分别在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置,得到姿势变换后的球体网格模型;基于姿势变换后的球体网格模型、姿势变换后的球体网格模型中各球体网格的可见性函数进行渲染,得到更新渲染结果;更新渲染结果中的目标虚拟对象的姿势与姿势变换后的三维对象模型的姿势相匹配。
在一些实施例中,球体中心点对应的各邻近顶点的位置的加权结果为球体中心点的位置;姿势变换模块,还用于确定球体中心点对应的各邻近顶点在姿势变换后的三维对象模型中的位置,得到各邻近顶点位置;对各邻近顶点位置进行加权计算得到球体中心点的待移动至的位置;将球体中心点的位置更新为待移动至的位置,以更新对应的目标球体网格的位置。
在一些实施例中,渲染模块806,还用于对各目标球体网格的可见性函数进行组合,得到总可见性函数;基于目标球体网格模型以及总可见性函数进行渲染,得到包括目标虚拟对象的渲染结果。
在一些实施例中,渲染是通过已训练的对象渲染模型实现的;装置还包括训练模块,训练模块,用于对样本虚拟对象的三维对象模型进行球体网格化,得到样本球体网格模型;将样本球体网格模型和样本场景信息输入待训练的对象渲染模型中,得到各样本球体网格各自的可见性函数,并利用各样本球体网格各自的可见性函数进行渲染得到渲染图像数据;基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到已训练的对象渲染模型。
在一些实施例中,训练模块,还用于确定渲染图像数据与参考图像数据之间的差异值,得到图像差异值;利用图像差异值更新待训练的对象渲染模型,并利用图像差异值更新样本球体网格的可见性函数;返回将样本球体网格模型和各样本球体网格各自的可见性函数,输入待训练的对象渲染模型进行渲染得到渲染图像数据的步骤,直到图像差异值小于或等于图像差异阈值为止,得到已训练的对象渲染模型。
上述对象渲染装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储对象渲染方法中涉及到的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种对象渲染方法。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种对象渲染方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9和图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述对象渲染方法中的步骤。
在一些实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述对象渲染方法中的步骤。
在一些实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述对象渲染方法中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive RandomAccess Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(PhaseChange Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandom Access Memory,SRAM)或动态随机存取存储器(Dynamic Random AccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (22)
1.一种对象渲染方法,其特征在于,所述方法包括:
对目标虚拟对象的三维对象模型进行球体网格化,得到所述目标虚拟对象的目标球体网格模型;所述目标球体网格模型包括多个目标球体网格;包括:对目标虚拟对象的三维对象模型进行球体网格化,生成所述目标虚拟对象的当前球体网格模型;确定非重叠体积;所述非重叠体积是指所述当前球体网格模型与所述三维对象模型之间的非重叠区域的体积;朝着使得所述非重叠体积减小的方向更新所述当前球体网格模型,直到所述非重叠体积小于或等于体积阈值为止;在所述非重叠体积小于或等于所述体积阈值的情况下,将所述当前球体网格模型确定为所述目标虚拟对象的目标球体网格模型;
确定所述目标球体网格模型中各目标球体网格各自的可见性函数;所述可见性函数属于可微分的函数;
基于所述目标球体网格模型以及各所述目标球体网格的可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。
2.根据权利要求1所述的方法,其特征在于,所述对目标虚拟对象的三维对象模型进行球体网格化,生成所述目标虚拟对象的当前球体网格模型包括:
从所述目标虚拟对象的三维对象模型的内部确定多个点,得到多个内部点;
针对每个所述内部点,将所述内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成所述目标虚拟对象的当前球体网格模型。
3.根据权利要求1所述的方法,其特征在于,所述对目标虚拟对象的三维对象模型进行球体网格化,得到所述目标虚拟对象的目标球体网格模型包括:
确定所述三维对象模型的点集合;所述点集合包括所述三维对象模型的表面点和内部点;
基于所述点集合中的内部点和表面点生成多个目标球体网格,将生成的所述多个目标球体网格组成所述目标虚拟对象的目标球体网格模型;所述点集合中的每个表面点属于至少一个所述目标球体网格。
4.根据权利要求3所述的方法,其特征在于,所述基于所述点集合中的内部点和表面点生成多个目标球体网格包括:
将所述点集合中的多个内部点分别作为球体中心点生成多个当前球体网格;
依次从所述三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点;
更新所述多个当前球体网格中与所述目标点匹配的当前球体网格;更新后所述目标点位于所述匹配的当前球体网格中;所述目标点匹配的当前球体网格与所述目标点相邻近;
返回所述依次从所述三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点的步骤,直到所述点集合中每个表面点均位于至少一个当前球体网格为止,得到所述多个目标球体网格。
5.根据权利要求4所述的方法,其特征在于,确定所述目标点匹配的当前球体网格的步骤包括:
将所述目标点的多个邻近球体网格,作为各候选球体网格;
分别更新各所述候选球体网格;更新后所述目标点位于所述候选球体网格中;
确定更新前后所述候选球体网格的外部体积增量;所述外部体积增量是指更新后所述候选球体网格的外部体积相对于更新前所述候选球体网格的外部体积的增量,所述外部体积是指所述候选球体网格的位于所述三维对象模型之外的区域的体积;
将外部体积增量最小的候选球体网格所对应的所述目标点的邻近球体网格,确定为所述目标点匹配的当前球体网格。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述三维对象模型的姿势发生变换的情况下,基于各所述目标球体网格的球体中心点对应的邻近顶点分别在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置,得到姿势变换后的球体网格模型;
基于所述姿势变换后的球体网格模型、所述姿势变换后的球体网格模型中各球体网格的可见性函数进行渲染,得到更新渲染结果;所述更新渲染结果中的所述目标虚拟对象的姿势与所述姿势变换后的三维对象模型的姿势相匹配。
7.根据权利要求6所述的方法,其特征在于,所述球体中心点对应的各邻近顶点的位置的加权结果为所述球体中心点的位置;
所述基于各所述目标球体网格的球体中心点对应的邻近顶点分别在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置包括:
确定所述球体中心点对应的各邻近顶点在所述姿势变换后的三维对象模型中的位置,得到各邻近顶点位置;
对各所述邻近顶点位置进行加权计算得到所述球体中心点的待移动至的位置;
将所述球体中心点的位置更新为所述待移动至的位置,以更新对应的目标球体网格的位置。
8.根据权利要求1所述的方法,其特征在于,所述基于所述目标球体网格模型以及各所述目标球体网格的可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果包括:
对各所述目标球体网格的可见性函数进行组合,得到总可见性函数;
基于所述目标球体网格模型以及所述总可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。
9.根据权利要求1所述的方法,其特征在于,所述渲染是通过已训练的对象渲染模型实现的;得到所述已训练的对象渲染模型的步骤包括:
对样本虚拟对象的三维对象模型进行球体网格化,得到样本球体网格模型;
将所述样本球体网格模型和样本场景信息输入待训练的对象渲染模型中,得到各所述样本球体网格各自的可见性函数,并利用各所述样本球体网格各自的可见性函数进行渲染得到渲染图像数据;
基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到所述已训练的对象渲染模型。
10.根据权利要求9所述的方法,其特征在于,所述基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到所述已训练的对象渲染模型包括:
确定所述渲染图像数据与参考图像数据之间的差异值,得到图像差异值;
利用所述图像差异值更新待训练的对象渲染模型,并利用所述图像差异值更新所述样本球体网格的可见性函数;
返回所述将所述样本球体网格模型和各所述样本球体网格各自的可见性函数,输入待训练的对象渲染模型进行渲染得到渲染图像数据的步骤,直到图像差异值小于或等于图像差异阈值为止,得到所述已训练的对象渲染模型。
11.一种对象渲染装置,其特征在于,所述装置包括:
球体化模块,用于对目标虚拟对象的三维对象模型进行球体网格化,得到所述目标虚拟对象的目标球体网格模型;所述目标球体网格模型包括多个目标球体网格;包括:对目标虚拟对象的三维对象模型进行球体网格化,生成所述目标虚拟对象的当前球体网格模型;确定非重叠体积;所述非重叠体积是指所述当前球体网格模型与所述三维对象模型之间的非重叠区域的体积;朝着使得所述非重叠体积减小的方向更新所述当前球体网格模型,直到所述非重叠体积小于或等于体积阈值为止;在所述非重叠体积小于或等于所述体积阈值的情况下,将所述当前球体网格模型确定为所述目标虚拟对象的目标球体网格模型;
可见性确定模块,用于确定所述目标球体网格模型中各目标球体网格各自的可见性函数;所述可见性函数属于可微分的函数;
渲染模块,用于基于所述目标球体网格模型以及各所述目标球体网格的可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。
12.根据权利要求11所述的装置,其特征在于,所述球体化模块,还用于:
从所述目标虚拟对象的三维对象模型的内部确定多个点,得到多个内部点;
针对每个所述内部点,将所述内部点作为球体网格中心点生成球体网格,将生成的各球体网格组成所述目标虚拟对象的当前球体网格模型。
13.根据权利要求11所述的装置,其特征在于,所述球体化模块,还用于:
确定所述三维对象模型的点集合;所述点集合包括所述三维对象模型的表面点和内部点;
基于所述点集合中的内部点和表面点生成多个目标球体网格,将生成的所述多个目标球体网格组成所述目标虚拟对象的目标球体网格模型;所述点集合中的每个表面点属于至少一个所述目标球体网格。
14.根据权利要求13所述的装置,其特征在于,所述球体化模块,还用于:
将所述点集合中的多个内部点分别作为球体中心点生成多个当前球体网格;
依次从所述三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点;
更新所述多个当前球体网格中与所述目标点匹配的当前球体网格;更新后所述目标点位于所述匹配的当前球体网格中;所述目标点匹配的当前球体网格与所述目标点相邻近;
返回所述依次从所述三维对象模型的点集合中确定位于各当前球体网格之外的表面点,得到目标点的步骤,直到所述点集合中每个表面点均位于至少一个当前球体网格为止,得到所述多个目标球体网格。
15.根据权利要求14所述的装置,其特征在于,所述球体化模块,还用于:
将所述目标点的多个邻近球体网格,作为各候选球体网格;
分别更新各所述候选球体网格;更新后所述目标点位于所述候选球体网格中;
确定更新前后所述候选球体网格的外部体积增量;所述外部体积增量是指更新后所述候选球体网格的外部体积相对于更新前所述候选球体网格的外部体积的增量,所述外部体积是指所述候选球体网格的位于所述三维对象模型之外的区域的体积;
将外部体积增量最小的候选球体网格所对应的所述目标点的邻近球体网格,确定为所述目标点匹配的当前球体网格。
16.根据权利要求11所述的装置,其特征在于,所述装置还用于:
在所述三维对象模型的姿势发生变换的情况下,基于各所述目标球体网格的球体中心点对应的邻近顶点分别在姿势变换后的三维对象模型中的位置,更新对应的目标球体网格的位置,得到姿势变换后的球体网格模型;
基于所述姿势变换后的球体网格模型、所述姿势变换后的球体网格模型中各球体网格的可见性函数进行渲染,得到更新渲染结果;所述更新渲染结果中的所述目标虚拟对象的姿势与所述姿势变换后的三维对象模型的姿势相匹配。
17.根据权利要求16所述的装置,其特征在于,所述球体中心点对应的各邻近顶点的位置的加权结果为所述球体中心点的位置;所述装置还用于:
确定所述球体中心点对应的各邻近顶点在所述姿势变换后的三维对象模型中的位置,得到各邻近顶点位置;
对各所述邻近顶点位置进行加权计算得到所述球体中心点的待移动至的位置;
将所述球体中心点的位置更新为所述待移动至的位置,以更新对应的目标球体网格的位置。
18.根据权利要求11所述的装置,其特征在于,所述渲染模块,还用于:
对各所述目标球体网格的可见性函数进行组合,得到总可见性函数;
基于所述目标球体网格模型以及所述总可见性函数进行渲染,得到包括所述目标虚拟对象的渲染结果。
19.根据权利要求11所述的装置,其特征在于,所述渲染是通过已训练的对象渲染模型实现的;所述装置还包括训练模块,所述训练模块,用于:
对样本虚拟对象的三维对象模型进行球体网格化,得到样本球体网格模型;
将所述样本球体网格模型和样本场景信息输入待训练的对象渲染模型中,得到各所述样本球体网格各自的可见性函数,并利用各所述样本球体网格各自的可见性函数进行渲染得到渲染图像数据;
基于渲染图像数据与参考图像数据之间的差异值更新待训练的对象渲染模型,得到所述已训练的对象渲染模型。
20.根据权利要求19所述的装置,其特征在于,所述训练模块,还用于:
确定所述渲染图像数据与参考图像数据之间的差异值,得到图像差异值;
利用所述图像差异值更新待训练的对象渲染模型,并利用所述图像差异值更新所述样本球体网格的可见性函数;
返回所述将所述样本球体网格模型和各所述样本球体网格各自的可见性函数,输入待训练的对象渲染模型进行渲染得到渲染图像数据的步骤,直到图像差异值小于或等于图像差异阈值为止,得到所述已训练的对象渲染模型。
21.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述的方法的步骤。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310268580.1A CN115984440B (zh) | 2023-03-20 | 2023-03-20 | 对象渲染方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310268580.1A CN115984440B (zh) | 2023-03-20 | 2023-03-20 | 对象渲染方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115984440A CN115984440A (zh) | 2023-04-18 |
CN115984440B true CN115984440B (zh) | 2023-06-27 |
Family
ID=85958559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310268580.1A Active CN115984440B (zh) | 2023-03-20 | 2023-03-20 | 对象渲染方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115984440B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116543093B (zh) * | 2023-07-04 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 柔体对象渲染方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944239A (zh) * | 2009-07-08 | 2011-01-12 | 富士通株式会社 | 三维模型分割方法、装置以及包含该装置的图像处理系统 |
CN114596423A (zh) * | 2022-02-16 | 2022-06-07 | 南方电网数字电网研究院有限公司 | 基于虚拟场景网格化的模型渲染方法、装置和计算机设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11348314B2 (en) * | 2020-05-08 | 2022-05-31 | Dreamworks Animation Llc | Fast and deep facial deformations |
US11734890B2 (en) * | 2020-08-17 | 2023-08-22 | Nvidia Corporation | Three-dimensional model recovery from two-dimensional images |
US11610370B2 (en) * | 2021-06-01 | 2023-03-21 | Nvidia Corporation | Joint shape and appearance optimization through topology sampling |
CN113230659B (zh) * | 2021-06-04 | 2024-10-18 | 网易(杭州)网络有限公司 | 一种游戏的显示控制方法及装置 |
CN115375828B (zh) * | 2022-10-24 | 2023-02-03 | 腾讯科技(深圳)有限公司 | 模型的阴影生成方法、装置、设备、介质 |
-
2023
- 2023-03-20 CN CN202310268580.1A patent/CN115984440B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944239A (zh) * | 2009-07-08 | 2011-01-12 | 富士通株式会社 | 三维模型分割方法、装置以及包含该装置的图像处理系统 |
CN114596423A (zh) * | 2022-02-16 | 2022-06-07 | 南方电网数字电网研究院有限公司 | 基于虚拟场景网格化的模型渲染方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115984440A (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2024510265A (ja) | 高解像度ニューラル・レンダリング | |
US8803880B2 (en) | Image-based lighting simulation for objects | |
CN114119853B (zh) | 图像渲染方法、装置、设备和介质 | |
WO2022111609A1 (zh) | 一种网格编码方法及计算机系统 | |
CN107798725A (zh) | 基于Android的二维住房户型识别和三维呈现方法 | |
CN115984440B (zh) | 对象渲染方法、装置、计算机设备和存储介质 | |
CN116824092B (zh) | 三维模型生成方法、装置、计算机设备和存储介质 | |
CN117333637B (zh) | 三维场景的建模及渲染方法、装置及设备 | |
GB2559850A (en) | Stroke operation prediction for three-dimensional digital content | |
CN111768473A (zh) | 图像渲染方法、装置及设备 | |
CN116012520B (zh) | 阴影渲染方法、装置、计算机设备和存储介质 | |
Zhang | Design of mobile augmented reality game based on image recognition | |
CN115797226B (zh) | 图像降噪方法、装置、计算机设备和存储介质 | |
CN115601283B (zh) | 图像增强方法、装置、计算机设备及计算机可读存储介质 | |
CN116883563A (zh) | 标注点渲染方法、装置、计算机设备、存储介质 | |
CN116109531A (zh) | 图像处理方法、装置、计算机设备及存储介质 | |
TWI621960B (zh) | 產生資料之視覺效果的方法 | |
CN117611727B (zh) | 渲染处理方法、装置、设备以及介质 | |
WO2024183489A1 (zh) | 阴影渲染方法、装置、计算机设备和存储介质 | |
WO2024183288A1 (zh) | 阴影渲染方法、装置、计算机设备和存储介质 | |
CN117576645B (zh) | 基于bev视角的车位检测方法、装置和计算机设备 | |
CN116617658B (zh) | 一种图像渲染方法及相关装置 | |
CN118447121A (zh) | 信息交互方法、装置、计算机设备及计算机可读存储介质 | |
CN117114431A (zh) | 基于粒子群的自动柜员机选址方法和装置 | |
CN117011487A (zh) | 图像渲染方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40083958 Country of ref document: HK |