CN111932664B - 图像渲染方法、装置、电子设备及存储介质 - Google Patents
图像渲染方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111932664B CN111932664B CN202010878803.2A CN202010878803A CN111932664B CN 111932664 B CN111932664 B CN 111932664B CN 202010878803 A CN202010878803 A CN 202010878803A CN 111932664 B CN111932664 B CN 111932664B
- Authority
- CN
- China
- Prior art keywords
- matrix
- target
- pixel
- edge
- edges
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/12—Shadow map, environment map
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本申请公开了一种图像渲染方法、装置、电子设备及存储介质,属于图像处理技术领域。该方法包括:根据光照渲染指令,获取目标三维模型的光照贴图;获取该目标三维模型的接缝边;基于该接缝边,确定该光照贴图中的目标像素点;对该目标像素点进行更新,得到修复后的光照贴图。本申请通过自动识别出目标三维模型的接缝边,并自动对目标像素点的像素值进行更新,能够一键完成接缝问题的自动识别和自动修复,避免了浪费人力资源排查及修复接缝问题,降低了图像渲染耗时、提升了图像渲染效率。
Description
技术领域
本申请涉及图像处理技术领域,特别涉及一种图像渲染方法、装置、电子设备及存储介质。
背景技术
随着图像处理技术的发展,终端能够基于GPU(Graphics Processing Unit,图像处理器)以进行图像渲染。其中,光照渲染是图像渲染中的重要一环,主要用于渲染出对象呈现的光照视觉效果。
在光照渲染过程中,在创建好待渲染对象的三维(3D)模型之后,需要将3D模型的网格(mesh)展开至二维空间,得到一张二维图像,由于这一二维空间也称为UV空间,因此这一展开过程也称为UV展开,而UV展开所得的二维图像也称为光照贴图,接着,基于渲染引擎对光照贴图的每个像素进行光照渲染,得到最终光照渲染后的图像。
由于3D模型的网格中相邻面的UV坐标有可能在展开过程中被分割开,而被分割的相邻面在光照贴图中的光照信息存在较大差异,导致最终光照渲染后的图像相邻面呈现出来光照较为割裂的视觉效果,如图1的100所示,这一问题称为“接缝问题”,目前需要技术人员对接缝问题进行人工排查并手动修复,重新进行UV展开及光照渲染,导致图像渲染的耗时长、效率低。
发明内容
本申请实施例提供了一种图像渲染方法、装置、电子设备及存储介质,能够降低图像渲染的耗时、提升图像渲染的效率。该技术方案如下:
一方面,提供了一种图像渲染方法,该方法包括:
根据光照渲染指令,获取目标三维模型的光照贴图;
获取所述目标三维模型的接缝边,所述接缝边为在所述目标三维模型中位于同一表面且在所述光照贴图中纹理不连续的边线;
基于所述接缝边,确定所述光照贴图中的目标像素点;
对所述目标像素点进行更新,得到修复后的光照贴图,所述修复后的光照贴图中所述接缝边的纹理连续。
一方面,提供了一种图像渲染装置,该装置包括:
第一获取模块,用于根据光照渲染指令,获取目标三维模型的光照贴图;
第二获取模块,用于获取所述目标三维模型的接缝边,所述接缝边为在所述目标三维模型中位于同一表面且在所述光照贴图中纹理不连续的边线;
第一确定模块,用于基于所述接缝边,确定所述光照贴图中的目标像素点;
更新模块,用于对所述目标像素点进行更新,得到修复后的光照贴图,所述修复后的光照贴图中所述接缝边的纹理连续。
在一种可能实施方式中,一组接缝边包括一条有向边和所述有向边的反向边,所述有向边与所述反向边之间顶点重合且方向相反;
所述第二获取模块用于:
获取所述目标三维模型中至少一个面内的多个顶点;
响应于所述多个顶点中至少两个顶点所形成的有向边存在反向边,将所述有向边和所述反向边确定为一组接缝边。
在一种可能实施方式中,所述装置还包括:
第二确定模块,用于对所述多个顶点中任一顶点,基于所述任一顶点与下一顶点确定一条有向边;
第三确定模块,用于确定与所述有向边之间顶点重合且方向相反的辅助边;
第四确定模块,用于根据所述有向边和所述辅助边,确定所述有向边是否存在所述反向边。
在一种可能实施方式中,所述第四确定模块用于:
若在所述目标三维模型的有向边集合中查询到与所述辅助边相同的边,确定所述有向边存在反向边;
若在所述目标三维模型的有向边集合中查询不到与所述辅助边相同的边,将所述有向边添加至所述有向边集合。
在一种可能实施方式中,所述第一确定模块包括:
第一获取单元,用于对任一组接缝边,获取所述任一组接缝边的顶点在所述光照贴图中的像素位置信息;
第一确定单元,用于基于所述顶点的像素位置信息,确定所述任一组接缝边的像素采样数量;
第二确定单元,用于基于所述像素位置信息和所述像素采样数量,确定所述任一组接缝边所对应的目标像素点。
在一种可能实施方式中,所述第二确定单元用于:
根据所述像素位置信息和所述像素采样数量,确定采样过程的迭代步长;
以任一顶点为起点,将基于所述迭代步长所确定的采样点作为所述目标像素点。
在一种可能实施方式中,所述第一确定单元用于:
获取所述任一组接缝边内的有向边的边长与所述有向边的反向边的边长;
将所述有向边的边长与所述反向边的边长中的最大值与采样质量参数相乘所得的数值,确定为所述像素采样数量。
在一种可能实施方式中,所述更新模块包括:
构建单元,用于基于所述目标像素点的像素值,构建第一矩阵和第二矩阵,所述第一矩阵用于表示所述目标像素点在一组接缝边内的有向边和反向边上的像素信息,所述第二矩阵用于表示所述目标像素点在所述光照贴图中的初始像素值;
第二获取单元,用于基于所述第一矩阵和所述第二矩阵,获取第三矩阵,所述第三矩阵用于表示所述目标像素点的待更新像素值;
更新单元,用于基于所述第三矩阵,将所述目标像素点从所述初始像素值更新为所述待更新像素值,得到所述修复后的光照贴图。
在一种可能实施方式中,所述第二获取单元用于:
基于共轭梯度法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵;或,
基于最小二乘法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵;或,
基于乔列斯基分解法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵。
在一种可能实施方式中,所述第一矩阵的行数为第一目标数量且列数为第二目标数量,其中,所述第一目标数量为所述接缝边的采样数量与所述目标像素点的数量相加所得的数值,所述第二目标数量为所述目标像素点的数量;所述第二矩阵的行数为所述第一目标数量且所述第二矩阵的列数为一。
一方面,提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的图像渲染方法。
一方面,提供了一种存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现如上述任一种可能实现方式的图像渲染方法。
一方面,提供一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括一条或多条程序代码,所述一条或多条程序代码存储在计算机可读存储介质中。电子设备的一个或多个处理器能够从计算机可读存储介质中读取所述一条或多条程序代码,所述一个或多个处理器执行所述一条或多条程序代码,使得电子设备能够执行上述任一种可能实施方式的图像渲染方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过自动识别出目标三维模型的接缝边,接着自动在目标三维模型的光照贴图中定位到待修复的目标像素点,这些目标像素点也即是接缝边上出现纹理不连续的边线所对应的像素点,从而自动对目标像素点的像素值进行更新,最终输出修复后的光照贴图,使得能够一键完成接缝问题的自动识别和自动修复,大大降低了图像渲染过程中用于排查并修复接缝问题的人力资源,从而降低了图像渲染耗时、提升了图像渲染效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。
图1是本申请实施例提供的一种接缝问题的界面示意图;
图2是本申请实施例提供的一种图像渲染方法的实施环境示意图;
图3是本申请实施例提供的一种图像渲染方法的流程图;
图4是本申请实施例提供的一种获取非零系数的原理性示意图;
图5是本申请实施例提供的一种图像渲染方法的流程图;
图6是本申请实施例提供的一种图像渲染方法的原理性流程图;
图7是本申请实施例提供的一种渲染引擎的操作界面示意图;
图8是本申请实施例提供的一种图像渲染方法的接缝问题修复前后的对比图;
图9是本申请实施例提供的一种图像渲染装置的结构示意图;
图10是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。
在介绍本申请实施例之前,首先对本申请所涉及的部分术语进行解释:
光照贴图(Lightmap):指对静态物体的三维(3D)模型数据,使用全局光照算法预先生成光照信息的图片,用于表示静态物体的光照视觉效果。
UV展开(UV Unwrapping):指将3D模型数据的网格(mesh)映射到二维(2D)图像上的过程,也即由目标三维模型到光照贴图的光照渲染过程。
双线性插值(Bilinear Interpolation):又称为双线性内插。在理论上,双线性插值是对线性插值在二维直角网格上的扩展,用于对双变量函数进行插值处理,核心思想是在两个方向上分别进行一次线性插值。
光栅化(Rasterization):指把顶点数据转换为片元的过程,具有将原始图像数据转化为一个个栅格组成的图像的作用,特点是片元中的每个元素对应于帧缓冲区中的一个像素。换言之,光栅化是一种将几何图元变为二维图像的过程。
路径跟踪(Path Tracing):由Kajiya在1986年提出的渲染方法,是第一个无偏(Unbiased)的渲染方法。路径追踪方法的基本思想是从视点发出一条光线,光线与物体表面相交时根据表面的材质属性继续采样一个方向,发出另一条光线,如此迭代,直到光线打到光源上(或逃逸出场景),然后采用蒙特卡洛方法,计算光线的贡献,作为像素的颜色值。而使用蒙特卡洛方法对积分的求解是无偏的,只要时间足够长,最终图像能收敛到一个正确的结果。
稀疏矩阵(Sparse Matrix):在矩阵中,如果数值为0的元素数目远远多于非0元素的数目,并且非0元素分布无规律时,则称该矩阵为稀疏矩阵。换言之,如果一个矩阵的非0元素占全部元素的数值比例小于一个比例阈值,则该矩阵属于稀疏矩阵。
最小二乘法(Least Squares Method):又称最小平方法,是一种优化方法,能够通过最小化误差的平方和,以寻找数据的最佳匹配函数。
Cholesky分解(Cholesky Decomposition):又称乔列斯基分解方法,是指将一个正定的埃尔米特矩阵分解成一个下三角矩阵与其共轭转置矩阵之乘积。Cholesky分解方法主要被用于线性方程组Ax=b的求解。
方向导数(Directional Derivative):方向导数是分析学特别是多元微积分中的概念。一个标量场在某点沿着某个向量方向上的方向导数,描绘了该点附近标量场沿着该向量方向变动时的瞬时变化率。方向导数是偏导数的概念的推广。
梯度(Gradient):梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取的最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(等于该梯度的模)。
正定矩阵(Positive-Define Matrix):给定一个大小为n×n的实对称矩阵A,若对于任意长度为n×n的非零向量X,有恒成立,则矩阵A是一个正定矩阵。也即是说,对于一个向量X,我们希望X在经过有一个矩阵A的变化后得到的新的向量M和它自身的向量之间的夹角小于90度。
共轭梯度法(Conjugate Gradient Method):一种求解系数矩阵为对称正定矩阵的线性方程组的数值解的方法。共轭梯度法属于一种迭代方法,它适用于系数矩阵为稀疏矩阵的线性方程组,因为使用像Cholesky分解这样的直接方法求解这类系统所需的计算量太大了。
图2是本申请实施例提供的一种图像渲染方法的实施环境示意图。参见图2,该实施例包括:终端201和服务器202,其中,该终端201可以是任一能够提供图像渲染服务的终端,该服务器202可以是任一能够提供图像下载服务的服务器。
在一些实施例中,本申请实施例提供的图像渲染方法可以应用于该终端201,也即是,该终端201基于渲染引擎,自行基于目标三维模型进行渲染,以得到其光照贴图,在该终端201上显示经过光照渲染得到的该光照贴图。
在上述情况下,该终端201的数量可以为一个或多个,每个终端201独立执行渲染操作,从而在终端201上渲染的目标三维模型可以相同,也可以不同,本申请实施例不对此进行具体限定。
其中,终端201以及服务器202能够通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
可选地,终端201在渲染得到光照贴图后,还可以将渲染好的光照贴图上传至服务器202,由该服务器202提供图像下载服务,使得任一终端能够在登录服务器202后,对该光照贴图进行下载,以随时查看该光照贴图。服务器202可以包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。可选地,服务器202可以承担主要计算工作,终端201可以承担次要计算工作;或者,服务器202承担次要计算工作,终端201承担主要计算工作;或者,终端201和服务器202两者之间采用分布式计算架构进行协同计算。
在一些实施例中,终端201泛指多个终端中的一个,终端201的设备类型包括但不限于:智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group AudioLayer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture ExpertsGroup Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机或者台式计算机中的至少一种。以下实施例,以终端包括台式计算机来进行举例说明。
在一些实施例中,服务器是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,终端是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
图3是本申请实施例提供的一种图像渲染方法的流程图。参见图3,该实施例应用于终端,该实施例包括:
301、终端根据光照渲染指令,获取目标三维模型的光照贴图。
其中,该目标三维模型是指本次待渲染的三维模型,目标三维模型可以对应于至少一个物体,比如,目标三维模型为虚拟场景中单个物体的三维模型,或者,目标三维模型为虚拟场景中多个物体的三维模型。
在上述过程中,在对目标三维模型进行渲染时,涉及到对目标三维模型进行光照渲染,终端可以基于渲染引擎进行目标三维模型的光照渲染。
可选地,终端在获取目标三维模型之后,接收光照渲染指令,基于该光照渲染指令,采用路径跟踪算法渲染出光照贴图的每个像素点,也即得到目标三维模型的光照贴图。
在一个示例中,终端接收任一物体的目标三维模型的lightmap(光照贴图)渲染指令,使用路径跟踪算法渲染出lightmap的每个像素,最终得到物体的lightmap,这样能够达到一种无偏差的光照渲染效果。
在基于路径跟踪算法进行渲染的过程中,可以从视点发出一条光线,光线与物体表面相交时根据表面的材质属性继续采样一个方向,发出另一条光线,如此迭代,直到光线打到光源上(或逃逸出场景),然后采用蒙特卡洛方法,计算光线的贡献,作为像素的颜色值。简言之,路径追踪算法是在光线追踪算法(Ray Tracing)的基础上结合了蒙特卡洛方法进行积分求解,由于使用蒙特卡洛方法对积分的求解是无偏的,只要时间足够长,最终能够收敛到一张全局的光照贴图,因此基于路径追踪算法能够达到无偏差的光照渲染效果。
在一些实施例中,终端还可以基于光栅化方法或者光线追踪算法来进行光照渲染,从而简化光照渲染过程的计算量,本申请实施例不对光照渲染方式进行具体限定。
302、终端获取该目标三维模型的接缝边,该接缝边为在该目标三维模型中位于同一表面且在该光照贴图中纹理不连续的边线。
在上述过程中,终端可以在执行上述步骤301之后,自动识别该目标三维模型的接缝边,或者,终端在执行上述步骤301之前,预先识别该三维模型的接缝边,本申请实施例不对识别接缝边与渲染光照贴图这两个步骤的先后执行顺序进行具体限定。
上述步骤302也即是终端自动识别接缝问题的过程,当出现接缝问题时,每个物体(Object)的三维模型中至少存在一组接缝边,如图1中的方框区域,可以看出,一组接缝边是由一条有向边和该有向边的反向边所组成的,其中,该有向边与该反向边之间顶点重合且方向相反。由于有向边和反向边本来在目标三维模型中是共边的,因此本该呈现出连续平滑的光照过渡效果,在发生接缝问题的情况下,有向边与反向边在光照贴图中被割裂开了,因此会呈现出如图1的方框区域内同一个表面中纹理不连续、光照过渡不平滑的异常表现。
在一些实施例中,终端可以基于下述方式来识别出接缝边:终端获取该目标三维模型中至少一个面内的多个顶点;响应于该多个顶点中至少两个顶点所形成的有向边存在反向边,将该有向边和该反向边确定为一组接缝边。
在上述过程中,直接利用目标三维模型在自身渲染阶段需要获取的顶点信息,即可完成接缝边的自动识别及判断,无需拉取额外的外部数据,更无需投入额外的人力成本,能够大大提升图像渲染效率,降低图像渲染的人力成本。
可选地,终端在获取顶点的过程中,可以基于目标三维模型的烘焙(bake)任务信息来获取目标三维模型的网格信息。其中,烘焙是指基于目标三维模型的模型数据获取光照贴图的过程,因此该烘焙任务信息是终端基于光照渲染指令所创建的任务信息。其中,该网格信息包括各个面中的各个顶点信息、法线信息、UV坐标、三角面信息等,这里的三角面是指三个顶点所唯一确定的一个模型平面。接着,终端从该网格信息中,即可获取该目标三维模型中至少一个面内的多个顶点。
在一些实施例中,终端在获取接缝边之前,还可以进行如下初始化步骤:创建一个用于记载两个有向边对的集合(记作Seams),集合中的每个元素是一对互相反向的有向边(有向边VertexEdge及辅助边ReversedEdge),这里的辅助边是基于有向边而构造出来的一条边,并不一定是目标三维模型中真实存在的有向边,将Seams初始化为空集。再者,创建一个有向边集合,该有向边集合用于记载目标三维模型中真实存在的有向边,可选地,该有向边集合为字典、数组、列表、队列、堆栈等数据结构,在一个示例性中,该有向边集合为字典集合,记作EdgeMap,字典集合是一种键值型存储的数据结构,Key(键名)值为有向边,而Value(键值)值包括该有向边的两个顶点的法线信息及UV坐标。
在上述过程中,通过对有向边对集合Seams和字典集合EdgeMap进行初始化,便于在自动识别接缝边的过程中快速进行遍历识别,可以加快识别接缝边的速度,提升识别接缝边的效率。
在创建了有向边对集合Seams和字典集合EdgeMap之后,可选地,终端基于下述操作确定任一有向边是否存在其反向边:对该多个顶点中任一顶点,基于该任一顶点与下一顶点确定一条有向边;确定与该有向边之间顶点重合且方向相反的辅助边;根据该有向边和该辅助边,确定该有向边是否存在该反向边。
在一个示例中,终端可以执行如下遍历操作,以确定至少两个顶点所形成的有向边是否存在其反向边:遍历目标三维模型的每个面,以每个面均为三角面为例,对于任一个三角面,遍历三角面内的三个顶点。接着,1)根据当前顶点和该当前顶点的下一顶点,生成一条有向边VertexEdge。2)根据有向边VertexEdge,创建一个与该有向边之间顶点重合且方向相反的辅助边ReversedEdge。3)接着,在创建的字典集合EdgeMap中,查找是否存在与辅助边ReversedEdge对应的数据,如果字典集合EdgeMap中存在对应的数据,说明出现了接缝问题,这一接缝边为有向边与反向边所构成的一组有向边对(VertexEdge和RervsedEdge),将有向边对(VertexEdge和RervsedEdge)插入到有向边对集合Seams中,否则,如果字典集合EdgeMap中不存在对应的数据,说明这一有向边VertexEdge不存在接缝问题,将这一有向边VertexEdge插入到字典集合EdgeMap中,继续遍历当前面中的下一顶点,循环执行上述过程直到遍历了每个面内的每个顶点,返回最终的有向边对集合Seams。
在一些实施例中,在确认字典集合EdgeMap中是否存在与该有向边的辅助边ReversedEdge对应的数据时,终端遵循如下两点判定原则,如果字典集合EdgeMap中存在一条目标有向边满足:1)该目标有向边的UV坐标与辅助边ReversedEdge的UV坐标相同;2)该辅助边ReversedEdge的法线与该目标有向边的两个顶点之间的夹角小于角度阈值,那么说明该目标有向边与辅助边ReversedEdge共边(也即两边重合),说明出现了接缝问题。其中,在编辑器中seam的角度阈值可以设置为normalcosthreadhold。
在上述过程中,若在该目标三维模型的有向边集合EdgeMap中查询到与该辅助边ReversedEdge相同的边,确定该有向边VertexEdge存在反向边;若在该目标三维模型EdgeMap的有向边集合中查询不到与该辅助边ReversedEdge相同的边,将该有向边VertexEdge添加至该有向边集合EdgeMap。这样,能够在循环过程中,将存在反向边的一组有向边对识别出来并添加到有向边对集合Seams中,并在最终遍历完毕后将有向边对集合Seams作为返回值,此外,还能够将不存在反向边的有向边插入到有向边集合EdgeMap中,扩充下一次循环过程中需要识别的有向边集合EdgeMap内的元素数量,能够提升识别接缝边的准确性。
303、终端基于该接缝边,确定该光照贴图中的目标像素点。
其中,该目标像素点是指本次接缝问题修复过程中的待修复像素点。
上述步骤303也即是终端自动修复接缝问题的过程,在从上述步骤302中确定出接缝边之后,终端可以收集光照贴图lightmap中组成各组接缝边的像素点的像素信息,可选地,一个像素点的像素信息包括像素点的像素位置信息(也即位置坐标)和像素颜色信息(也即光照颜色信息),将组成各组接缝边的像素点的像素信息所构成的数据集合记为SeamTexels。
在一些实施例中,对任一组接缝边,终端通过下述方式确定目标像素点:获取该任一组接缝边的顶点在该光照贴图中的像素位置信息;基于该顶点的像素位置信息,确定该任一组接缝边的像素采样数量;基于该像素位置信息和该像素采样数量,确定该任一组接缝边所对应的目标像素点。
在获取顶点的像素位置信息时,终端可以执行下述步骤:遍历每个有向边对集合Seams中的每组接缝边(一组接缝边包括一对方向相反的有向边A和B),接下来终端分别获取有向边A和B在光照贴图中其顶点所对应的像素位置信息:(StartPosA,EndPosA,StartPosB,EndPosB)。其中,StartPosA为有向边A的起始顶点的像素位置信息,EndPosA为有向边A的结束顶点的像素位置信息,StartPosB为有向边B的起始顶点的像素位置信息,EndPosB为有向边B的结束顶点的像素位置信息。
需要说明的是,有向边A和B虽然在目标三维模型中共边(也即顶点重合),但是在光照贴图中却存在各不相同的起始顶点和结束顶点,而正是由于在目标三维模型中本该重合的顶点在光照贴图中被分割割裂开了,才会引发俗称的“接缝问题”,产生如图1中方框区域所示的光照过渡不连续的视觉问题,因此针对每组接缝边会获取到四个顶点的像素位置信息。
在获取到四个顶点的像素位置信息之后,终端可以基于这四个顶点的像素位置信息,计算出这一组接缝边的像素采样数量,由于在采样时需要分别对一组接缝边内的两个有向边进行采样,因此终端能够基于下述步骤确定像素采样数量:获取该任一组接缝边内的有向边的边长与该有向边的反向边的边长;将该有向边的边长与该反向边的边长中的最大值与采样质量参数相乘所得的数值,确定为该像素采样数量。
在上述过程中,能够通过较少的像素采样数量采集到尽可能多的组成接缝边的目标像素点的像素信息,具有较高的采样质量,在一些实施例中,还可以将该有向边的边长与该反向边的边长相加所得的数值再与采样质量参数相乘,得到该像素采样数量,这样能够通过提升采样密度从而提高最终的采样质量。
在一些实施例中,终端可以分别获取两条有向边的像素采样数量(记作SampleCount),有向边A的像素采样数量等于有向边A的边长,记作SampleCountA=Length(EndPosA–StartPosA),有向边B的像素采样数量等于有向边B(也即有向边A的反向边)的边长,记作SampleCountB=Length(EndPosB–StartPosB),两条有向边所构成的一组接缝边总共的像素采样数量SampleCount=Max(SampleCountA,SampleCountB)*SampleQuanlity,其中,SampleQuanlity是一个由编辑器的烘焙参数传入的采样质量参数。
在确定一组接缝边的像素采样数量之后,终端可以基于下述方式来确定目标像素点:根据该像素位置信息和该像素采样数量,确定采样过程的迭代步长;以任一顶点为起点,将基于该迭代步长所确定的采样点作为该目标像素点。
在一些实施例中,以有向边A为例,终端根据有向边A的两个顶点的像素位置信息StartPosA和EndPosA,能够获取到有向边A在光照贴图中所跨越的像素(待采样的像素点,简称为采样点),并将采样点记录到像素列表中。可选地,为了避免冗余的计算量,在像素列表中记录采样点时,可以遵循查找去重原则。
在一些实施例中,获取采样点的方式如下:终端获取即将在Samplecount上进行迭代的步长(Step),Step=(EndPosA-StartPosA)/SampleCount,接着从从0到SampleCount进行循环迭代,迭代索引记作StepIndex(相当于采样次数),对任一次迭代过程,当前迭代过程的采样点的像素坐标CoveragePixel=StartPosA+Step*StepIndex,接下来可以在像素信息的数据集合SeamTexels中查询是否已经记载了对应位置的像素信息,如果没有记载,那么将当前采样点的像素位置坐标和光照颜色信息添加到SeamTexels中,如果已经记载了,那么进行下一次采样。在本申请实施例中,仅以有向边A的迭代采样过程为例进行说明,对于其对应的有向边B可以进行类似操作,这里不做赘述。
304、终端对该目标像素点进行更新,得到修复后的光照贴图,该修复后的光照贴图中该接缝边的纹理连续。
在一些实施例中,终端在对目标像素点进行更新之前,需要解出目标像素点的待更新像素值。可选地,终端基于该目标像素点的像素信息,构建第一矩阵和第二矩阵;基于该第一矩阵和该第二矩阵,获取第三矩阵,该第三矩阵用于表示该目标像素点的待更新像素值。在获取到目标像素点的待更新像素值之后,终端可以基于该第三矩阵,将该目标像素点从初始像素值更新为该待更新像素值,得到修复后的光照贴图。
其中,该第一矩阵用于表示该目标像素点在一组接缝边内的有向边和反向边上的像素信息,该第二矩阵用于表示该目标像素点在该光照贴图中的初始像素值。
在一些实施例中,终端在求解第三矩阵时,可以根据第一矩阵和第二矩阵构建一组线性方程组,这是由于在光照贴图中更新目标像素点时,通常需要分别对RGB(红绿蓝)三个通道的像素值进行更新,因此可以针对RGB三个通道分别构建出三个线性方程组,最终可以获取到每个通道下的待更新像素值。以任一通道为例,在构建线性方程组时,将第三矩阵作为未知数,即可构建Ax=b的线性方程组,其中,A表示第一矩阵,b表示第二矩阵(由于列数为1,因此相当于一个列向量),x表示第三矩阵(同时也是待求解的未知数),接下来利用一些方程组求解手段,即可处理得到第三矩阵。
可选地,终端基于共轭梯度法对该第一矩阵和该第二矩阵进行处理,得到该第三矩阵。其中,该共轭梯度法是一种将共轭性与最速下降方法相结合的数据处理方式,利用第一矩阵和第二矩阵构建线性方程组之后,在目标像素点在RGB三个通道上的初始像素值的基础上分别进行迭代,即可输出目标像素点在RGB三个通道上的待更新像素值。共轭梯度法对第三矩阵的求解速度较快、数据存储量小,因此能够提升第三矩阵的获取速率。
由于共轭梯度法求解Ax=b方程组时,需要保证第一矩阵A是一个正定矩阵,在此示出证明第一矩阵A为正定矩阵的过程:将Ax=b等价变换为ATAx=ATb,其中AT表示第一矩阵A的转置矩阵。由于(BA)T=ATBT,这里令B=AT代入上式,得到(ATA)T=ATA,符合矩阵对称的定义,因此ATA为对称矩阵,而由于第一矩阵A中的系数都是正小数,因此第一矩阵A是正定矩阵,第一矩阵A的转置矩阵AT也是正定矩阵,且二者相乘所得的矩阵ATA也是正定矩阵,也即ATA为对称正定矩阵。
在保证第一矩阵A为正定矩阵的基础上,即可采用共轭梯度法求解任一通道的线性方程组Ax=b,在一些实施例中,该第一矩阵A的行数为第一目标数量m且列数为第二目标数量n,也即第一矩阵A是一个m行n列的矩阵。其中,该第一目标数量m为该接缝边的采样数量r0与该目标像素点的数量r1相加所得的数值(m=r0+r1),该第二目标数量n为该目标像素点的数量r1(n=r1),该第二矩阵b的行数为该第一目标数量m且该第二矩阵的列数为一。
在一些实施例中,由于一组接缝边的采样数量可以表示为SampleCount,那么所有接缝边的采样数量r0=∑SampleCountForEverySeamPair,由于在上述步骤202中目标像素点的像素信息都被记录在SeamTexels中,那么目标像素点的数量r1=Count(SeamTexels),换言之,r1为SeamTexels内的元素数量。
可选地,第一矩阵A的前r0行中每行只有8个元素是非零小数,其他元素均为0,并且由于第一矩阵A的列数n一般都较大,可见第一矩阵A中零元素的数量远大于非零元素的数量,也即第一矩阵A中非零元素占全部元素的数值比例小于比例阈值,第一矩阵A属于稀疏矩阵。而每行包含8个非零元素是由于对光照贴图通常采用双线性差值法来确定一个采样点的像素信息,那么就需要对一个采样点周围的四个像素点分别进行插值,由于接缝边需要对分布于接缝两侧的有向边和反向边的数据分别进行插值,因此需要考虑到接缝边对应一侧的采样点周围的四个像素点,因此每一行内包含8个非零系数。
在一个示例中,图4是本申请实施例提供的一种获取非零系数的原理性示意图,第一矩阵A中每一行的8个非零系数的获取方式如图4所示。请参考400,假设采样点的像素坐标为(x,y),对x向下取整所得的数值记作floor(x),对x向上取整所得的数值记作ceil(x),同理,对y向下取整所得的数值记作floor(y),对y向上取整所得的数值记作ceil(y),这样可以确定采样点(x,y)周围的4个像素点:(floor(x),floor(y))、(ceil(x),floor(y))、(floor(x),ceil(y))、(ceil(x),ceil(y))。
在上述4个像素点的基础上,基于双线性插值能够确定采样点(x,y)在单条有向边上所对应的4个非零系数分别为:
a0=(1-frac(x))*(1-frac(y));
a1=frac(x)*(1-frac(y));
a2=(1-frac(x))*frac(y);
a3=frac(x)*frac(y)。
其中,frac(x)为x与floor(x)之间的差值,frac(y)为y与floor(y)之间的差值。
终端可以按照类似的方式,获取到一组接缝边内该一条有向边的反向边上的另外4个非零系数,记作b0、b1、b2、b3,需要注意符号取反,接下来a0~a3和b0~b3即可作为第一矩阵A内与该采样点对应行的8个非零系数。
重复执行上述过程,可以基于双线性插值法构造出第一矩阵A的前r0行内的各个非零系数,并将其余的系数均采用0进行填充。而对于第一矩阵A的后r1行,可以采用一个入为系数的矩阵,每一行中只有采样点自身所在列取值为λ,其余项皆为0,其中λ是由渲染引擎的编辑器所传入的一个位于[0,1]区间的小数,可由技术人员进行自定义设置,也可以采用默认值,例如默认值为0.5。
在上述过程中,基于双线性插值确定了第一矩阵A的矩阵系数,能够方便快捷地构造出第一矩阵A,在一些实施例中,还可以采用双三次插值等方式来确定第一矩阵A的矩阵系数,这样能够提升采样精度。
在一些实施例中,第二矩阵b是一个行数为m的列向量,可选地,在第二矩阵b中前r0行中的b值均取0,后r1行中b的值为光照贴图中原有像素的数值(也即目标像素点的初始像素值),由于在光照贴图中通常会按照RGB三个通道,分别记录下来每个目标像素点的在三个通道各自的初始像素值,因此可以构建出三个通道各自的三个第二矩阵b,从而可以构建出三组Ax=b形式的线性方程组。
以任一通道的线性方程组Ax=b为例,在基于第一矩阵A和第二矩阵b获取第三矩阵x的过程中,终端先将Ax=b转换成ATAx=ATb形式,再基于共轭梯度法确定第三矩阵x,也即对目标像素点在该通道上的初始像素值进行迭代求解,最终输出目标像素点在该通道上的待更新像素值,对其他通道也可执行类似操作,最终能够得到目标像素点分别在RGB三个通道上的待更新像素值,这里不做赘述。
其中,上述共轭梯度法的循环逻辑如下:
r0:=b-Ax0
p0:=r0
k:=0
repeat
xk+1:=xk+αkpk
rk+1:=rk-αkApk
if rk+1is sufficiently small,then exit loop
pk+1:=rk+1+βkpk
k:=k+1
end repeat
结果为xk+1
其中,循环逻辑中的A为第一矩阵(也即线性方程组的系数矩阵),b为第二矩阵(也即线性方程组在观测数据下的观测值),k为迭代次数,r为当前迭代过程的预测误差,p为当前迭代过程的第三矩阵x的梯度,α和β均为求解线性方程组时的迭代步进,x0为目标像素点在光照贴图中的初始像素值,最终输出的结果xk+1为目标像素点在光照贴图中的待更新像素值。
上述循环逻辑也即是共轭梯度下降算法,首先初始化预测误差r0、梯度p0以及迭代次数k,接下来基于上述各个公式,迭代计算当前迭代过程的迭代步进αk和βk、梯度pk+1、预测值xk+1以及预测误差rk+1,直到预测误差rk+1足够小(比如小于误差阈值),那么退出循环,输出最后一次迭代过程的预测值xk+1,作为目标像素点的待更新像素值。
在上述过程中,以共轭梯度法为例示出了基于第一矩阵A和第二矩阵b来获取第三矩阵x的过程,能够在自动识别出接缝边之后,自动修复接缝边上存在的接缝问题,避免了技术人员在触发光照渲染指令之后,还需要人工反复排查修复lightmap中的接缝问题,使得技术人员能够专心将精力投入到开发设计工作中,大大节约了图像渲染中用于修复接缝问题的人力资源,大大提升了图像渲染效率。
在一些实施例中,终端也可以基于最小二乘法对该第一矩阵A和该第二矩阵b进行处理,得到该第三矩阵x,能够降低获取第三矩阵x过程的计算量、提升计算效率,或者,终端基于乔列斯基(Cholesky)分解法对该第一矩阵A和该第二矩阵b进行处理,得到该第三矩阵x,能够提升获取第三矩阵x过程的计算精度。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过自动识别出目标三维模型的接缝边,接着自动在目标三维模型的光照贴图中定位到待修复的目标像素点,这些目标像素点也即是接缝边上出现纹理不连续的边线所对应的像素点,从而自动对目标像素点的像素值进行更新,最终输出修复后的光照贴图,使得能够一键完成接缝问题的自动识别和自动修复,大大降低了图像渲染过程中用于排查并修复接缝问题的人力资源,从而降低了图像渲染耗时、提升了图像渲染效率。
图5是本申请实施例提供的一种图像渲染方法的流程图,请参考图5,该方法应用于终端,包括下述步骤:
501、终端根据光照渲染指令,获取目标三维模型的光照贴图。
其中,该目标三维模型是指本次待渲染的三维模型,目标三维模型可以对应于至少一个物体,例如,目标三维模型为单个物体的三维模型,或者,目标三维模型为多个物体所构成的虚拟场景的三维模型,本申请实施例不对目标三维模型的内容进行具体限定。
上述步骤501与上述步骤301类似,这里不做赘述。
502、终端获取该目标三维模型中至少一个面内的多个顶点。
可选地,终端基于目标三维模型的烘焙(bake)任务信息来获取目标三维模型的网格信息。其中,烘焙是指基于目标三维模型的模型数据获取光照贴图的过程,因此该烘焙任务信息是终端基于光照渲染指令所创建的任务信息。其中,该网格信息包括各个面中的各个顶点信息、法线信息、UV坐标、三角面信息等,这里的三角面是指三个顶点所唯一确定的一个模型平面。接着,终端从该网格信息中,即可获取该目标三维模型中至少一个面内的多个顶点。
503、终端对该多个顶点中任一顶点,基于该任一顶点与下一顶点确定一条有向边。
在一些实施例中,终端在确定有向边之前,还可以进行如下初始化步骤:创建一个用于记载两个有向边对的集合(记作Seams),集合中的每个元素是一对互相反向的有向边(有向边VertexEdge及辅助边ReversedEdge),这里的辅助边是基于有向边而构造出来的一条边,并不一定是目标三维模型中真实存在的有向边,将Seams初始化为空集。
再者,创建一个有向边集合,该有向边集合用于记载目标三维模型中真实存在的有向边,可选地,该有向边集合为字典、数组、列表、队列、堆栈等数据结构,在一个示例性中,该有向边集合为字典集合,记作EdgeMap,字典集合是一种键值型存储的数据结构,Key(键名)值为有向边,而Value(键值)值包括该有向边的两个顶点的法线信息及UV坐标。
在上述过程中,通过对有向边对集合Seams和字典集合EdgeMap进行初始化,便于在自动识别接缝边的过程中快速进行遍历识别,可以加快识别接缝边的速度,提升识别接缝边的效率。
在创建了有向边对集合Seams和字典集合EdgeMap之后,终端遍历目标三维模型的每个面,以每个面均为三角面为例,对于任一个三角面,遍历三角面内的三个顶点,在任一次遍历过程中,根据当前顶点和该当前顶点的下一顶点,生成一条有向边VertexEdge。
504、终端确定与该有向边之间顶点重合且方向相反的辅助边。
在上述过程中,终端在基于当前顶点和下一顶点生成一条有向边VertexEdge之后,以该有向边VertexEdge的两个顶点不变,创建一条与有向边VertexEdge方向相反的辅助边ReversedEdge,也即是说,得到一个与该有向边VertexEdge之间顶点重合且方向相反的辅助边ReversedEdge。这里的辅助边是基于有向边而构造出来的一条边,并不一定是目标三维模型中真实存在的有向边,需要通过下述步骤505来判断是否存在与辅助边共边的有向边,如果存在,说明有向边VertexEdge存在对应的反向边,此时发生了接缝问题。
505、终端根据该有向边和该辅助边,确定该有向边是否存在该有向边的反向边。
可选地,终端在该目标三维模型的有向边集合中查询是否存在与该辅助边相同的边(也即存在与辅助边共边的边),若在该目标三维模型的有向边集合中查询到与该辅助边相同的边,确定该有向边存在反向边,否则,若在该目标三维模型的有向边集合中查询不到与该辅助边相同的边,将该有向边添加至该有向边集合,执行遍历当前面的下一顶点的循环过程,如果当前顶点是当前面的最后一个顶点,那么继续遍历下一个面的第一个顶点。
在一些实施例中,终端在创建的字典集合EdgeMap中,查找是否存在与辅助边ReversedEdge对应的数据,如果字典集合EdgeMap中存在对应的数据,说明出现了接缝问题,这一接缝边为有向边与反向边所构成的一组有向边对(VertexEdge和RervsedEdge),将有向边对(VertexEdge和RervsedEdge)插入到有向边对集合Seams中,否则,如果字典集合EdgeMap中不存在对应的数据,说明这一有向边VertexEdge不存在接缝问题,将这一有向边VertexEdge插入到字典集合EdgeMap中,继续遍历当前面中的下一顶点,循环执行上述过程直到遍历了每个面内的每个顶点,返回最终的有向边对集合Seams。
在一些实施例中,在确认字典集合EdgeMap中是否存在与该有向边的辅助边ReversedEdge对应的数据时,终端遵循如下两点判定原则,如果字典集合EdgeMap中存在一条目标有向边满足:1)该目标有向边的UV坐标与辅助边ReversedEdge的UV坐标相同;2)该辅助边ReversedEdge的法线与该目标有向边的两个顶点之间的夹角小于角度阈值,那么说明该目标有向边与辅助边ReversedEdge共边(也即两边重合),说明出现了接缝问题。其中,在编辑器中seam的角度阈值可以设置为normalcosthreadhold。
在上述过程中,若在该目标三维模型的有向边集合EdgeMap中查询到与该辅助边ReversedEdge相同的边,确定该有向边VertexEdge存在反向边;若在该目标三维模型EdgeMap的有向边集合中查询不到与该辅助边ReversedEdge相同的边,将该有向边VertexEdge添加至该有向边集合EdgeMap。这样,能够在循环过程中,将存在反向边的一组有向边对识别出来并添加到有向边对集合Seams中,并在最终遍历完毕后将有向边对集合Seams作为返回值,此外,还能够将不存在反向边的有向边插入到有向边集合EdgeMap中,扩充下一次循环过程中需要识别的有向边集合EdgeMap内的元素数量,能够提升识别接缝边的准确性。
506、终端响应于该多个顶点中至少两个顶点所形成的有向边存在反向边,将该有向边和该反向边确定为一组接缝边。
在上述过程中,每当检测出任一条有向边存在反向边之后,将该有向边和该反向边确定为一组接缝边,在对目标三维模型的各个面内的各个有向边遍历完毕后,如果存在接缝问题,那么能够确定出至少一组接缝边,如果不存在接缝问题,也即未检测到任何有向边存在反向边,那么终端报告无接缝问题。
在一些实施例中,在上述步骤505的遍历过程中,一旦检测出一组接缝边,那么就将检测出的一组接缝边插入到有向边对集合Seams中,在遍历完毕后直接调用循环逻辑所返回的有向边对集合Seams,即可读取到目标三维模型的各组接缝边。其中,一组接缝边包括一条有向边和该有向边的反向边,该有向边与该反向边之间顶点重合且方向相反。
在上述步骤502-506中,终端获取该目标三维模型的接缝边,该接缝边为在该目标三维模型中位于同一表面且在该光照贴图中纹理不连续的边线,可选地,在本申请实施例中,上述获取接缝边的过程可以在终端渲染得到光照贴图之后执行,这样能够直接对渲染后的光照贴图的接缝边进行拟合,能够得到更好地接缝修复效果,在一些实施例中,还可以在渲染阶段之前就自动识别出目标三维模型中的接缝边,然后在光照采样阶段,在附近的世界空间中进行像素的差值计算,使得对目标像素点在渲染阶段中就拟合出纹理变换更加平滑的待更新像素值,这样使得光照渲染之后直接得到已经经过修复的光照贴图。
507、对任一组接缝边,终端获取该任一组接缝边的顶点在该光照贴图中的像素位置信息。
在上述过程中,终端在确定出各组接缝边之后,可以收集光照贴图lightmap中组成各组接缝边的像素点的像素信息,可选地,一个像素点的像素信息包括像素点的像素位置信息(也即位置坐标)和像素颜色信息(也即光照颜色信息),将组成各组接缝边的像素点的像素信息所构成的数据集合称为SeamTexels。
在一些实施例中,终端遍历每个有向边对集合Seams中的每组接缝边(一组接缝边包括一对方向相反的有向边A和B),从SeamTexels中可以读取到有向边A和B在光照贴图中其顶点所对应的像素位置信息:(StartPosA,EndPosA,StartPosB,EndPosB)。
其中,StartPosA为有向边A的起始顶点的像素位置信息,EndPosA为有向边A的结束顶点的像素位置信息,StartPosB为有向边B的起始顶点的像素位置信息,EndPosB为有向边B的结束顶点的像素位置信息。
需要说明的是,有向边A和B虽然在目标三维模型中共边(也即顶点重合),但是在光照贴图中却存在各不相同的起始顶点和结束顶点,而正是由于在目标三维模型中本该重合的顶点在光照贴图中被分割割裂开了,才会引发俗称的“接缝问题”,产生如图1中方框区域所示的光照过渡不连续的视觉问题,因此针对每组接缝边会获取到四个顶点的像素位置信息。
508、终端基于该顶点的像素位置信息,确定该任一组接缝边的像素采样数量。
可选地,终端获取该任一组接缝边内的有向边的边长与该有向边的反向边的边长,将该有向边的边长与该反向边的边长中的最大值与采样质量参数相乘所得的数值,确定为该像素采样数量。
在上述过程中,能够通过较少的像素采样数量采集到尽可能多的接缝边相关的像素信息,具有较高的采样质量,在一些实施例中,还可以将该有向边的边长与该反向边的边长相加所得的数值再与采样质量参数相乘,得到该像素采样数量,这样能够通过提升采样密度从而提高最终的采样质量。
在一些实施例中,终端可以分别获取两条有向边的像素采样数量(记作SampleCount),有向边A的像素采样数量等于有向边A的边长,记作SampleCountA=Length(EndPosA–StartPosA),有向边B的像素采样数量等于有向边B(也即有向边A的反向边)的边长,记作SampleCountB=Length(EndPosB–StartPosB),两条有向边所构成的一组接缝边总共的像素采样数量SampleCount=Max(SampleCountA,SampleCountB)*SampleQuanlity,其中,SampleQuanlity是一个由编辑器的烘焙参数传入的采样质量参数。
509、终端基于该像素位置信息和该像素采样数量,确定该任一组接缝边所对应的目标像素点。
在一些实施例中,终端可以根据该像素位置信息和该像素采样数量,确定采样过程的迭代步长;以任一顶点为起点,将基于该迭代步长所确定的采样点作为该目标像素点。
以有向边A为例,终端根据有向边A的两个顶点的像素位置信息StartPosA和EndPosA,能够获取到有向边A在光照贴图中所跨越的像素(待采样的像素点,简称为采样点),并将采样点记录到像素列表中。可选地,为了避免冗余的计算量,在像素列表中记录采样点时,可以遵循查找去重原则。
在一些实施例中,获取采样点的方式如下:终端获取即将在Samplecount上进行迭代的步长(Step),Step=(EndPosA-StartPosA)/SampleCount,接着从从0到SampleCount进行循环迭代,迭代索引记作StepIndex(相当于采样次数),对任一次迭代过程,当前迭代过程的采样点的像素坐标CoveragePixel=StartPosA+Step*StepIndex,接下来可以在像素信息的数据集合SeamTexels中查询是否已经记载了对应位置的像素信息,如果没有记载,那么将当前采样点的像素位置坐标和光照颜色信息添加到SeamTexels中,如果已经记载了,那么进行下一次采样。在本申请实施例中,仅以有向边A的迭代采样过程为例进行说明,对于其对应的有向边B可以进行类似操作,这里不做赘述。
在上述步骤507-509中,终端基于该接缝边,确定该光照贴图中的目标像素点,这些目标像素点也即是接缝边上出现纹理不连续的边线所对应的像素点,通过下述步骤510-512,可以对这些目标像素点的初始像素值进行更新,拟合出修复后的光照贴图。
510、终端基于该目标像素点的像素值,构建第一矩阵和第二矩阵,该第一矩阵用于表示该目标像素点在一组接缝边内的有向边和反向边上的像素信息,该第二矩阵用于表示该目标像素点在该光照贴图中的初始像素值。
在一些实施例中,该第一矩阵A的行数为第一目标数量m且列数为第二目标数量n,也即第一矩阵A是一个m行n列的矩阵。其中,该第一目标数量m为该接缝边的采样数量r0与该目标像素点的数量r1相加所得的数值(m=r0+r1),该第二目标数量n为该目标像素点的数量r1(n=r1),该第二矩阵b的行数为该第一目标数量m且该第二矩阵的列数为一。
可选地,终端在求解第三矩阵时,可以根据第一矩阵和第二矩阵构建一组线性方程组,这是由于在光照贴图中更新目标像素点时,通常需要分别对RGB(红绿蓝)三个通道的像素值进行更新,因此可以针对RGB三个通道分别构建出三个线性方程组,最终可以获取到每个通道下的待更新像素值。以任一通道为例,在构建线性方程组时,将第三矩阵作为未知数,即可构建Ax=b的线性方程组,其中,A表示第一矩阵,b表示第二矩阵(由于列数为1,因此相当于一个列向量),x表示第三矩阵(同时也是待求解的未知数),接下来在下述步骤511中利用一些方程组求解手段,即可处理得到第三矩阵。
511、终端基于该第一矩阵和该第二矩阵,获取第三矩阵,该第三矩阵用于表示该目标像素点的待更新像素值。
在一些实施例中,终端基于共轭梯度法对该第一矩阵和该第二矩阵进行处理,得到该第三矩阵;或,终端基于最小二乘法对该第一矩阵和该第二矩阵进行处理,得到该第三矩阵;或,终端基于乔列斯基分解法对该第一矩阵和该第二矩阵进行处理,得到该第三矩阵。
在本申请实施例中,以共轭梯度法求解第三矩阵x为例进行说明,该共轭梯度法是一种将共轭性与最速下降方法相结合的数据处理方式,利用第一矩阵和第二矩阵构建线性方程组之后,在目标像素点在RGB三个通道上的初始像素值的基础上分别进行迭代,即可输出目标像素点在RGB三个通道上的待更新像素值。共轭梯度法对第三矩阵的求解速度较快、数据存储量小,因此能够提升第三矩阵的获取速率。
由于共轭梯度法求解Ax=b方程组时,需要保证第一矩阵A是一个正定矩阵,在此示出证明第一矩阵A为正定矩阵的过程:将Ax=b等价变换为ATAx=ATb,其中AT表示第一矩阵A的转置矩阵。由于(BA)T=ATBT,这里令B=AT代入上式,得到(ATA)T=ATA,符合矩阵对称的定义,因此ATA为对称矩阵,而由于第一矩阵A中的系数都是正小数,因此第一矩阵A是正定矩阵,第一矩阵A的转置矩阵AT也是正定矩阵,且二者相乘所得的矩阵ATA也是正定矩阵,也即ATA为对称正定矩阵。
在保证第一矩阵A为正定矩阵的基础上,即可采用共轭梯度法求解任一通道的线性方程组Ax=b,由于一组接缝边的采样数量可以表示为SampleCount,那么所有接缝边的采样数量r0=∑SampleCountForEverySeamPair,由于在上述步骤202中目标像素点的像素信息都被记录在SeamTexels中,那么目标像素点的数量r1=Count(SeamTexels),换言之,r1为SeamTexels内的元素数量。
可选地,第一矩阵A的前r0行中每行只有8个元素是非零小数,其他元素均为0,并且由于第一矩阵A的列数n一般都较大,可见第一矩阵A中零元素的数量远大于非零元素的数量,也即第一矩阵A中非零元素占全部元素的数值比例小于比例阈值,第一矩阵A属于稀疏矩阵。而每行包含8个非零元素是由于对光照贴图通常采用双线性差值法来确定一个采样点的像素信息,那么就需要对一个采样点周围的四个像素点a0~a3分别进行插值,由于接缝边需要对分布于接缝两侧的有向边和反向边的数据分别进行插值,因此需要考虑到接缝边对应一侧的采样点周围的四个像素点b0~b3,因此每一行内包含8个非零系数:a0~a3及b0~b3。非零系数a0~a3及b0~b3的获取方式与上述步骤304类似,这里不做赘述。重复执行上述过程,可以基于双线性插值法构造出第一矩阵A的前r0行内的各个非零系数,并将其余的系数均采用0进行填充。
可选地,对于第一矩阵A的后r1行,可以采用一个λ为系数的矩阵,每一行中只有采样点自身所在列取值为λ,其余项皆为0,其中λ是由渲染引擎的编辑器所传入的一个位于[0,1]区间的小数,可由技术人员进行自定义设置,也可以采用默认值,例如默认值为0.5。
在上述过程中,基于双线性插值确定了第一矩阵A的矩阵系数,能够方便快捷地构造出第一矩阵A,在一些实施例中,还可以采用双三次插值等方式来确定第一矩阵A的矩阵系数,这样能够提升采样精度。
在一些实施例中,第二矩阵b是一个行数为m的列向量,可选地,在第二矩阵b中前r0行中的b值均取0,后r1行中b的值为光照贴图中原有像素的数值(也即目标像素点的初始像素值),由于在光照贴图中通常会按照RGB三个通道,分别记录下来每个目标像素点的在三个通道各自的初始像素值,因此可以构建出三个通道各自的三个第二矩阵b,从而可以构建出三组Ax=b形式的线性方程组。
以任一通道的线性方程组Ax=b为例,在基于第一矩阵A和第二矩阵b获取第三矩阵x的过程中,终端先将Ax=b转换成ATAx=ATb形式,再基于共轭梯度法确定第三矩阵x,也即对目标像素点在该通道上的初始像素值进行迭代求解,最终输出目标像素点在该通道上的待更新像素值,对其他通道也可执行类似操作,最终能够得到目标像素点分别在RGB三个通道上的待更新像素值,这里不做赘述。
共轭梯度法的循环逻辑与上述步骤304类似,这里不做赘述。
在上述过程中,以共轭梯度法为例示出了基于第一矩阵A和第二矩阵b来获取第三矩阵x的过程,能够在自动识别出接缝边之后,自动修复接缝边上存在的接缝问题,避免了技术人员在触发光照渲染指令之后,还需要人工反复排查修复lightmap中的接缝问题,使得技术人员能够专心将精力投入到开发设计工作中,大大节约了图像渲染中用于修复接缝问题的人力资源,大大提升了图像渲染效率。
在一些实施例中,终端也可以基于最小二乘法对该第一矩阵A和该第二矩阵b进行处理,得到该第三矩阵x,能够降低获取第三矩阵x过程的计算量、提升计算效率,或者,终端基于乔列斯基(Cholesky)分解法对该第一矩阵A和该第二矩阵b进行处理,得到该第三矩阵x,能够提升获取第三矩阵x过程的计算精度。
512、终端基于该第三矩阵,将该目标像素点从该初始像素值更新为该待更新像素值,得到该修复后的光照贴图。
在上述过程中,终端从第三矩阵中能够读取到各个目标像素点的待更新像素值,接着在光照贴图中,根据各个目标像素点的像素坐标定位到各个目标像素点所在的位置,接着在定位到各个目标像素点所在的位置上,将已有的初始像素值更新为第三矩阵所提供的待更新像素值,在替换完毕后输出修复后的光照贴图。
在上述步骤510-512中,终端对该目标像素点进行更新,得到修复后的光照贴图,其中该修复后的光照贴图中该接缝边的纹理连续。上述步骤中,是对已经渲染后的光照贴图进行像素值更新,基于双线性插值对原本纹理不平滑的接缝边进行平滑处理,通过求解构造的线性方程组计算出待更新像素值,对目标像素点的初始像素值进行更新,最终输出修复了接缝问题的光照贴图,这样能够使得接缝问题的识别和修复在光照渲染阶段一键完成,无需技术人员进行人工排查。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过自动识别出目标三维模型的接缝边,接着自动在目标三维模型的光照贴图中定位到待修复的目标像素点,这些目标像素点也即是接缝边上出现纹理不连续的边线所对应的像素点,从而自动对目标像素点的像素值进行更新,最终输出修复后的光照贴图,使得能够一键完成接缝问题的自动识别和自动修复,大大降低了图像渲染过程中用于排查并修复接缝问题的人力资源,从而降低了图像渲染耗时、提升了图像渲染效率。
图6是本申请实施例提供的一种图像渲染方法的原理性流程图,请参考图6,该方法包括:
在步骤601中,终端接收物体的lightmap渲染任务。
在步骤602中,终端使用路径跟踪算法渲染出lightmap的每个像素。
在步骤603中,终端查找该物体的UV接缝边。
在步骤604中,终端遍历物体的每个面。
在步骤605中,终端遍历当前面上的每个顶点。
在步骤606中,终端查找当前顶点与下一顶点所构成的有向边的反向边。
在步骤607中,终端判断是否查找到反向边,如果查找到反向边,执行步骤608,否则,如果查找不到反向边,返回步骤605。
在步骤608中,终端判断辅助边与反向边的UV值和法线值是否一致,如果UV值和法线值一致,执行步骤609,否则,如果UV值和法线值不一致,返回步骤605。
在步骤609中,终端记录产生接缝的一组有向边。
在步骤610中,终端判断当前顶点是否为当前面的最后一个顶点,如果当前顶点是当前面的最后一个顶点,执行步骤611,否则,如果当前顶点不是当前面的最后一个顶点,返回步骤605。
在步骤611中,终端判断当前面是否为物体的最后一个面,如果当前面是物体的最后一个面,执行步骤612,如果当前面不是物体的最后一个面,返回步骤604。
在步骤612中,终端根据接缝列表查找出要修复的像素点(也即目标像素点)。
在步骤613中,终端根据接缝处像素构建线性方程组。
在步骤614中,终端使用共轭梯度法解线性方程组。
在步骤615中,终端使用方程组的解更新lightmap光照贴图。
在步骤616中,终端完成接缝修复,向前端的编辑器回传烘焙参数。
在本申请实施例中,在渲染lightmap光照贴图之后,在上述步骤603-611中实现了自动UV接缝检测功能,能够自动排查到光照贴图中存在的接缝边,大大避免了人工排查的耗时,提升了识别接缝边的效率,且节约了人力资源,在上述步骤612-616中实现了自动UV接缝修复功能,能够对识别出的UV接缝边进行自动修复,修复方式是分别求解RGB三个通道下的三组线性方程组,可以利用共轭梯度法、最小二乘法、Cholesky分解法等方式获取待更新像素值,并对光照贴图中已有像素值进行替换,即可实现一键自动化的接缝问题识别与修复。
图7是本申请实施例提供的一种渲染引擎的操作界面示意图,请参考图7,示出了一种渲染引擎的操作界面700,在操作界面700中提供了烘焙启动按钮701,例如,该烘焙启动按钮为“Dawn”,用户在触发烘焙启动按钮701之后,终端接收光照渲染指令,对渲染引擎内导入的目标三维模型进行离线全局光照渲染,在操作界面700中,还提供接缝修复开关702和烘焙参数设置区域703,用户可以通过接缝修复开关702来控制是否需要启用UV接缝自动修复功能,如果开启了UV接缝自动修复功能,还可以在烘焙参数设置区域703中设置一系列修复需要用到的参数,比如样本数量(Num Samples)、λ(Lambda,第一矩阵A的后r1行的系数)、角度阈值(Cos Normal Threshold,用于判断辅助边与反向边是否共边),在一个示例中,Num Samples=1,λ=0.1,Cos Normal Threshold=0.5。需要说明的是,终端在渲染lightmap时需要设置每个物体的光照贴图分辨率,提供物体的每个顶点在光照贴图中的UV信息,在世界坐标系中的法线和切线信息等。用户在触发烘焙启动按钮701后,渲染引擎会将每个物体的烘焙任务发送给烘焙器,烘焙任务中包括烘焙物体的详细网格信息(顶点、法线,三角面,光照贴图uv坐标等),烘焙器根据烘焙任务进行光照渲染。
在一个示例性场景中,以游戏场景数据的离线渲染为例,目前游戏开发中越来越多是大场景大世界开发,基本上虚拟场景中物体的数量都是上万个,其中,一个物体对应于一个目标三维模型。如果使用ue4(虚幻4)这种专业渲染引擎去执行光照贴图的渲染任务,至少也需要若干个小时以上。而如果渲染出来的lightmap存在接缝问题,需要由技术人员人工排查后进行场景数据的调整,然后重新进行烘焙,不仅人工排查过程需要花费很多人力物力,且大场景下重新烘焙也需要花费大量时间,从而带来了大量的人力成本和时间成本。而基于本申请实施例的图像渲染方法,通过自动UV接缝检测,能够非常方便的自动完成接缝边的检测,并且还能实现自动UV接缝修复,在烘焙过程中就自动帮助技术人员完成接缝问题的修复工作,可以非常高效的完成烘焙任务。
图8是本申请实施例提供的一种图像渲染方法的接缝问题修复前后的对比图,如图8所示,801示出了接缝问题修复前的光照贴图,可以看出,在方框区域803中存在接缝问题,在球体的光滑表面上明显存在纹理不连续的异常情况,而802示出了接缝问题修复后的光照贴图,可以看出,在方框区域804中消除了纹理不连续的异常情况,使得球体的光滑表面上光照过渡也更加平滑,也即是说,802中明显修复了801中原本纹理不连续的接缝问题,改善了光照贴图的视觉效果。在使用了光照贴图的自动接缝识别和接缝修复算法后,用户在进行离线全局渲染时,可以不用手动去修复lightmap中的接缝问题,大大节约了时间成本和人力成本。使得用户可以专心的将精力投入到场景的美术设计上面,有利于高效的完成游戏开发工作。
在一个示例性中,假设一个大世界场景,基本上都会有上万个物体,即使有1%的物体存在接缝问题,那也会产生上百个待人工修复的问题,假设用户1小时能够修复一个问题,那么修复完一个场景总人力的投入也需要100小时,甚至如果场景有了变化需要重新渲染,还得重新花费这100小时的人力投入。而通过本申请实施例的自动UV接缝识别和智能修复方案,每次场景变化后,烘焙的投入相较于传统人工修复方式,至少能够节约100个小时,且随着开发的迭代,节省的时间可能是若干个100小时。
图9是本申请实施例提供的一种图像渲染装置的结构示意图,请参考图9,该装置包括:
第一获取模块901,用于根据光照渲染指令,获取目标三维模型的光照贴图;
第二获取模块902,用于获取该目标三维模型的接缝边,该接缝边为在该目标三维模型中位于同一表面且在该光照贴图中纹理不连续的边线;
第一确定模块903,用于基于该接缝边,确定该光照贴图中的目标像素点;
更新模块904,用于对该目标像素点进行更新,得到修复后的光照贴图,该修复后的光照贴图中该接缝边的纹理连续。
本申请实施例提供的装置,通过自动识别出目标三维模型的接缝边,接着自动在目标三维模型的光照贴图中定位到待修复的目标像素点,这些目标像素点也即是接缝边上出现纹理不连续的边线所对应的像素点,从而自动对目标像素点的像素值进行更新,最终输出修复后的光照贴图,使得能够一键完成接缝问题的自动识别和自动修复,大大降低了图像渲染过程中用于排查并修复接缝问题的人力资源,从而降低了图像渲染耗时、提升了图像渲染效率。
在一种可能实施方式中,一组接缝边包括一条有向边和该有向边的反向边,该有向边与该反向边之间顶点重合且方向相反;
该第二获取模块902用于:
获取该目标三维模型中至少一个面内的多个顶点;
响应于该多个顶点中至少两个顶点所形成的有向边存在反向边,将该有向边和该反向边确定为一组接缝边。
在一种可能实施方式中,基于图9的装置组成,该装置还包括:
第二确定模块,用于对该多个顶点中任一顶点,基于该任一顶点与下一顶点确定一条有向边;
第三确定模块,用于确定与该有向边之间顶点重合且方向相反的辅助边;
第四确定模块,用于根据该有向边和该辅助边,确定该有向边是否存在该反向边。
在一种可能实施方式中,该第四确定模块用于:
若在该目标三维模型的有向边集合中查询到与该辅助边相同的边,确定该有向边存在反向边;
若在该目标三维模型的有向边集合中查询不到与该辅助边相同的边,将该有向边添加至该有向边集合。
在一种可能实施方式中,基于图9的装置组成,该第一确定模块903包括:
第一获取单元,用于对任一组接缝边,获取该任一组接缝边的顶点在该光照贴图中的像素位置信息;
第一确定单元,用于基于该顶点的像素位置信息,确定该任一组接缝边的像素采样数量;
第二确定单元,用于基于该像素位置信息和该像素采样数量,确定该任一组接缝边所对应的目标像素点。
在一种可能实施方式中,该第二确定单元用于:
根据该像素位置信息和该像素采样数量,确定采样过程的迭代步长;
以任一顶点为起点,将基于该迭代步长所确定的采样点作为该目标像素点。
在一种可能实施方式中,该第一确定单元用于:
获取该任一组接缝边内的有向边的边长与该有向边的反向边的边长;
将该有向边的边长与该反向边的边长中的最大值与采样质量参数相乘所得的数值,确定为该像素采样数量。
在一种可能实施方式中,基于图9的装置组成,该更新模块904包括:
构建单元,用于基于该目标像素点的像素值,构建第一矩阵和第二矩阵,该第一矩阵用于表示该目标像素点在一组接缝边内的有向边和反向边上的像素信息,该第二矩阵用于表示该目标像素点在该光照贴图中的初始像素值;
第二获取单元,用于基于该第一矩阵和该第二矩阵,获取第三矩阵,该第三矩阵用于表示该目标像素点的待更新像素值;
更新单元,用于基于该第三矩阵,将该目标像素点从该初始像素值更新为该待更新像素值,得到该修复后的光照贴图。
在一种可能实施方式中,该第二获取单元用于:
基于共轭梯度法对该第一矩阵和该第二矩阵进行处理,得到该第三矩阵;或,
基于最小二乘法对该第一矩阵和该第二矩阵进行处理,得到该第三矩阵;或,
基于乔列斯基分解法对该第一矩阵和该第二矩阵进行处理,得到该第三矩阵。
在一种可能实施方式中,该第一矩阵的行数为第一目标数量且列数为第二目标数量,其中,该第一目标数量为该接缝边的采样数量与该目标像素点的数量相加所得的数值,该第二目标数量为该目标像素点的数量;该第二矩阵的行数为该第一目标数量且该第二矩阵的列数为一。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的图像渲染装置在渲染图像时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图像渲染装置与图像渲染方法实施例属于同一构思,其具体实现过程详见图像渲染方法实施例,这里不再赘述。
图10是本申请实施例提供的一种电子设备的结构示意图。可选地,以该电子设备为终端为例进行说明,该终端1000的设备类型包括:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1000包括有:处理器1001和存储器1002。
可选地,处理器1001包括一个或多个处理核心,比如4核心处理器、8核心处理器等。可选地,处理器1001采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable LogicArray,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器1001包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器1002包括一个或多个计算机可读存储介质,可选地,该计算机可读存储介质是非暂态的。可选地,存储器1002还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1001所执行以实现本申请中各个实施例提供的图像渲染方法。
在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间能够通过总线或信号线相连。各个外围设备能够通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、触摸显示屏1005、摄像头组件1006、音频电路1007、定位组件1008和电源1009中的至少一种。
外围设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。可选地,射频电路1004通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。可选地,该UI包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号能够作为控制信号输入至处理器1001进行处理。可选地,显示屏1005还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,可选地,显示屏1005设置成非矩形的不规则图形,也即异形屏。可选地,显示屏1005采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还包括闪光灯。可选地,闪光灯是单色温闪光灯,或者是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路1007包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风为多个,分别设置在终端1000的不同部位。可选地,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。可选地,扬声器是传统的薄膜扬声器,或者是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。可选地,定位组件1008是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1009用于为终端1000中的各个组件进行供电。可选地,电源1009是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池支持有线充电或无线充电。该可充电电池还用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。
在一些实施例中,加速度传感器1011检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011用于检测重力加速度在三个坐标轴上的分量。可选地,处理器1001根据加速度传感器1011采集的重力加速度信号,控制触摸显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器1012检测终端1000的机体方向及转动角度,陀螺仪传感器1012与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
可选地,压力传感器1013设置在终端1000的侧边框和/或触摸显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,能够检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在触摸显示屏1005的下层时,由处理器1001根据用户对触摸显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。可选地,指纹传感器1014被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商Logo时,指纹传感器1014能够与物理按键或厂商Logo集成在一起。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001根据光学传感器1015采集的环境光强度,控制触摸显示屏1005的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1005的显示亮度;当环境光强度较低时,调低触摸显示屏1005的显示亮度。在另一个实施例中,处理器1001还根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制触摸显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制触摸显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图10中示出的结构并不构成对终端1000的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由终端中的处理器执行以完成上述实施例中图像渲染方法。例如,该计算机可读存储介质包括ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,包括一条或多条程序代码,该一条或多条程序代码存储在计算机可读存储介质中。电子设备的一个或多个处理器能够从计算机可读存储介质中读取该一条或多条程序代码,该一个或多个处理器执行该一条或多条程序代码,使得电子设备能够执行以完成上述实施例中图像渲染方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (18)
1.一种图像渲染方法,其特征在于,由电子设备执行,所述方法包括:
根据光照渲染指令,获取目标三维模型的光照贴图;
获取所述目标三维模型中至少一个面内的多个顶点;
对所述多个顶点中任一顶点,基于所述任一顶点与下一顶点确定一条有向边;
确定与所述有向边之间顶点重合且方向相反的辅助边;
若在所述目标三维模型的有向边集合中查询到与所述辅助边相同的边,确定所述有向边存在反向边,将所述有向边和所述反向边确定为所述目标三维模型的一组接缝边,所述接缝边为在所述目标三维模型中位于同一表面且在所述光照贴图中纹理不连续的边线;
基于所述接缝边,确定所述光照贴图中的目标像素点;
对所述目标像素点进行更新,得到修复后的光照贴图,所述修复后的光照贴图中所述接缝边的纹理连续。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在所述目标三维模型的有向边集合中查询不到与所述辅助边相同的边,将所述有向边添加至所述有向边集合。
3.根据权利要求1所述的方法,其特征在于,所述基于所述接缝边,确定所述光照贴图中的目标像素点包括:
对任一组接缝边,获取所述任一组接缝边的顶点在所述光照贴图中的像素位置信息;
基于所述顶点的像素位置信息,确定所述任一组接缝边的像素采样数量;
基于所述像素位置信息和所述像素采样数量,确定所述任一组接缝边所对应的目标像素点。
4.根据权利要求3所述的方法,其特征在于,所述基于所述像素位置信息和所述像素采样数量,确定所述任一组接缝边所对应的目标像素点包括:
根据所述像素位置信息和所述像素采样数量,确定采样过程的迭代步长;
以任一顶点为起点,将基于所述迭代步长所确定的采样点作为所述目标像素点。
5.根据权利要求3所述的方法,其特征在于,所述基于所述顶点的像素位置信息,确定所述任一组接缝边的像素采样数量包括:
获取所述任一组接缝边内的有向边的边长与所述有向边的反向边的边长;
将所述有向边的边长与所述反向边的边长中的最大值与采样质量参数相乘所得的数值,确定为所述像素采样数量。
6.根据权利要求1所述的方法,其特征在于,所述对所述目标像素点进行更新,得到修复后的光照贴图包括:
基于所述目标像素点的像素值,构建第一矩阵和第二矩阵,所述第一矩阵用于表示所述目标像素点在一组接缝边内的有向边和反向边上的像素信息,所述第二矩阵用于表示所述目标像素点在所述光照贴图中的初始像素值;
基于所述第一矩阵和所述第二矩阵,获取第三矩阵,所述第三矩阵用于表示所述目标像素点的待更新像素值;
基于所述第三矩阵,将所述目标像素点从所述初始像素值更新为所述待更新像素值,得到所述修复后的光照贴图。
7.根据权利要求6所述的方法,其特征在于,所述基于所述第一矩阵和所述第二矩阵,获取第三矩阵包括:
基于共轭梯度法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵;或,
基于最小二乘法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵;或,
基于乔列斯基分解法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵。
8.根据权利要求6所述的方法,其特征在于,所述第一矩阵的行数为第一目标数量且列数为第二目标数量,其中,所述第一目标数量为所述接缝边的采样数量与所述目标像素点的数量相加所得的数值,所述第二目标数量为所述目标像素点的数量;
所述第二矩阵的行数为所述第一目标数量且所述第二矩阵的列数为一。
9.一种图像渲染装置,其特征在于,所述装置包括:
第一获取模块,用于根据光照渲染指令,获取目标三维模型的光照贴图;
第二获取模块,用于获取所述目标三维模型中至少一个面内的多个顶点;
第二确定模块,用于对所述多个顶点中任一顶点,基于所述任一顶点与下一顶点确定一条有向边;
第三确定模块,用于确定与所述有向边之间顶点重合且方向相反的辅助边;
第四确定模块,用于若在所述目标三维模型的有向边集合中查询到与所述辅助边相同的边,确定所述有向边存在反向边;
所述第二获取模块,还用于将所述有向边和所述反向边确定为所述目标三维模型的一组接缝边,所述接缝边为在所述目标三维模型中位于同一表面且在所述光照贴图中纹理不连续的边线;
第一确定模块,用于基于所述接缝边,确定所述光照贴图中的目标像素点;
更新模块,用于对所述目标像素点进行更新,得到修复后的光照贴图,所述修复后的光照贴图中所述接缝边的纹理连续。
10.根据权利要求9所述的装置,其特征在于,所述第四确定模块还用于:
若在所述目标三维模型的有向边集合中查询不到与所述辅助边相同的边,将所述有向边添加至所述有向边集合。
11.根据权利要求9所述的装置,其特征在于,所述第一确定模块包括:
第一获取单元,用于对任一组接缝边,获取所述任一组接缝边的顶点在所述光照贴图中的像素位置信息;
第一确定单元,用于基于所述顶点的像素位置信息,确定所述任一组接缝边的像素采样数量;
第二确定单元,用于基于所述像素位置信息和所述像素采样数量,确定所述任一组接缝边所对应的目标像素点。
12.根据权利要求11所述的装置,其特征在于,所述第二确定单元用于:
根据所述像素位置信息和所述像素采样数量,确定采样过程的迭代步长;
以任一顶点为起点,将基于所述迭代步长所确定的采样点作为所述目标像素点。
13.根据权利要求11所述的装置,其特征在于,所述第一确定单元用于:
获取所述任一组接缝边内的有向边的边长与所述有向边的反向边的边长;
将所述有向边的边长与所述反向边的边长中的最大值与采样质量参数相乘所得的数值,确定为所述像素采样数量。
14.根据权利要求9所述的装置,其特征在于,所述更新模块包括:
构建单元,用于基于所述目标像素点的像素值,构建第一矩阵和第二矩阵,所述第一矩阵用于表示所述目标像素点在一组接缝边内的有向边和反向边上的像素信息,所述第二矩阵用于表示所述目标像素点在所述光照贴图中的初始像素值;
第二获取单元,用于基于所述第一矩阵和所述第二矩阵,获取第三矩阵,所述第三矩阵用于表示所述目标像素点的待更新像素值;
更新单元,用于基于所述第三矩阵,将所述目标像素点从所述初始像素值更新为所述待更新像素值,得到所述修复后的光照贴图。
15.根据权利要求14所述的装置,其特征在于,所述第二获取单元用于:
基于共轭梯度法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵;或,
基于最小二乘法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵;或,
基于乔列斯基分解法对所述第一矩阵和所述第二矩阵进行处理,得到所述第三矩阵。
16.根据权利要求14所述的装置,其特征在于,所述第一矩阵的行数为第一目标数量且列数为第二目标数量,其中,所述第一目标数量为所述接缝边的采样数量与所述目标像素点的数量相加所得的数值,所述第二目标数量为所述目标像素点的数量;所述第二矩阵的行数为所述第一目标数量且所述第二矩阵的列数为一。
17.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求8任一项所述的图像渲染方法。
18.一种存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求8任一项所述的图像渲染方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010878803.2A CN111932664B (zh) | 2020-08-27 | 2020-08-27 | 图像渲染方法、装置、电子设备及存储介质 |
PCT/CN2021/113716 WO2022042436A1 (zh) | 2020-08-27 | 2021-08-20 | 图像渲染方法、装置、电子设备及存储介质 |
EP21860273.8A EP4120199A4 (en) | 2020-08-27 | 2021-08-20 | IMAGE REPRESENTATION METHOD AND DEVICE, AND ELECTRONIC DEVICE AND STORAGE MEDIA |
US17/891,485 US20220392144A1 (en) | 2020-08-27 | 2022-08-19 | Image rendering method and apparatus, electronic device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010878803.2A CN111932664B (zh) | 2020-08-27 | 2020-08-27 | 图像渲染方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111932664A CN111932664A (zh) | 2020-11-13 |
CN111932664B true CN111932664B (zh) | 2023-06-23 |
Family
ID=73308375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010878803.2A Active CN111932664B (zh) | 2020-08-27 | 2020-08-27 | 图像渲染方法、装置、电子设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220392144A1 (zh) |
EP (1) | EP4120199A4 (zh) |
CN (1) | CN111932664B (zh) |
WO (1) | WO2022042436A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111932664B (zh) * | 2020-08-27 | 2023-06-23 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、电子设备及存储介质 |
CN112669428B (zh) * | 2021-01-06 | 2024-06-25 | 南京亚派软件技术有限公司 | 一种基于服务器和客户端协作的bim模型渲染方法 |
CN113298925B (zh) * | 2021-04-14 | 2023-07-11 | 江苏理工学院 | 一种基于光线路径复用的动态场景渲染加速方法 |
CN113262480B (zh) * | 2021-05-13 | 2024-06-21 | 网易(杭州)网络有限公司 | 三维场景的烘焙方法和装置 |
CN113628328B (zh) * | 2021-08-12 | 2024-05-10 | 深圳须弥云图空间科技有限公司 | 一种针对拼缝构件的模型渲染方法及装置 |
CN113744379B (zh) * | 2021-08-25 | 2024-08-13 | 北京字节跳动网络技术有限公司 | 图像生成方法、装置和电子设备 |
CN113706583B (zh) * | 2021-09-01 | 2024-03-22 | 上海联影医疗科技股份有限公司 | 图像处理方法、装置、计算机设备和存储介质 |
CN114066721B (zh) * | 2021-11-03 | 2024-02-02 | 抖音视界有限公司 | 显示方法、装置和电子设备 |
CN116843811A (zh) * | 2022-03-23 | 2023-10-03 | 腾讯科技(成都)有限公司 | 三维模型渲染方法、装置、设备及存储介质 |
CN115330640B (zh) * | 2022-10-11 | 2023-01-10 | 腾讯科技(深圳)有限公司 | 光照贴图降噪方法、装置、设备和介质 |
CN116051681B (zh) * | 2023-03-02 | 2023-06-09 | 深圳市光速时代科技有限公司 | 一种基于智能手表生成图像数据的处理方法及系统 |
CN116091365B (zh) * | 2023-04-07 | 2023-06-20 | 深圳开鸿数字产业发展有限公司 | 基于三角面的三维模型缺口修复方法、装置、设备及介质 |
CN118333869B (zh) * | 2024-06-13 | 2024-09-06 | 瑞旦微电子技术(上海)有限公司 | 一种基于矩形块的数据处理方法及显示装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519779A (zh) * | 2003-01-23 | 2004-08-11 | 财团法人工业技术研究院 | 三维影像接合处的色彩处理方法 |
JP2014199543A (ja) * | 2013-03-29 | 2014-10-23 | 株式会社スクウェア・エニックス | 予測方法、生成方法、及び記録媒体 |
CN109427083A (zh) * | 2017-08-17 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 三维虚拟形象的显示方法、装置、终端及存储介质 |
CN109767484A (zh) * | 2018-12-06 | 2019-05-17 | 武汉天际航信息科技股份有限公司 | 一种三维贴图中具有色彩一致性的匀光匀色方法及系统 |
CN109903385A (zh) * | 2019-04-29 | 2019-06-18 | 网易(杭州)网络有限公司 | 三维模型的渲染方法、装置、处理器及终端 |
CN109993823A (zh) * | 2019-04-11 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 阴影渲染方法、装置、终端及存储介质 |
CN110084874A (zh) * | 2018-01-24 | 2019-08-02 | 谷歌有限责任公司 | 对于三维模型的图像风格迁移 |
CN110517355A (zh) * | 2018-05-22 | 2019-11-29 | 苹果公司 | 用于照明混合现实对象的环境合成 |
CN111068310A (zh) * | 2019-11-21 | 2020-04-28 | 珠海剑心互动娱乐有限公司 | 一种实现游戏地图无缝加载的方法及系统 |
CN111243071A (zh) * | 2020-01-08 | 2020-06-05 | 叠境数字科技(上海)有限公司 | 实时三维人体重建的纹理渲染方法、系统、芯片、设备和介质 |
CN111311723A (zh) * | 2020-01-22 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 像素点识别及光照渲染方法、装置、电子设备和存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6753875B2 (en) * | 2001-08-03 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | System and method for rendering a texture map utilizing an illumination modulation value |
US7006090B2 (en) * | 2003-02-07 | 2006-02-28 | Crytek Gmbh | Method and computer program product for lighting a computer graphics image and a computer |
JP4282587B2 (ja) * | 2004-11-16 | 2009-06-24 | 株式会社東芝 | テクスチャ・マッピング装置 |
CN103345771B (zh) * | 2013-06-28 | 2016-08-10 | 中国科学技术大学 | 一种基于建模的图像高效渲染方法 |
US9396585B2 (en) * | 2013-12-31 | 2016-07-19 | Nvidia Corporation | Generating indirection maps for texture space effects |
US20150187126A1 (en) * | 2013-12-31 | 2015-07-02 | Nvidia Corporation | Using indirection maps for rendering texture space effects |
JP2015228186A (ja) * | 2014-06-02 | 2015-12-17 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理装置および画像処理方法 |
CN111932664B (zh) * | 2020-08-27 | 2023-06-23 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、电子设备及存储介质 |
-
2020
- 2020-08-27 CN CN202010878803.2A patent/CN111932664B/zh active Active
-
2021
- 2021-08-20 EP EP21860273.8A patent/EP4120199A4/en active Pending
- 2021-08-20 WO PCT/CN2021/113716 patent/WO2022042436A1/zh unknown
-
2022
- 2022-08-19 US US17/891,485 patent/US20220392144A1/en active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519779A (zh) * | 2003-01-23 | 2004-08-11 | 财团法人工业技术研究院 | 三维影像接合处的色彩处理方法 |
JP2014199543A (ja) * | 2013-03-29 | 2014-10-23 | 株式会社スクウェア・エニックス | 予測方法、生成方法、及び記録媒体 |
CN109427083A (zh) * | 2017-08-17 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 三维虚拟形象的显示方法、装置、终端及存储介质 |
CN110084874A (zh) * | 2018-01-24 | 2019-08-02 | 谷歌有限责任公司 | 对于三维模型的图像风格迁移 |
CN110517355A (zh) * | 2018-05-22 | 2019-11-29 | 苹果公司 | 用于照明混合现实对象的环境合成 |
CN109767484A (zh) * | 2018-12-06 | 2019-05-17 | 武汉天际航信息科技股份有限公司 | 一种三维贴图中具有色彩一致性的匀光匀色方法及系统 |
CN109993823A (zh) * | 2019-04-11 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 阴影渲染方法、装置、终端及存储介质 |
CN109903385A (zh) * | 2019-04-29 | 2019-06-18 | 网易(杭州)网络有限公司 | 三维模型的渲染方法、装置、处理器及终端 |
CN111068310A (zh) * | 2019-11-21 | 2020-04-28 | 珠海剑心互动娱乐有限公司 | 一种实现游戏地图无缝加载的方法及系统 |
CN111243071A (zh) * | 2020-01-08 | 2020-06-05 | 叠境数字科技(上海)有限公司 | 实时三维人体重建的纹理渲染方法、系统、芯片、设备和介质 |
CN111311723A (zh) * | 2020-01-22 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 像素点识别及光照渲染方法、装置、电子设备和存储介质 |
Non-Patent Citations (8)
Title |
---|
Lighting Techinology of the Last Of Us;my pet!;《https://www.cnblogs.com/SeekHit/p/10328603.html》;全文 * |
Unity3D中角色的动画脚本的编写(一);xiaoyy1828;《https://blog.csdn.net/xy849288321/article/details/8992625》;全文 * |
光照贴图接缝探讨;钱康来;《https://zhuanlan.zhihu.com/p/81198807》;全文 * |
基于三维激光扫描的雕像建模与贴图;方毛林;谢海荣;高飞;叶周润;;北京测绘(第05期);全文 * |
基于三角形自适应细分的有效光照烘焙方法;李杨;周果;李淳;邱显杰;王兆其;;计算机学报(第12期);全文 * |
多参数加权的无缝纹理映射算法;刘彬;陈向宁;薛俊诗;;中国图象图形学报(第07期);全文 * |
贵州傩面具数字化及增强现实技术研究;王磊;王存睿;白海娟;;大连民族大学学报(第05期);全文 * |
面向复杂三维场景的高质量纹理映射;姜翰青;王博胜;章国锋;鲍虎军;;计算机学报(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP4120199A4 (en) | 2023-06-14 |
WO2022042436A1 (zh) | 2022-03-03 |
CN111932664A (zh) | 2020-11-13 |
EP4120199A1 (en) | 2023-01-18 |
US20220392144A1 (en) | 2022-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111932664B (zh) | 图像渲染方法、装置、电子设备及存储介质 | |
JP7190042B2 (ja) | シャドウレンダリング方法、装置、コンピュータデバイスおよびコンピュータプログラム | |
CN109685876B (zh) | 毛发渲染方法、装置、电子设备及存储介质 | |
CN110276840B (zh) | 多虚拟角色的控制方法、装置、设备及存储介质 | |
CN108304075B (zh) | 一种在增强现实设备进行人机交互的方法与设备 | |
CN112933599B (zh) | 三维模型渲染方法、装置、设备及存储介质 | |
CN110152291A (zh) | 游戏画面的渲染方法、装置、终端及存储介质 | |
CN112870707B (zh) | 虚拟场景中的虚拟物体展示方法、计算机设备及存储介质 | |
CN110064200B (zh) | 基于虚拟环境的物体构建方法、装置及可读存储介质 | |
CN109947886A (zh) | 图像处理方法、装置、电子设备及存储介质 | |
JP7321466B2 (ja) | 仮想環境に基づく物体構築方法、装置、コンピュータ機器、及びコンピュータプログラム | |
CN111290948B (zh) | 测试数据获取方法、装置、计算机设备及可读存储介质 | |
CN112884874B (zh) | 在虚拟模型上贴花的方法、装置、设备及介质 | |
CN111784841B (zh) | 重建三维图像的方法、装置、电子设备及介质 | |
CN110570460A (zh) | 目标跟踪方法、装置、计算机设备及计算机可读存储介质 | |
CN110853128A (zh) | 虚拟物体显示方法、装置、计算机设备及存储介质 | |
CN111105474B (zh) | 字体绘制方法、装置、计算机设备及计算机可读存储介质 | |
CN112163062A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN112950753A (zh) | 虚拟植物显示方法、装置、设备及存储介质 | |
CN112308766B (zh) | 一种图像数据展示方法、装置、电子设备及存储介质 | |
CN115222867A (zh) | 重叠检测方法、装置、电子设备和存储介质 | |
US11978111B2 (en) | Object virtualization processing method and device, electronic device and storage medium | |
CN114549658A (zh) | 摄像头的标定方法、装置及电子设备 | |
CN109472855B (zh) | 一种体绘制方法、装置及智能设备 | |
CN112184543B (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 |