CN116934947A - 虚拟模型的光照渲染方法、装置和存储介质及电子设备 - Google Patents

虚拟模型的光照渲染方法、装置和存储介质及电子设备 Download PDF

Info

Publication number
CN116934947A
CN116934947A CN202210344256.9A CN202210344256A CN116934947A CN 116934947 A CN116934947 A CN 116934947A CN 202210344256 A CN202210344256 A CN 202210344256A CN 116934947 A CN116934947 A CN 116934947A
Authority
CN
China
Prior art keywords
probe point
probe
triangle
target
coverage
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.)
Pending
Application number
CN202210344256.9A
Other languages
English (en)
Inventor
廖诚
文聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210344256.9A priority Critical patent/CN116934947A/zh
Priority to PCT/CN2023/075919 priority patent/WO2023185287A1/zh
Publication of CN116934947A publication Critical patent/CN116934947A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

本申请公开了一种虚拟模型的光照渲染方法、装置和存储介质及电子设备。其中,该方法包括:获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染。本申请解决了虚拟模型的光照渲染效率较低的技术问题。

Description

虚拟模型的光照渲染方法、装置和存储介质及电子设备
技术领域
本申请涉及计算机领域,具体而言,涉及一种虚拟模型的光照渲染方法、装置和存储介质及电子设备。
背景技术
在虚拟模型的光照渲染场景中,通常会利用光照图(lightmap)的方式,对虚拟模型进行逐像素的光照渲染,但该方式通常会占用大量的内存和存储空间,也需较高的计算量支持,进而导致虚拟模型的光照渲染效率较低的问题出现。因此,存在虚拟模型的光照渲染效率较低的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种虚拟模型的光照渲染方法、装置和存储介质及电子设备,以至少解决虚拟模型的光照渲染效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种虚拟模型的光照渲染方法,包括:获取目标虚拟模型的候选探点集合,其中,上述侯选探点集合中的探点用于对上述目标虚拟模型进行光照渲染;获取上述目标虚拟模型与上述候选探点集合中的各个探点的阻挡度;根据上述目标虚拟模型与上述候选探点集合中的各个探点的阻挡度,对上述候选探点集合中的探点进行筛选,得到目标探点集合;获取上述目标探点集合中的各个探点的球谐基系数,并根据上述目标探点集合中的各个探点的球谐基系数,对上述目标虚拟模型进行光照渲染。
根据本申请实施例的另一方面,还提供了一种虚拟模型的光照渲染装置,包括:第一获取单元,用于获取目标虚拟模型的候选探点集合,其中,上述侯选探点集合中的探点用于对上述目标虚拟模型进行光照渲染;第二获取单元,用于获取上述目标虚拟模型与上述候选探点集合中的各个探点的阻挡度;筛选单元,用于根据上述目标虚拟模型与上述候选探点集合中的各个探点的阻挡度,对上述候选探点集合中的探点进行筛选,得到目标探点集合;第三获取单元,用于获取上述目标探点集合中的各个探点的球谐基系数,并根据上述目标探点集合中的各个探点的球谐基系数,对上述目标虚拟模型进行光照渲染。
作为一种可选的方案,上述筛选单元,包括:第一确定模块,用于根据一组三角形中的每个三角形与上述候选探点集合中的各个探点的阻挡度,确定上述一组三角形中的每个三角形与上述候选探点集合中的各个探点的关联度,其中,上述目标虚拟模型被划分成上述一组三角形;第一筛选模块,用于根据上述一组三角形中的每个三角形与上述候选探点集合中的各个探点的关联度,对上述候选探点集合中的探点进行筛选,得到上述目标探点集合。
作为一种可选的方案,上述第一确定模块,包括:第一执行子模块,用于对于上述一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,上述每个三角形为当前三角形:第一确定子模块,用于确定上述当前三角形投射至一组检测区域中的各个检测区域的投影面积,其中,上述一组检测区域包括上述候选探点集合中的各个探点分别对应的检测区域;第二确定子模块,用于根据上述当前三角形投射至一组检测区域中的各个检测区域的投影面积以及上述当前三角形与上述候选探点集合中的各个探点的阻挡度,确定上述当前三角形与上述候选探点集合中的各个探点的关联度。
作为一种可选的方案,上述第一筛选模块,包括:第二执行子模块,用于重复执行以下步骤,直到上述一组三角形中的每个三角形都关联有预定数量的探点,其中,上述目标探点集合包括上述一组三角形中的每个三角形关联的探点,当前探点集合被初始化为上述候选探点集合:第一获取子模块,用于获取上述当前探点集合中的每个探点与上述一组三角形的覆盖度,其中,上述每个探点与上述一组三角形的覆盖度是上述每个探点与上述一组三角形中的每个三角形之间的覆盖度之和,一个探点与一个三角形之间的覆盖度是根据上述一个三角形与上述一个探点的关联度确定得到的值;第二获取子模块,用于在上述当前探点集合中选取上述覆盖度最大的探点作为上述目标探点集合中的探点,并从上述当前探点集合中删除上述覆盖度最大的探点,其中,上述目标探点集合中的探点被根据上述每个探点与上述一组三角形中的每个三角形之间的覆盖度与上述一组三角形中的三角形进行关联。
作为一种可选的方案,上述第一获取子模块,包括:第一获取子单元,用于在上述一组三角形中包括未关联探点的第一目标三角形的情况下,获取上述当前探点集合中的每个探点与每个上述第一目标三角形的第一覆盖度,其中,上述一个探点与一个上述第一目标三角形之间的第一覆盖度是根据一个上述第一目标三角形与上述一个探点的关联度得到的值,上述每个探点与每个上述第一目标三角形的第一覆盖度是上述每个探点与每个上述第一目标三角形之间的第一覆盖度之和,上述当前探点集合中的每个探点与上述一组三角形的覆盖度包括上述每个探点与每个上述第一目标三角形的第一覆盖度;第二获取子单元,用于在上述一组三角形中包括已关联探点的第二目标三角形的情况下,获取上述当前探点集合中的每个探点与每个上述第二目标三角形的第二覆盖度,其中,上述一个探点与一个上述第二目标三角形之间的第二覆盖度是根据一个上述第二目标三角形与上述一个探点的关联度、一个上述第二目标三角形与另一个探点的关联度、以及目标夹角确定得到的值,上述每个探点与上述一组三角形的第二覆盖度是上述每个探点与每个上述第二目标三角形之间的第二覆盖度之和,上述目标夹角是上述一个探点、一个上述第二目标三角形的质心以及上述另一个探点形成的夹角,上述第二目标三角形已关联的探点包括上述另一个探点,上述当前探点集合中的每个探点与上述一组三角形的覆盖度包括上述每个探点与每个上述第二目标三角形的第二覆盖度;整合子单元,用于在上述一组三角形中包括上述第一目标三角形以及上述第二目标三角形的情况下,整合上述每个探点与每个上述第一目标三角形的第一覆盖度以及上述每个探点与每个上述第二目标三角形的第二覆盖度,得到上述当前探点集合中的每个探点与上述一组三角形的覆盖度。
作为一种可选的方案,上述整合子单元,包括:第一子获取单元,用于获取上述第一目标三角形对应的第一系数、以及上述第二目标三角形对应的第二系数,其中,上述第一系数大于上述第二系数;第二子获取单元,用于获取上述第一覆盖度与上述第一系数的第一乘积值、以及上述第二覆盖度与上述第二系数的第二乘积值;子求和单元,用于求和上述第一乘积值和上述第二乘积值,得到上述当前探点集合中的每个探点与上述一组三角形的覆盖度。
作为一种可选的方案,上述第二获取子单元,包括:第一子确定单元,用于在上述第二目标三角形包括已关联的探点数量等于1个的第一关联三角形的情况下,将上述当前探点集合中的每个探点与每个上述第一关联三角形的第三覆盖度确定为上述当前探点集合中的每个探点与每个上述第二目标三角形的第二覆盖度,其中,上述一个探点与一个上述第一关联三角形之间的第三覆盖度是根据一个上述第一关联三角形与上述一个探点的关联度、一个上述第一关联三角形与上述第一关联三角形已关联的探点的关联度、以及第一夹角确定得到的值,上述第一夹角是上述一个探点、上述一个上述第一关联三角形的质心以及上述上述第一关联三角形已关联的探点形成的夹角,上述每个探点与每个上述第一关联三角形的第三覆盖度是上述每个探点与每个上述第一关联三角形之间的第三覆盖度之和;第二子确定单元,用于在上述第二目标三角形包括已关联的探点数量大于1个的第二关联三角形的情况下,获取上述第二关联三角形已关联的探点与上述第二关联三角形的第四覆盖度、以及上述当前探点集合中的每个探点与上述第二关联三角形的第五覆盖度,并在上述第五覆盖度大于上述第四覆盖度的情况下,将上述当前探点集合中的每个探点与上述第二关联三角形的第五覆盖度确定为上述当前探点集合中的每个探点与每个上述第二目标三角形的第二覆盖度,其中,上述一个探点与一个上述第二关联三角形之间的第五覆盖度是根据一个上述第二关联三角形与上述一个探点的关联度、一个上述第二关联三角形与上述第二关联三角形已关联的探点的关联度、以及第二夹角确定得到的值,上述第二夹角是上述一个探点、上述一个上述第二关联三角形的质心以及上述上述第二关联三角形已关联的探点形成的夹角,上述每个探点与每个上述第二关联三角形的第五覆盖度是上述每个探点与每个上述第二关联三角形之间的第五覆盖度之和。
作为一种可选的方案,上述第一筛选模块,包括:第三执行子模块,用于对于上述一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,上述每个三角形为当前三角形:第三确定子模块,用于在上述候选探点集合中确定与上述当前三角形的关联度最大的第一当前探点;第三获取子模块,用于获取上述候选探点集合中除上述第一当前探点之外的各个探点与上述当前三角形的质心以及上述第一当前探点形成的夹角,共得到一组夹角;第四确定子模块,用于根据上述一组夹角以及上述当前三角形与除上述第一当前探点之外的各个探点的关联度,从除上述第一当前探点之外的各个探点中确定出第二当前探点;第五确定子模块,用于将上述第一当前探点以及上述第二当前探点确定为上述目标探点集合中的探点。
作为一种可选的方案,上述第三获取单元,包括:保存模块,用于将上述目标探点集合中的各个探点的球谐基系数保存为目标贴图;第二确定模块,用于在需要对上述目标虚拟模型进行渲染时,从上述目标贴图中确定上述目标虚拟模型中的各个顶点对应的探点的球谐基系数;第三确定模块,用于根据上述目标虚拟模型中的各个顶点对应的探点的球谐基系数,确定上述目标虚拟模型中的各个顶点的球谐基系数;渲染模块,用于根据上述目标虚拟模型中的各个顶点的球谐基系数,对上述目标虚拟模型进行光照渲染。
作为一种可选的方案,上述渲染模块,包括:第四获取子模块,用于在上述上述目标虚拟模型属于远景虚拟模型的情况下,获取上述目标虚拟模型中的各个顶点的第一球谐基子系数,并根据上述第一球谐基子系数对上述目标虚拟模型进行光照渲染;第五获取子模块,用于在上述上述目标虚拟模型属于近景虚拟模型的情况下,获取上述目标虚拟模型中的各个顶点的第二球谐基子系数,并根据上述第二球谐基子系数对上述目标虚拟模型进行光照渲染,其中,上述第二球谐基子系数为根据上述第一球谐基子系数计算得到的系数。
作为一种可选的方案,上述保存模块,包括:保存子模块,用于在获取到上述目标探点集合中的各个探点的第三球谐基子系数以及第四球谐基子系数的情况下,将上述第三球谐基子系数以第一数据格式保存为上述目标贴图,以及将上述第四球谐基子系数以第二数据格式保存为上述目标贴图,其中,上述第四球谐基子系数是根据上述第三球谐基子系数计算得到的系数,上述第一数据格式所占用的字节数大于上述第二数据格式所占用的字节数。
作为一种可选的方案,上述第二获取单元,包括:第四执行子模块,用于对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,上述每个三角形为当前三角形,上述目标虚拟模型被划分成上述一组三角形:第一检测子模块,用于从上述当前三角形发出一组检测射线;第二检测子模块,用于确定上述一组检测射线中与上述候选探点集合中的各个探点接触的检测射线的数量;阻挡子模块,用于根据上述一组检测射线中与上述候选探点集合中的各个探点接触的检测射线的数量、以及上述一组检测射线中的检测射线的数量,确定上述当前三角形与上述候选探点集合中的各个探点的阻挡度。
作为一种可选的方案,上述第二获取单元,包括:第一获取模块,用于获取上述目标虚拟模型被划分成的各个三角形与上述候选探点集合中的各个探点的阻挡度;上述筛选单元,包括:第二筛选模块,用于根据上述目标虚拟模型被划分成的各个三角形与上述候选探点集合中的各个探点的阻挡度,对上述候选探点集合中的探点进行筛选,得到上述目标探点集合,其中,上述目标探点集合中的各个探点与上述目标虚拟模型被划分成的各个三角形之间具有索引关系;上述第三获取单元,包括:第二获取模块,用于获取上述目标探点集合中的各个探点的球谐基系数,并根据上述索引关系以及上述目标探点集合中的各个探点的球谐基系数,对上述目标虚拟模型进行光照渲染。
作为一种可选的方案,上述第一获取单元,包括:第三获取模块,用于获取上述目标虚拟模型的原始探点集合,其中,上述目标虚拟模型被划分成一组三角形,上述原始探点集合包括上述一组三角形中的各三角形对应的一个或多个探点;第四获取模块,用于在上述原始探点集合中过滤掉无效的探点,得到上述候选探点集合。
根据本申请实施例的又一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上虚拟模型的光照渲染方法。
根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的虚拟模型的光照渲染方法。
在本申请实施例中,获取目标虚拟模型的候选探点集合,其中,上述侯选探点集合中的探点用于对上述目标虚拟模型进行光照渲染;获取上述目标虚拟模型与上述候选探点集合中的各个探点的阻挡度;根据上述目标虚拟模型与上述候选探点集合中的各个探点的阻挡度,对上述候选探点集合中的探点进行筛选,得到目标探点集合;获取上述目标探点集合中的各个探点的球谐基系数,并根据上述目标探点集合中的各个探点的球谐基系数,对上述目标虚拟模型进行光照渲染,利用上述目标虚拟模型与上述候选探点集合中的各个探点的阻挡度对候选探点集合中的探点进行筛选的方式,得到数量更少的重要探点,进而达到了降低通过探点的球谐基系数对上述目标虚拟模型进行光照渲染时的计算量的目的,从而实现了提高虚拟模型的光照渲染效率的技术效果,进而解决了虚拟模型的光照渲染效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的虚拟模型的光照渲染方法的应用环境的示意图;
图2是根据本申请实施例的一种可选的虚拟模型的光照渲染方法的流程的示意图;
图3是根据本申请实施例的一种可选的虚拟模型的光照渲染方法的示意图;
图4是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图5是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图6是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图7是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图8是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图9是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图10是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图11是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图12是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图13是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图14是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图15是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图16是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图17是根据本申请实施例的另一种可选的虚拟模型的光照渲染方法的示意图;
图18是根据本申请实施例的一种可选的虚拟模型的光照渲染装置的示意图;
图19是根据本申请实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种虚拟模型的光照渲染方法,可选地,作为一种可选的实施方式,上述虚拟模型的光照渲染方法可以但不限于应用于如图1所示的环境中。其中,可以但不限于包括用户设备102,其中,该用户设备102上可以但不限于包括显示器108、处理器106及存储器104。
具体过程可如下步骤:
步骤S102,用户设备102获取对目标虚拟模型的光照渲染请求;
步骤S104-S112,用户设备102响应上述光照渲染请求,获取目标虚拟模型的候选探点集合,并进一步获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;通过处理器106对候选探点集合中的探点进行筛选,得到目标探点集合,再获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染,以及将上述光照渲染的结果显示在显示器108,将上述光照渲染的结果存储在存储器104。
除图1示出的示例之外,上述步骤可以由服务器辅助完成,即由服务器执行目标虚拟模型的候选探点集合的获取、阻挡度的获取、探点的筛选、光照渲染等步骤,从而减轻服务器的处理压力。该用户设备102包括但不限于手持设备(如手机)、笔记本电脑、台式电脑、车载设备等,本申请并不限制用户设备102的具体实现方式。
可选地,作为一种可选的实施方式,如图2所示,虚拟模型的光照渲染方法包括:
S202,获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;
S204,获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;
S206,根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;
S208,获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染。
可选地,在本实施例中,上述虚拟模型的光照渲染方法可以但不限于应用在三维(3Dimensions,简称3D)游戏中的模型渲染场景中,在模型空间找到少量重要的点,从而达到节省内存的目的;具体的,先沿着模型表面生成所有的候选探点,再从中挑选若干个重要的,直到满足需求为止,以利用重要程度较高的探点进行光照渲染,以兼顾光照渲染的效率以及游戏画质表现与真实感的提升;
进一步举例说明,可选地例如图3所示,利用上述虚拟模型的光照渲染方法对目标虚拟模型302的候选探点集合进行筛选,得到目标探点集合,如图3中的(a)所示,得到多个探点(不同阴影可以但不限用于表示不同权重的探点);再者,如图3中的(b)所示,目标探点集合中的各个探点可以但不限于与目标虚拟模型302的各个顶点之间存在关联(相同阴影可以但不限用于表示顶点与探点之间的关联关系,且在一个顶点关联多个探点的情况下,该顶点的阴影与上述多个探点中最大权重的探点的阴影相同);进一步获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数以及目标探点集合中的各个探点与目标虚拟模型302的各个顶点之间的关联关系,对目标虚拟模型进行光照渲染。
可选地,在本实施例中,探点可以但不限于理解为在空间中用于采集光照信息的三维空间点,且该三维空间点还用于对目标虚拟模型进行光照渲染。
可选地,在本实施例中,目标虚拟模型可以但不限于被划分为多个三角形进行处理,且每个三角形可以但不限于对应多个顶点,其中,一个顶点可以但不限于关联多个探点,一个探点也可以但不限于关联多个顶点;而获取目标虚拟模型的候选探点集合的过程,也可以但不限理解为获取目标虚拟模型被划分为的每个三角形的候选探点;
进一步举例说明,如图4所示,三角形402为目标虚拟模型被划分为的多个三角形中的一个三角形,以该三角形402为例,如图4中的(a)所示,O为三角形402的质心,a、b、c分别为三角形404的线段AO、BO、CO的中点;进一步如图4中的(b)所示,将a,b,c沿三角形402的法线方向偏移一个预设单位,进而得到了3个候选探点a’、b’、c’;同理,参考上述三角形402的候选探点的获取方式,获取目标虚拟模型被划分为的每个三角形的候选探点;
此外,在本实施例中,目标虚拟模型可以但不限于被划分为的三角形的面积可以但不限于存在区别,且针对不同的面积,对于三角形的候选探点的获取方式也可以但不限于存在不同,如出于提高性能的考虑,对面积小于或等于目标阈值的三角形,可以但不限于生成第一数量的候选探点(如三角形的质心沿三角形的法线方向做偏移所得到的候选探点),而面积大于目标阈值的三角形,可以但不限于生成第二数量的候选探点,其中,第二数量大于第一数量。
可选地,在本实施例中,目标虚拟模型与候选探点集合中的各个探点的阻挡度可以但不限于理解目标虚拟模型对候选探点集合中的各个探点的阻挡程度,或候选探点集合中的各个探点对目标虚拟模型的阻挡程度,或目标虚拟模型与候选探点集合中的各个探点之间是否有阻挡,若无阻挡,则该阻挡度为0,若有阻挡,则该阻挡度大于0,且具体的阻挡度与该阻挡的程度呈正相关关系;或相反,若无阻挡,则该阻挡度为1,若有阻挡,则该阻挡度小于1且大于0,且具体的阻挡度与该阻挡的程度呈反相关关系。
此外,在目标虚拟模型被划分为多个三角形的情况下,目标虚拟模型与候选探点集合中的各个探点的阻挡度可以但不限于理解为上述多个三角形中的各个三角形与候选探点集合中的各个探点的阻挡度,例如目标虚拟模型被划分为N个三角形,候选探点集合中包括M个探点,则上述多个三角形中的各个三角形与候选探点集合中的各个探点的阻挡度可以但不限于包括(N×M)个阻挡度。
可选地,在本实施例中,对候选探点集合中的探点进行筛选的方式可以但不限于将候选探点集合中的阻挡度大于或等于目标阻挡阈值的探点确定为目标探点集合中的探点。
可选地,在本实施例中,球谐基系数可以但不限于为球谐光照中基函数的系数,或可以但不限于理解为先将光照采样成N个系数,然后在渲染的时候用上述球谐基系数对上述采样到的光照进行还原,以完成渲染。
可选地,在本实施例中,相比于不对候选探点集合中的探点进行筛选直接获取目标探点集合中的各个探点的球谐基系数的方式,在对候选探点集合中的探点进行筛选的基础上,再获取目标探点集合中的各个探点的球谐基系数所需付出的计算量得到一定程度的降低,进而提高了对目标虚拟模型进行光照渲染的效率。
可选地,在本实施例中,在得到目标探点集合之后,将目标探点集合中的探点传递至烘培器中进行烘培,在该烘培器中将目标探点集合中的探点转化为世界空间下的探点,并利用烘培器所提供的基础功能以确定出目标探点集合中的探点的受光情况,进而得到目标探点集合中的探点的球谐基系数,获取目标探点集合中的各个探点的球谐基系数;此外,在目标虚拟模型为目标场景中的若干模型之一的情况下,为提高数据处理效率,可以但不限于将目标场景中所有模型的探点传递至烘培器;
可选地,在本实施例中,由于目标探点集合中的探点为单一模型空间下的探点,那么在目标虚拟模型为目标场景中的若干模型之一的情况下,单一模型空间下的探点并不涉及其他模型空间下的探点,进而当对目标场景中所有模型进行烘培时,就可能出现目标探点集合中的探点处于其他模型的内部的异常情况,且该异常情况下的探点属于无效探点,如图5所示,虚拟模型504的探点A被同处一个目标场景502中的虚拟模型506遮挡,导致探点A成为无效探点;
进一步针对该异常情况,可以但不限于对目标探点集合中的探点的目标数据进行记录,其中,目标数据包括以下至少之一:探点到目标虚拟模型的最近距离、探点所能关联的其他探点;进而在烘焙时,如果某个探点因该异常情况导致无效,首先在最近距离范围内找有效的另一探点;如果找不到,则遍历所有能关联的且实际有效的探点,(与距离的平方成反比)进行加权平均。
需要说明的是,获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染,利用目标虚拟模型与候选探点集合中的各个探点的阻挡度对候选探点集合中的探点进行筛选的方式,得到数量更少的重要探点,以降低通过探点的球谐基系数对目标虚拟模型进行光照渲染时的计算量,进而实现了提高虚拟模型的光照渲染效率的技术效果。
进一步举例说明,可选的例如图6所示,获取目标虚拟模型602的候选探点,以组成候选探点集合,如图6中的(a)所示,其中,侯选探点集合中的候选探点用于对目标虚拟模型302进行光照渲染;进一步获取目标虚拟模型602与候选探点集合中的各个候选探点的阻挡度,并根据目标虚拟模型602与候选探点集合中的各个候选探点的阻挡度,对候选探点集合中的候选探点进行筛选,得到数量更少的目标探点,以组成目标探点集合,如图6中的(b)所示,其中,各个目标探点与目标虚拟模型602被划分成的各个三角形关联(虚线用于表示关联关系);进一步获取目标探点集合中的各个目标探点的球谐基系数,并根据目标探点集合中的各个目标探点的球谐基系数,对目标虚拟模型602进行光照渲染,得到图6中的(c)所示的目标虚拟模型604。
通过本申请提供的实施例,获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染,利用目标虚拟模型与候选探点集合中的各个探点的阻挡度对候选探点集合中的探点进行筛选的方式,得到数量更少的重要探点,进而达到了降低通过探点的球谐基系数对目标虚拟模型进行光照渲染时的计算量的目的,从而实现了提高虚拟模型的光照渲染效率的技术效果。
作为一种可选的方案,根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合,包括:
S1,根据一组三角形中的每个三角形与候选探点集合中的各个探点的阻挡度,确定一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,其中,目标虚拟模型被划分成一组三角形;
S2,根据一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,对候选探点集合中的探点进行筛选,得到目标探点集合。
可选地,在本实施例中,一组三角形中的每个三角形与候选探点集合中的各个探点的阻挡度可以但不限与一组三角形中的每个三角形与候选探点集合中的各个探点的关联度之间呈正相关关系。
可选地,在本实施例中,获取一组三角形中的每个三角形与候选探点集合中的各个探点之间的距离值;根据一组三角形中的每个三角形与候选探点集合中的各个探点之间的距离值以及一组三角形中的每个三角形与候选探点集合中的各个探点的阻挡度,确定一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,例如获取一组三角形中的每个三角形与候选探点集合中的各个探点之间的距离值以及一组三角形中的每个三角形与候选探点集合中的各个探点的阻挡度的乘积结果,并阿静该乘积结果确定为一组三角形中的每个三角形与候选探点集合中的各个探点的关联度。
可选地,在本实施例中,对候选探点集合中的探点进行筛选的方式可以但不限于将候选探点集合中的关联度大于或等于目标关联阈值的探点确定为目标探点集合中的探点。
通过本申请提供的实施例,根据一组三角形中的每个三角形与候选探点集合中的各个探点的阻挡度,确定一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,其中,目标虚拟模型被划分成一组三角形;根据一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,对候选探点集合中的探点进行筛选,得到目标探点集合,实现了提高虚拟模型的光照渲染效率的效果。
作为一种可选的方案,根据一组三角形中的每个三角形与候选探点集合中的各个探点的阻挡度,确定一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,包括:
对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形:
S1,确定当前三角形投射至一组检测区域中的各个检测区域的投影面积,其中,一组检测区域包括候选探点集合中的各个探点分别对应的检测区域;
S2,根据当前三角形投射至一组检测区域中的各个检测区域的投影面积以及当前三角形与候选探点集合中的各个探点的阻挡度,确定当前三角形与候选探点集合中的各个探点的关联度。
可选地,在本实施例中,检测区域可以但不限于理解为以探点为中心的平面区域,如圆形、矩形、多边形等;或,检测区域可以但不限于理解为以探点为中心的三维单位体,如球体、矩形体、多边形体等。
可选地,在本实施例中,关联度可以但不限于为投影面积与阻挡度的整合结果,如乘积结果、求和结果等;关联度还可以但不限于为投影面积、阻挡度以及其他参数的整合结果,其中,其他参数可以但不限于包括以下至少之一:当前三角形与候选探点集合中的各个探点的距离、当前三角形与候选探点集合中的各个探点的夹角角度等。
需要说明的是,对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形:确定当前三角形投射至一组检测区域中的各个检测区域的投影面积,其中,一组检测区域包括候选探点集合中的各个探点分别对应的检测区域;根据当前三角形投射至一组检测区域中的各个检测区域的投影面积以及当前三角形与候选探点集合中的各个探点的阻挡度,确定当前三角形与候选探点集合中的各个探点的关联度.
进一步举例说明,可选的例如图7所示,目标虚拟模型702被划分为多个三角形(一组三角形),以确定三角形704(一组三角形中的三角形)与探点706(候选探点集合中的探点)的关联度为例说明,首先确定三角形704投射至探点706对应的检测区域708;进一步获取三角形704投射至检测区域708的投影710,再根据投影710的投影面积以及三角形704与探点706的阻挡度,确定三角形704与探点706的关联度。
通过本申请提供的实施例,对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形:确定当前三角形投射至一组检测区域中的各个检测区域的投影面积,其中,一组检测区域包括候选探点集合中的各个探点分别对应的检测区域;根据当前三角形投射至一组检测区域中的各个检测区域的投影面积以及当前三角形与候选探点集合中的各个探点的阻挡度,确定当前三角形与候选探点集合中的各个探点的关联度,实现了提高关联度的获取准确性的效果。
作为一种可选的方案,根据一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,对候选探点集合中的探点进行筛选,得到目标探点集合,包括:
重复执行以下步骤,直到一组三角形中的每个三角形都关联有预定数量的探点,其中,目标探点集合包括一组三角形中的每个三角形关联的探点,当前探点集合被初始化为候选探点集合:
S1,获取当前探点集合中的每个探点与一组三角形的覆盖度,其中,每个探点与一组三角形的覆盖度是每个探点与一组三角形中的每个三角形之间的覆盖度之和,一个探点与一个三角形之间的覆盖度是根据一个三角形与一个探点的关联度确定得到的值;
S2,在当前探点集合中选取覆盖度最大的探点作为目标探点集合中的探点,并从当前探点集合中删除覆盖度最大的探点,其中,目标探点集合中的探点被根据每个探点与一组三角形中的每个三角形之间的覆盖度与一组三角形中的三角形进行关联。
可选地,在本实施例中,当前探点集合中的每个探点与一组三角形的覆盖度可以但不限于包括直接覆盖度或间接覆盖度,其中,直接覆盖度可以但不限于理解为根据当前探点集合中的每个探点与一组三角形的关联度直接计算得到的覆盖度,或者可以但不限于将当前探点集合中的每个探点与一组三角形的关联度理解为当前探点集合中的每个探点与一组三角形的覆盖度;间接覆盖度可以但不限于理解为根据当前探点集合中的每个探点与一组三角形的关联度以及其他目标参数共同计算得到的覆盖度,其中,其他目标参数可以但不限于包括以下至少之一:当前探点集合中的每个探点与一组三角形的阻挡度、当前探点集合中的每两个探点的关联度、当前探点集合中的每两个探点以及一组三角形共同组成的目标结构的结构参数等。
可选地,在本实施例中,一组三角形中的每个三角形都关联有预定数量的探点可以但不限于理解为在对候选探点集合中的探点进行筛选的过程中,不断更新目标探点集合中的探点,直至一组三角形中的每个三角形都关联有预定数量的探点,如新增、删除、替换目标探点集合中的探点等;
进一步举例说明,可选地重复执行以下步骤,直到预设一组三角形中的每个三角形都关联2个探点:
获取当前探点集合中的每个探点与一组三角形的覆盖度;在当前探点集合中选取覆盖度最大的探点作为目标探点集合中的探点,并从当前探点集合中删除覆盖度最大的探点;
以一组三角形中的三角形A为例说明,假设根据该覆盖度最大的探点与一组三角形中的各个三角形的覆盖度,确定该覆盖度最大的探点与一组三角形中的三角形A关联,则首先明确的三角形A已关联的探点数量,若三角形A已关联的探点数量都未达到2个,则保留该覆盖度最大的探点在目标探点集合中的位置,并建立该覆盖度最大的探点与三角形A的关联关系;
但若三角形A已关联的探点数量已达到2个,则根据该覆盖度最大的探点与三角形A的覆盖度,判断该覆盖度最大的探点的重要程度是否大于三角形A已关联的探点的重要程度,若是,则使用该覆盖度最大的探点代替三角形A已关联的探点(即,三角形A已关联的探点数量仍保持2个,但重要程度较低的探点被该覆盖度最大的探点代替);若否,则保留三角形A已关联的探点,并可以但不限于删除该覆盖度最大的探点在目标探点集合中的位置(即,如果获取到的覆盖度最大的探点与一组三角形中的任一三角形都未建立关联关系,则可以但不限于将该覆盖度最大的探点从目标探点集合中删除,或在选取覆盖度最大的探点作为目标探点集合中的探点之前,就先判断获取到的覆盖度最大的探点是否与一组三角形中的任一三角形建立关联关系,若无则不选取覆盖度最大的探点作为目标探点集合中的探点)。
需要说明的是,目标探点集合中的探点被根据每个探点与一组三角形中的每个三角形之间的覆盖度与一组三角形中的三角形进行关联,且目标探点集合中的探点也被根据每个探点与一组三角形中的每个三角形之间的覆盖度进行更新,或者说目标探点集合中的探点可以但不限于理解为与一组三角形中的三角形关联的探点。
进一步举例说明,可以但不限于通过以下述编程语言执行得到目标探点集合的相关步骤:
While选出的候选探点数量<预设的探点最大数量do:
For探点p:剩下的候选探点do:
△P=0;
For三角形t:所有三角形do;
//对三角形t,若增加探点p,覆盖度增加为△t;
//为了加强对新增探点覆盖;
△P+=△t;
再找出△P最大的探点,将其加入选出的目标探点集合中;
If所有的三角形都有两个探点(可选的结束条件);
Break;
通过本申请提供的实施例,重复执行以下步骤,直到一组三角形中的每个三角形都关联有预定数量的探点,其中,目标探点集合包括一组三角形中的每个三角形关联的探点,当前探点集合被初始化为候选探点集合:获取当前探点集合中的每个探点与一组三角形的覆盖度,其中,每个探点与一组三角形的覆盖度是每个探点与一组三角形中的每个三角形之间的覆盖度之和,一个探点与一个三角形之间的覆盖度是根据一个三角形与一个探点的关联度确定得到的值;在当前探点集合中选取覆盖度最大的探点作为目标探点集合中的探点,并从当前探点集合中删除覆盖度最大的探点,其中,目标探点集合中的探点被根据每个探点与一组三角形中的每个三角形之间的覆盖度与一组三角形中的三角形进行关联,实现了提高对候选探点集合中的探点的筛选效率的效果。
作为一种可选的方案,获取当前探点集合中的每个探点与一组三角形的覆盖度,包括:
S1,在一组三角形中包括未关联探点的第一目标三角形的情况下,获取当前探点集合中的每个探点与每个第一目标三角形的第一覆盖度,其中,一个探点与一个第一目标三角形之间的第一覆盖度是根据一个第一目标三角形与一个探点的关联度得到的值,每个探点与每个第一目标三角形的第一覆盖度是每个探点与每个第一目标三角形之间的第一覆盖度之和,当前探点集合中的每个探点与一组三角形的覆盖度包括每个探点与每个第一目标三角形的第一覆盖度;
S2,在一组三角形中包括已关联探点的第二目标三角形的情况下,获取当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第二目标三角形之间的第二覆盖度是根据一个第二目标三角形与一个探点的关联度、一个第二目标三角形与另一个探点的关联度、以及目标夹角确定得到的值,每个探点与一组三角形的第二覆盖度是每个探点与每个第二目标三角形之间的第二覆盖度之和,目标夹角是一个探点、一个第二目标三角形的质心以及另一个探点形成的夹角,第二目标三角形已关联的探点包括另一个探点,当前探点集合中的每个探点与一组三角形的覆盖度包括每个探点与每个第二目标三角形的第二覆盖度;
S3,在一组三角形中包括第一目标三角形以及第二目标三角形的情况下,整合每个探点与每个第一目标三角形的第一覆盖度以及每个探点与每个第二目标三角形的第二覆盖度,得到当前探点集合中的每个探点与一组三角形的覆盖度。
可选地,在本实施例中,一组三角形中的三角形可以但不限于被分为第一目标三角形和第二目标三角形,其中,第一目标三角形为一组三角形中未关联任何探点的三角形,二目标三角形为一组三角形中已关联至少一个探点的三角形;如一组三角形中的三角形A已关联探点1和探点2,则三角形A为第二目标三角形;再如一组三角形中的三角形B已关联探点1,则三角形B也为第二目标三角形;而假设一组三角形中的三角形C还未关联任何探点,则三角形C为第一目标三角形。
可选地,在本实施例中,目标夹角是一个探点、一个第二目标三角形的质心以及另一个探点形成的夹角,可以但不限于理解为先确定一个探点、一个第二目标三角形的质心以及另一个探点所形成的目标结构,再获取该目标结构的夹角角度,如图8所示,目标夹角804为一个探点P1、一个第二目标三角形802的质心O以及另一个探点P2形成的夹角。
可选地,在本实施例中,一个探点与一个第一目标三角形之间的第一覆盖度是根据一个第一目标三角形与一个探点的关联度得到的值,而一个探点与一个第二目标三角形之间的第二覆盖度是根据一个第二目标三角形与一个探点的关联度、一个第二目标三角形与另一个探点的关联度、以及目标夹角确定得到的值;其中,第一覆盖度可以但不限于理解为单个探点与三角形之间的覆盖度(即,单维度),而第二覆盖度可以但不限于理解为单个探点和另一探点共同与三角形之间的覆盖度(即,多维度),且第一覆盖度的计算复杂度可以但不限于低于第二覆盖度的计算复杂度;
进一步举例说明,可选地例如对单个探点P1的情况,关联(程)度为k1,则探点P1的第一覆盖度也可以但不限于为k1;而对两个探点,如探点P1、探点P2的情况,且仍假设探点P1的关联度为k1、探点P2的关联度为k2,那么对探点P2的第二覆盖度的计算,需先获取探点P2与三角形质心以及探点P1所形成的夹角θ,进而计算探点P2的第二覆盖度,或者说计算探点P1以及探点P2对该三角形的覆盖度为k1+(1-cosθ)*k2,其目的在于希望θ越大其覆盖度也越大;此外,还可以但不限于根据多个探点所形成的立体角度对第二覆盖度进行更多维度的计算,如仍假设探点P1的关联度为k1、探点P2的关联度为k2、探点P3的关联度为k3,那么对探点P3的第二覆盖度的计算,需先获取探点P3、探点P2与三角形质心以及探点P1所形成的立体角θ`,进而计算探点P3的第二覆盖度,或者说探点P1、探点P2以及探点P3对该三角形的覆盖度定义为k1+(1-cosθ`)*k2+(1-cosθ`)*k3。
需要说明的是,对于一组三角形中的不同三角形,覆盖度的获取方式也存在不同,如对于第一目标三角形,其覆盖度(第一覆盖度)的获取方式为根据一个第一目标三角形与一个探点的关联度得到;再如对于第二目标三角形,其覆盖度(第二覆盖度)的获取方式为根据一个第二目标三角形与一个探点的关联度、一个第二目标三角形与另一个探点的关联度、以及目标夹角确定得到。此外,一组三角形中可能存在多个不同的三角形,如一组三角形中包括3个第一目标三角形、4个第二目标三角形等,那么再计算一组三角形对应的覆盖度时,可以先分别计算3个第一目标三角形所对应的第一覆盖度,以及4个第二目标三角形对应的第二覆盖度,再进行求和处理,以得到一组三角形对应的覆盖度。
进一步举例说明,可选地例如图9所示,一组三角形902中包括多个三角形,如三角形A、三角形B、三角形C,候选探点集合904中包括多个探点,如探点P1、探点P2、探点P3……探点Pn;进一步将候选探点集合904确定为当前探点集合,获取当前探点集合中的每个探点与一组三角形902中的每个三角形的覆盖度,其中,在三角形为第一目标三角形的情况下,根据一个第一目标三角形与一个探点的关联度得到一个第一目标三角形与一个探点的覆盖度,如(P1×A)为三角形A与探点P1,再将每个三角形与探点P1的第一覆盖度相加,以得到第一覆盖度T1(由于在当前步骤S902中,一组三角形902中的三角形无第二目标三角形,因此在当前步骤S902中只需相加第一覆盖度);基于此,对候选探点集合904中的每个探点都进行相同处理,分别得到每个探点与每个三角形的覆盖度,如覆盖度T2、覆盖度T3……覆盖度Tn;再根据得到的覆盖度T1、覆盖度T2、覆盖度T3……覆盖度Tn,将覆盖度最大的探点P1确定为目标探点集合906的探点,并删除候选探点集合904中的探点P1,得到候选探点集合908,其中,探点P1与三角形A关联;
进一步如步骤S904,将候选探点集合908确定为当前探点集合,获取当前探点集合中的每个探点与一组三角形902中的每个三角形的覆盖度,其中,在三角形为第二目标三角形的情况下,根据一个第二目标三角形与一个探点的关联度得到一个第二目标三角形与一个探点的覆盖度,如(P2×A×P1)为三角形A与探点P2,再将每个三角形与探点P2的第一覆盖度以及第二覆盖度相加,以得到第一覆盖度T21(由于在当前步骤S904中,三角形A已关联探点P1,则三角形A为第二目标三角形,因此在当前步骤S904中需相加第一覆盖度以及第二覆盖度);基于此,对候选探点集合908中的每个探点都进行相同处理,分别得到每个探点与每个三角形的覆盖度,如覆盖度T32……覆盖度Tn(n-1);再根据得到的覆盖度T21、覆盖度T32……覆盖度Tn(n-1),将覆盖度最大的探点P3确定为目标探点集合910的探点,并删除候选探点集合908中的探点P1,得到新的候选探点集合(后续步骤同理,在此不再举例说明),其中,探点P3与三角形C关联;
在一组三角形902中的每个三角形都关联有2个探点,确定目标探点集合912,其中,三角形A与探点P1、探点P3关联、三角形B与探点P1、探点P3关联、三角形C与探点P2、探点P3关联。
通过本申请提供的实施例,在一组三角形中包括未关联探点的第一目标三角形的情况下,获取当前探点集合中的每个探点与每个第一目标三角形的第一覆盖度,其中,一个探点与一个第一目标三角形之间的第一覆盖度是根据一个第一目标三角形与一个探点的关联度得到的值,每个探点与每个第一目标三角形的第一覆盖度是每个探点与每个第一目标三角形之间的第一覆盖度之和,当前探点集合中的每个探点与一组三角形的覆盖度包括每个探点与每个第一目标三角形的第一覆盖度;在一组三角形中包括已关联探点的第二目标三角形的情况下,获取当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第二目标三角形之间的第二覆盖度是根据一个第二目标三角形与一个探点的关联度、一个第二目标三角形与另一个探点的关联度、以及目标夹角确定得到的值,每个探点与一组三角形的第二覆盖度是每个探点与每个第二目标三角形之间的第二覆盖度之和,目标夹角是一个探点、一个第二目标三角形的质心以及另一个探点形成的夹角,第二目标三角形已关联的探点包括另一个探点,当前探点集合中的每个探点与一组三角形的覆盖度包括每个探点与每个第二目标三角形的第二覆盖度;在一组三角形中包括第一目标三角形以及第二目标三角形的情况下,整合每个探点与每个第一目标三角形的第一覆盖度以及每个探点与每个第二目标三角形的第二覆盖度,得到当前探点集合中的每个探点与一组三角形的覆盖度,实现了提高覆盖度的计算准确性的效果。
作为一种可选的方案,整合每个探点与每个第一目标三角形的第一覆盖度以及每个探点与每个第二目标三角形的第二覆盖度,得到当前探点集合中的每个探点与一组三角形的覆盖度,包括:
S1,获取第一目标三角形对应的第一系数、以及第二目标三角形对应的第二系数,其中,第一系数大于第二系数;
S2,获取第一覆盖度与第一系数的第一乘积值、以及第二覆盖度与第二系数的第二乘积值;
S3,求和第一乘积值和第二乘积值,得到当前探点集合中的每个探点与一组三角形的覆盖度。
可选地,在本实施例中,第二目标三角形可以但不限于被分为未满预定数量的三角形以及已满预定数量的三角形,其中,未满预定数量的三角形可以但不限于为已关联探点、但该已关联的探点数量未达到预定数量的三角形,已满预定数量的三角形可以但不限于为已关联探点、且该已关联的探点数量已达到预定数量的三角形;
进一步举例说明,可选地假设预定数量为2,则未满预定数量的三角形为已关联1个探点的三角形,已满预定数量的三角形为已关联2个探点的三角形。
可选地,在本实施例中,在一组三角形中的三角形被分为第一目标三角形、未满预定数量的三角形以及已满预定数量的三角形的情况下,第一目标三角形对应第一系数、未满预定数量的三角形对应第三系数、已满预定数量的三角形对应第四系数,其中,第一系数大于第三系数,第三系数大于第四系数;
进一步举例说明,为提高对候选探点集合中的探点的筛选效率,可以但不限于对不同的三角形分配不同的计算系数,如三角形A(第一目标三角形)还未关联任何探点,则新关联至该三角形A的探点1的价值较高,进而在计算探点1与三角形A的覆盖值时,会再与一个较高的计算系数(第一系数,如3)相乘;再如三角形B(未满预定数量的三角形)已关联1个探点,则新关联至该三角形B的探点2的价值一般,进而在计算探点2与三角形B的覆盖值时,会再与一个一般的计算系数(第三系数,如2)相乘;再如三角形C(已满预定数量的三角形)已关联2个探点,则新关联至该三角形C的探点3的价值较低,进而在计算探点3与三角形C的覆盖值时,会再与一个较低的计算系数(第四系数,如1)相乘。
通过本申请提供的实施例,获取第一目标三角形对应的第一系数、以及第二目标三角形对应的第二系数,其中,第一系数大于第二系数;获取第一覆盖度与第一系数的第一乘积值、以及第二覆盖度与第二系数的第二乘积值;求和第一乘积值和第二乘积值,得到当前探点集合中的每个探点与一组三角形的覆盖度,实现了提高对候选探点集合中的探点的筛选效率的效果。
作为一种可选的方案,获取当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,包括:
S1,在第二目标三角形包括已关联的探点数量等于1个的第一关联三角形的情况下,将当前探点集合中的每个探点与每个第一关联三角形的第三覆盖度确定为当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第一关联三角形之间的第三覆盖度是根据一个第一关联三角形与一个探点的关联度、一个第一关联三角形与第一关联三角形已关联的探点的关联度、以及第一夹角确定得到的值,第一夹角是一个探点、一个第一关联三角形的质心以及第一关联三角形已关联的探点形成的夹角,每个探点与每个第一关联三角形的第三覆盖度是每个探点与每个第一关联三角形之间的第三覆盖度之和;
S2,在第二目标三角形包括已关联的探点数量大于1个的第二关联三角形的情况下,获取第二关联三角形已关联的探点与第二关联三角形的第四覆盖度、以及当前探点集合中的每个探点与第二关联三角形的第五覆盖度,并在第五覆盖度大于第四覆盖度的情况下,将当前探点集合中的每个探点与第二关联三角形的第五覆盖度确定为当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第二关联三角形之间的第五覆盖度是根据一个第二关联三角形与一个探点的关联度、一个第二关联三角形与第二关联三角形已关联的探点的关联度、以及第二夹角确定得到的值,第二夹角是一个探点、一个第二关联三角形的质心以及第二关联三角形已关联的探点形成的夹角,每个探点与每个第二关联三角形的第五覆盖度是每个探点与每个第二关联三角形之间的第五覆盖度之和。
需要说明的是,在第二目标三角形包括已关联的探点数量大于1个的第二关联三角形的情况下,获取第二关联三角形已关联的探点与第二关联三角形的第四覆盖度、以及当前探点集合中的每个探点与第二关联三角形的第五覆盖度,并在第五覆盖度大于第四覆盖度的情况下,将当前探点集合中的每个探点与第二关联三角形的第五覆盖度确定为当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第二关联三角形之间的第五覆盖度是根据一个第二关联三角形与一个探点的关联度、一个第二关联三角形与第二关联三角形已关联的探点的关联度、以及第二夹角确定得到的值,第二夹角是一个探点、一个第二关联三角形的质心以及第二关联三角形已关联的探点形成的夹角,每个探点与每个第二关联三角形的第五覆盖度是每个探点与每个第二关联三角形之间的第五覆盖度之和。
进一步举例说明,可选的例如图10所示,作为第二关联三角形的三角形A,当前已关联探点P1以及探点P2,其中,探点P1为关联度最大的探点,可选择将探点P1设置为固定探点,不做更新;进一步在候选探点集合1002中选取探点P3待与三角形A关联的情况下,获取探点P1、探点P2与三角形A的覆盖度T1、以及探点P1、探点P3与三角形A的覆盖度T2,进而在覆盖度T2小于覆盖度T1的情况下,更新三角形A当前关联的探点,由探点P1以及探点P2调整为探点P1以及探点P3;或,
探点P1以及探点P2为同等价值的探点,进而在候选探点集合1002中选取探点P3待与三角形A关联的情况下,获取探点P1、探点P2与三角形A的覆盖度T1、探点P2、探点P3与三角形A的覆盖度T3、以及探点P1、探点P3与三角形A的覆盖度T2,进而在覆盖度T1、覆盖度T2以及覆盖度T1中确定出最大的覆盖度,如覆盖度T3,进而更新三角形A当前关联的探点,由探点P1以及探点P2调整为探点P2以及探点P3。
通过本申请提供的实施例,在第二目标三角形包括已关联的探点数量等于1个的第一关联三角形的情况下,将当前探点集合中的每个探点与每个第一关联三角形的第三覆盖度确定为当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第一关联三角形之间的第三覆盖度是根据一个第一关联三角形与一个探点的关联度、一个第一关联三角形与第一关联三角形已关联的探点的关联度、以及第一夹角确定得到的值,第一夹角是一个探点、一个第一关联三角形的质心以及第一关联三角形已关联的探点形成的夹角,每个探点与每个第一关联三角形的第三覆盖度是每个探点与每个第一关联三角形之间的第三覆盖度之和;在第二目标三角形包括已关联的探点数量大于1个的第二关联三角形的情况下,获取第二关联三角形已关联的探点与第二关联三角形的第四覆盖度、以及当前探点集合中的每个探点与第二关联三角形的第五覆盖度,并在第五覆盖度大于第四覆盖度的情况下,将当前探点集合中的每个探点与第二关联三角形的第五覆盖度确定为当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第二关联三角形之间的第五覆盖度是根据一个第二关联三角形与一个探点的关联度、一个第二关联三角形与第二关联三角形已关联的探点的关联度、以及第二夹角确定得到的值,第二夹角是一个探点、一个第二关联三角形的质心以及第二关联三角形已关联的探点形成的夹角,每个探点与每个第二关联三角形的第五覆盖度是每个探点与每个第二关联三角形之间的第五覆盖度之和,实现了提高对候选探点集合中的探点的筛选准确性的效果。
作为一种可选的方案,根据一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,对候选探点集合中的探点进行筛选,得到目标探点集合,包括:
S1,对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形:
S2,在候选探点集合中确定与当前三角形的关联度最大的第一当前探点;
S3,获取候选探点集合中除第一当前探点之外的各个探点与当前三角形的质心以及第一当前探点形成的夹角,共得到一组夹角;
S4,根据一组夹角以及当前三角形与除第一当前探点之外的各个探点的关联度,从除第一当前探点之外的各个探点中确定出第二当前探点;
S5,将第一当前探点以及第二当前探点确定为目标探点集合中的探点。
需要说明的是,为提高对候选探点集合中的探点的筛选效率,可以但不限于依次或并行对一组三角形中的每个三角形与候选探点集合中的任N个探点关联,其中,N为预定数量;
进一步举例说明,可选的例如图11所示,将一组三角形1102中的三角形A作为当前三角形为例说明,在候选探点集合1104中确定与三角形A的关联度最大的探点P1,并将探点P1确定为目标探点集合1106中的探点;再获取候选探点集合1106中除探点P1之外的各个探点与三角形A的质心以及探点P1形成的夹角,共得到一组夹角;根据一组夹角以及三角形A与除探点P1之外的各个探点的关联度,从除探点P1之外的各个探点中确定出探点P3;将探点P3也确定为目标探点集合1106中的探点;同理,将一组三角形1102中的全部三角形也作为当前三角形执行上述步骤,以得到目标探点集合1108,其中,三角形A与探点P1、探点P3关联、三角形B与探点P1、探点P3关联、三角形C与探点P2、探点P3关联。
通过本申请提供的实施例,对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形:在候选探点集合中确定与当前三角形的关联度最大的第一当前探点;获取候选探点集合中除第一当前探点之外的各个探点与当前三角形的质心以及第一当前探点形成的夹角,共得到一组夹角;根据一组夹角以及当前三角形与除第一当前探点之外的各个探点的关联度,从除第一当前探点之外的各个探点中确定出第二当前探点;将第一当前探点以及第二当前探点确定为目标探点集合中的探点,实现了提高对候选探点集合中的探点的筛选效率的效果。
作为一种可选的方案,根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染,包括:
S1,将目标探点集合中的各个探点的球谐基系数保存为目标贴图;
S2,在需要对目标虚拟模型进行渲染时,从目标贴图中确定目标虚拟模型中的各个顶点对应的探点的球谐基系数;
S3,根据目标虚拟模型中的各个顶点对应的探点的球谐基系数,确定目标虚拟模型中的各个顶点的球谐基系数;
S4,根据目标虚拟模型中的各个顶点的球谐基系数,对目标虚拟模型进行光照渲染。
可选地,在本实施例中,可以但不限于将目标虚拟模型所在的模型空间下的探点转化到目标空间下的探点,并利用烘焙器所提供的基础功能计算出各个探点的受光情况,最终得到光照的球谐系数;再将烘焙出来的目标虚拟模型中的所有元素的球谐系数保存为贴图(所有元素的球谐系数保存为一个或多个贴图、或一个元素的球谐系数保存为一个贴图等);运行时根据预先保存的索引和权重数据,采样球谐贴图,得到的系数与法线所对应的基函数做点积,以得到光照信息,完成对目标虚拟模型进行光照渲染。
可选地,在本实施例中,可以但不限于区分目标虚拟模型中的各个顶点与各个探点具有的对应关系的情况,并具体分为在顶点与探点具有对应关系的情况下,将该顶点的球谐基系数确定为等于一个探点的球谐基系数;在顶点与探点具有对应关系的情况下,将该顶点的球谐基系数确定为等于多个探点的球谐基系数的加权之和。
可选地,在本实施例中,可以但不限于在顶点的属性里面增加相关探点的索引和权重,为了光照渲染兼顾效果与效率,对顶点的属性结构进行了限定,如假设每个顶点关联两个探点,且每个顶点的属性空间为32bit(并不固定,32bit仅做举例说明),则在该32bit的属性空间中,可以但不限于分配至少两个探点的属性空间,如分配探点A8bit的属性空间、分配探点B8bit的属性空间,至多可支持256个索引,余下的16bit,其中,8bit用于分配权重(探点之间的权重可关联计算,如探点B的权重可通过探点A的权重计算得到了,因此还可节省一个通道实现其他功能),再预留8bit的属性空间,用于保存顶点AO,其中,顶点AO可以但不限于理解为遮挡参数或环境光遮挡系数,进而在不增加内存的情况下,增加了表现细节。
作为一种可选的方案,根据目标虚拟模型中的各个顶点的球谐基系数,对目标虚拟模型进行光照渲染,包括:
S1,在目标虚拟模型属于远景虚拟模型的情况下,获取目标虚拟模型中的各个顶点的第一球谐基子系数,并根据第一球谐基子系数对目标虚拟模型进行光照渲染;
S2,在目标虚拟模型属于近景虚拟模型的情况下,获取目标虚拟模型中的各个顶点的第二球谐基子系数,并根据第二球谐基子系数对目标虚拟模型进行光照渲染,其中,第二球谐基子系数为根据第一球谐基子系数计算得到的系数。
可选地,在本实施例中,球谐基系数可以但不限于包括3阶段的球谐基系数,其中,球谐基系数的二阶和三阶系数可以但不限于通过一阶系数做归一化处理得到;
进一步举例说明,可选地3阶段的球谐基系数如图12中的公式1202所示,其中,SHl,m为探点的球谐基系数,下标l、m皆为球谐基的通用表示,N为探点所关联的三角形数量,w(i)为权重,如4Π,L(i)为某方向入射光照;如图12中的公式1204所示,球谐基函数的后缀部分小于1,所以高阶(2阶和3阶)的球谐基系数可由1阶的球谐基系数做归一化处理。
可选地,在本实施例中,考虑到采样效率、LOD、以及整合其他功能,球谐基系数的数据格式可以但不限于采用如下方式进行编码:首先贴图的格式可以但不限于是Uint4,这种格式是硬件所能支持的,比较方便编码的进行;进一步对每组球谐基系数,通常需要占用2个像素,进而将低阶的球谐基系数(第一球谐基子系数)与高阶的球谐基系数(第二球谐基子系数)分到两个不同的像素,进而更方便的做lod,如近处的物体(近景虚拟模型)需要进行完整的、高阶的球谐计算,而远处的物体只需进行低阶的球谐计算即可,这样远处物体的采样只有1次;更进一步,还可以但不限于将高阶的球谐基系数拆分到另一张贴图,于是远处的物体就只用加载一半的贴图量;
进一步举例说明,可选地如图13所示,第一球谐基子系数1302包括第1和2阶系数,第二球谐基子系数1304包括第3阶系数,进而将RGB3个通道的各阶球谐基系数,分至16byte的两个像素,如将支RGB 3个通道的第一球谐基子系数分至第一像素1302,将支RGB 3个通道的第二球谐基子系数分至第二像素1304;
具体的,对于第一像素1302,16byte的存储空间被分为三部分,第一部分6byte,用于分配RGB 3个通道的1阶球谐基系数;第二部分9byte,用于分配RGB 3个通道的2阶球谐基系数;第三部分1byte,为预留的字节,可用于保存阴影数据,以实现一个基于探点的相对粗糙的阴影效果;
再者,对于第二像素1304,16byte的存储空间被分为两部分,第一部分15byte,用于分配RGB 3个通道的3阶球谐基系数;第二部分1byte,用为预留的字节,可用于保存阴影数据,以实现一个基于探点的相对粗糙的阴影效果。
通过本申请提供的实施例,在目标虚拟模型属于远景虚拟模型的情况下,获取目标虚拟模型中的各个顶点的第一球谐基子系数,并根据第一球谐基子系数对目标虚拟模型进行光照渲染;在目标虚拟模型属于近景虚拟模型的情况下,获取目标虚拟模型中的各个顶点的第二球谐基子系数,并根据第二球谐基子系数对目标虚拟模型进行光照渲染,其中,第二球谐基子系数为根据第一球谐基子系数计算得到的系数,实现了兼顾光照渲染的效率以及真实性的效果。
作为一种可选的方案,将目标探点集合中的各个探点的球谐基系数保存为目标贴图,包括:
在获取到目标探点集合中的各个探点的第三球谐基子系数以及第四球谐基子系数的情况下,将第三球谐基子系数以第一数据格式保存为目标贴图,以及将第四球谐基子系数以第二数据格式保存为目标贴图,其中,第四球谐基子系数是根据第三球谐基子系数计算得到的系数,第一数据格式所占用的字节数大于第二数据格式所占用的字节数。
需要说明的是,在获取到目标探点集合中的各个探点的第三球谐基子系数以及第四球谐基子系数的情况下,将第三球谐基子系数以第一数据格式保存为目标贴图,以及将第四球谐基子系数以第二数据格式保存为目标贴图,其中,第四球谐基子系数是根据第三球谐基子系数计算得到的系数,第一数据格式所占用的字节数大于第二数据格式所占用的字节数。
进一步举例说明,可选的例如图13所示,一个1阶球谐基系数(第三球谐基子系数)占据2个字节数,RGB通道的三个1阶球谐基系数总占据6个字节数,而一个2阶球谐基系数(第四球谐基子系数)占据1个字节数,RGB通道的九个2阶球谐基系数总占据9个字节数;此外,一个3阶球谐基系数(第四球谐基子系数)同样也占据1个字节数,RGB通道的十五个3阶球谐基系数总占据15个字节数。
通过本申请提供的实施例,在获取到目标探点集合中的各个探点的第三球谐基子系数以及第四球谐基子系数的情况下,将第三球谐基子系数以第一数据格式保存为目标贴图,以及将第四球谐基子系数以第二数据格式保存为目标贴图,其中,第四球谐基子系数是根据第三球谐基子系数计算得到的系数,第一数据格式所占用的字节数大于第二数据格式所占用的字节数,实现了提高球谐基系数的处理效率的效果。
作为一种可选的方案,获取目标虚拟模型与候选探点集合中的各个探点的阻挡度,包括:
S1,对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形,目标虚拟模型被划分成一组三角形:
S2,从当前三角形发出一组检测射线;
S3,确定一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量;
S4,根据一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量、以及一组检测射线中的检测射线的数量,确定当前三角形与候选探点集合中的各个探点的阻挡度。
需要说明的是,对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形,目标虚拟模型被划分成一组三角形:从当前三角形发出一组检测射线;确定一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量;根据一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量、以及一组检测射线中的检测射线的数量,确定当前三角形与候选探点集合中的各个探点的阻挡度.
进一步举例说明,可选的基于图7所示场景,继续例如图14所示,以三角形704为当前三角形举例说明,从三角形704发出一组检测射线;确定一组检测射线中与候选探点集合中的各个探点(如探点706)接触的检测射线的数量;根据一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量、以及一组检测射线中的检测射线的数量,确定三角形704与候选探点集合中的各个探点的阻挡度。
通过本申请提供的实施例,对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形,目标虚拟模型被划分成一组三角形:从当前三角形发出一组检测射线;确定一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量;根据一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量、以及一组检测射线中的检测射线的数量,确定当前三角形与候选探点集合中的各个探点的阻挡度,实现了提高阻挡度的获取准确性的效果。
作为一种可选的方案,获取目标虚拟模型与候选探点集合中的各个探点的阻挡度,包括:获取目标虚拟模型被划分成的各个三角形与候选探点集合中的各个探点的阻挡度;
作为一种可选的方案,根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合,包括:根据目标虚拟模型被划分成的各个三角形与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合,其中,目标探点集合中的各个探点与目标虚拟模型被划分成的各个三角形之间具有索引关系;
作为一种可选的方案,获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染,包括:获取目标探点集合中的各个探点的球谐基系数,并根据索引关系以及目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染。
作为一种可选的方案,获取目标虚拟模型的候选探点集合,包括:
S1,获取目标虚拟模型的原始探点集合,其中,目标虚拟模型被划分成一组三角形,原始探点集合包括一组三角形中的各三角形对应的一个或多个探点;
S2,在原始探点集合中过滤掉无效的探点,得到候选探点集合。
可选地,在本实施例中,过滤掉无效的探点的方式可以但不限于包括过滤掉位于目标虚拟模型的无效区域(如目标虚拟模型的内部、背光部等)的探点、滤掉与目标虚拟模型之间的关联程度低于有效阈值的探点等。
需要说明的是,对原始探点集合中的探点进行过滤,可得到相对优质的探点,更利于后续光照渲染的执行。
进一步举例说明,可选的例如图15所示目标虚拟模型1502的侧切图,对目标虚拟模型1502的所有候选探点,如探点e、探点d,检查上述候选探点是否位于目标虚拟模型1502的内部,具体的d为一个位于目标虚拟模型1502外部的探点,e则为一个位于目标虚拟模型1502内部的探点;此外,对于目标虚拟模型1502内部的探点的光照信息无效,也从候选探点集合中删除。
通过本申请提供的实施例,获取目标虚拟模型的原始探点集合,其中,目标虚拟模型被划分成一组三角形,原始探点集合包括一组三角形中的各三角形对应的一个或多个探点;在原始探点集合中过滤掉无效的探点,得到候选探点集合,实现了提高光照渲染的执行效率的效果。
作为一种可选的方案,为方便理解,将上述虚拟模型的光照渲染方法应用在3D游戏的光照渲染场景中,以提升游戏画质表现与真实感,同时对于在空间上具有曲面形态的模型有更好的效果;
进一步举例说明,可选地如图16所示,上述虚拟模型的光照渲染方法应用在3D游戏的光照渲染场景中的步骤如下述内容所示:
步骤S1602,获取由若干三角形组成的模型;
步骤S1604,生成所有的候选探点;
步骤S1606,去掉无效的候选探点;
步骤S1608,判断候选探点是否都满足筛选条件,若是,则执行步骤S1610,若否,则执行步骤S1606;
步骤S1610,得到所有三角形与所有探点的关联程度;
步骤S1612,判断选出的探点数量是否满足条件,或所有三角形都已关联到至少两个探点,若是,则执行步骤S1618,若否,则执行步骤S1614;
步骤S1614,得到所有三角形与所有探点的关联程度;
步骤S1616,得到所有三角形与所有探点的关联程度;
步骤S1618,得到最终的探点列表。
可选地,在本实施例中,在模型空间,自动计算出若干个探点,其中,模型空间中每个探点的颜色可以但不限于都不一样,且顶点颜色与所关联的最大权重探点相同,顶点线段可以但不限用于表示法线方向;进一步根据计算出来的探点,计算出模型上每个顶点所关联的若干探点以及权重,并将计算出来的探点索引和权重保存在模型顶点数据中;再者,将场景传递到烘焙器烘焙,其中,场景由若干模型组成,同样的模型可能存在多个实例。即,将模型空间下的探点转化到世界空间,利用烘焙器所提供的基础功能计算出探点的受光情况,最终得到光照的球谐系数;
可选地,在本实施例中,在烘焙出来的所有虚拟模型的球谐系数保存为贴图(所有虚拟模型的球谐系数都保存为一个贴图、或一个虚拟模型的球谐系数保存为一个贴图、或多个虚拟模型的球谐系数保存为一个贴图、或多个虚拟模型的球谐系数保存为多个贴图),进一步如图17所示,将虚拟模型1702、虚拟模型1704以及虚拟模型1706的球谐系数保存为目标贴图1708。具体的,采用一定的压缩算法,将系数组装到若干张贴图里面;运行时根据顶点保存的索引和权重数据,采样球谐贴图,得到的系数与法线所对应的基函数做点积便是光照信息。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一个方面,还提供了一种用于实施上述虚拟模型的光照渲染方法的虚拟模型的光照渲染装置。如图18所示,该装置包括:
第一获取单元1802,用于获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;
第二获取单元1804,用于获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;
筛选单元1806,用于根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;
第三获取单元1808,用于获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染。
可选地,在本实施例中,上述虚拟模型的光照渲染装置可以但不限于应用在三维(3Dimensions,简称3D)游戏中的模型渲染场景中,在模型空间找到少量重要的点,从而达到节省内存的目的;具体的,先沿着模型表面生成所有的候选探点,再从中挑选若干个重要的,直到满足需求为止,以利用重要程度较高的探点进行光照渲染,以兼顾光照渲染的效率以及游戏画质表现与真实感的提升;
可选地,在本实施例中,探点可以但不限于理解为在空间中用于采集光照信息的三维空间点,且该三维空间点还用于对目标虚拟模型进行光照渲染。
可选地,在本实施例中,目标虚拟模型可以但不限于被划分为多个三角形进行处理,且每个三角形可以但不限于对应多个顶点,其中,一个顶点可以但不限于关联多个探点,一个探点也可以但不限于关联多个顶点;而获取目标虚拟模型的候选探点集合的过程,也可以但不限理解为获取目标虚拟模型被划分为的每个三角形的候选探点;
此外,在本实施例中,目标虚拟模型可以但不限于被划分为的三角形的面积可以但不限于存在区别,且针对不同的面积,对于三角形的候选探点的获取方式也可以但不限于存在不同,如出于提高性能的考虑,对面积小于或等于目标阈值的三角形,可以但不限于生成第一数量的候选探点(如三角形的质心沿三角形的法线方向做偏移所得到的候选探点),而面积大于目标阈值的三角形,可以但不限于生成第二数量的候选探点,其中,第二数量大于第一数量。
可选地,在本实施例中,目标虚拟模型与候选探点集合中的各个探点的阻挡度可以但不限于理解目标虚拟模型对候选探点集合中的各个探点的阻挡程度,或候选探点集合中的各个探点对目标虚拟模型的阻挡程度,或目标虚拟模型与候选探点集合中的各个探点之间是否有阻挡,若无阻挡,则该阻挡度为0,若有阻挡,则该阻挡度大于0,且具体的阻挡度与该阻挡的程度呈正相关关系;或相反,若无阻挡,则该阻挡度为1,若有阻挡,则该阻挡度小于1且大于0,且具体的阻挡度与该阻挡的程度呈反相关关系。
此外,在目标虚拟模型被划分为多个三角形的情况下,目标虚拟模型与候选探点集合中的各个探点的阻挡度可以但不限于理解为上述多个三角形中的各个三角形与候选探点集合中的各个探点的阻挡度,例如目标虚拟模型被划分为N个三角形,候选探点集合中包括M个探点,则上述多个三角形中的各个三角形与候选探点集合中的各个探点的阻挡度可以但不限于包括(N×M)个阻挡度。
可选地,在本实施例中,对候选探点集合中的探点进行筛选的方式可以但不限于将候选探点集合中的阻挡度大于或等于目标阻挡阈值的探点确定为目标探点集合中的探点。
可选地,在本实施例中,球谐基系数可以但不限于为球谐光照中基函数的系数,或可以但不限于理解为先将光照采样成N个系数,然后在渲染的时候用上述球谐基系数对上述采样到的光照进行还原,以完成渲染。
可选地,在本实施例中,相比于不对候选探点集合中的探点进行筛选直接获取目标探点集合中的各个探点的球谐基系数的方式,在对候选探点集合中的探点进行筛选的基础上,再获取目标探点集合中的各个探点的球谐基系数所需付出的计算量得到一定程度的降低,进而提高了对目标虚拟模型进行光照渲染的效率。
可选地,在本实施例中,在得到目标探点集合之后,将目标探点集合中的探点传递至烘培器中进行烘培,在该烘培器中将目标探点集合中的探点转化为世界空间下的探点,并利用烘培器所提供的基础功能以确定出目标探点集合中的探点的受光情况,进而得到目标探点集合中的探点的球谐基系数,获取目标探点集合中的各个探点的球谐基系数;此外,在目标虚拟模型为目标场景中的若干模型之一的情况下,为提高数据处理效率,可以但不限于将目标场景中所有模型的探点传递至烘培器;
进一步针对该异常情况,可以但不限于对目标探点集合中的探点的目标数据进行记录,其中,目标数据包括以下至少之一:探点到目标虚拟模型的最近距离、探点所能关联的其他探点;进而在烘焙时,如果某个探点因该异常情况导致无效,首先在最近距离范围内找有效的另一探点;如果找不到,则遍历所有能关联的且实际有效的探点,(与距离的平方成反比)进行加权平均。
需要说明的是,获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染,利用目标虚拟模型与候选探点集合中的各个探点的阻挡度对候选探点集合中的探点进行筛选的方式,得到数量更少的重要探点,以降低通过探点的球谐基系数对目标虚拟模型进行光照渲染时的计算量,进而实现了提高虚拟模型的光照渲染效率的技术效果。
具体实施例可以参考上述虚拟模型的光照渲染装置中所示示例,本示例中在此不再赘述。
通过本申请提供的实施例,获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染,利用目标虚拟模型与候选探点集合中的各个探点的阻挡度对候选探点集合中的探点进行筛选的方式,得到数量更少的重要探点,进而达到了降低通过探点的球谐基系数对目标虚拟模型进行光照渲染时的计算量的目的,从而实现了提高虚拟模型的光照渲染效率的技术效果。
作为一种可选的方案,筛选单元1806,包括:
第一确定模块,用于根据一组三角形中的每个三角形与候选探点集合中的各个探点的阻挡度,确定一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,其中,目标虚拟模型被划分成一组三角形;
第一筛选模块,用于根据一组三角形中的每个三角形与候选探点集合中的各个探点的关联度,对候选探点集合中的探点进行筛选,得到目标探点集合。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第一确定模块,包括:
第一执行子模块,用于对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形:
第一确定子模块,用于确定当前三角形投射至一组检测区域中的各个检测区域的投影面积,其中,一组检测区域包括候选探点集合中的各个探点分别对应的检测区域;
第二确定子模块,用于根据当前三角形投射至一组检测区域中的各个检测区域的投影面积以及当前三角形与候选探点集合中的各个探点的阻挡度,确定当前三角形与候选探点集合中的各个探点的关联度。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第一筛选模块,包括:
第二执行子模块,用于重复执行以下步骤,直到一组三角形中的每个三角形都关联有预定数量的探点,其中,目标探点集合包括一组三角形中的每个三角形关联的探点,当前探点集合被初始化为候选探点集合:
第一获取子模块,用于获取当前探点集合中的每个探点与一组三角形的覆盖度,其中,每个探点与一组三角形的覆盖度是每个探点与一组三角形中的每个三角形之间的覆盖度之和,一个探点与一个三角形之间的覆盖度是根据一个三角形与一个探点的关联度确定得到的值;
第二获取子模块,用于在当前探点集合中选取覆盖度最大的探点作为目标探点集合中的探点,并从当前探点集合中删除覆盖度最大的探点,其中,目标探点集合中的探点被根据每个探点与一组三角形中的每个三角形之间的覆盖度与一组三角形中的三角形进行关联。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第一获取子模块,包括:
第一获取子单元,用于在一组三角形中包括未关联探点的第一目标三角形的情况下,获取当前探点集合中的每个探点与每个第一目标三角形的第一覆盖度,其中,一个探点与一个第一目标三角形之间的第一覆盖度是根据一个第一目标三角形与一个探点的关联度得到的值,每个探点与每个第一目标三角形的第一覆盖度是每个探点与每个第一目标三角形之间的第一覆盖度之和,当前探点集合中的每个探点与一组三角形的覆盖度包括每个探点与每个第一目标三角形的第一覆盖度;
第二获取子单元,用于在一组三角形中包括已关联探点的第二目标三角形的情况下,获取当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第二目标三角形之间的第二覆盖度是根据一个第二目标三角形与一个探点的关联度、一个第二目标三角形与另一个探点的关联度、以及目标夹角确定得到的值,每个探点与一组三角形的第二覆盖度是每个探点与每个第二目标三角形之间的第二覆盖度之和,目标夹角是一个探点、一个第二目标三角形的质心以及另一个探点形成的夹角,第二目标三角形已关联的探点包括另一个探点,当前探点集合中的每个探点与一组三角形的覆盖度包括每个探点与每个第二目标三角形的第二覆盖度;
整合子单元,用于在一组三角形中包括第一目标三角形以及第二目标三角形的情况下,整合每个探点与每个第一目标三角形的第一覆盖度以及每个探点与每个第二目标三角形的第二覆盖度,得到当前探点集合中的每个探点与一组三角形的覆盖度。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,整合子单元,包括:
第一子获取单元,用于获取第一目标三角形对应的第一系数、以及第二目标三角形对应的第二系数,其中,第一系数大于第二系数;
第二子获取单元,用于获取第一覆盖度与第一系数的第一乘积值、以及第二覆盖度与第二系数的第二乘积值;
子求和单元,用于求和第一乘积值和第二乘积值,得到当前探点集合中的每个探点与一组三角形的覆盖度。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第二获取子单元,包括:
第一子确定单元,用于在第二目标三角形包括已关联的探点数量等于1个的第一关联三角形的情况下,将当前探点集合中的每个探点与每个第一关联三角形的第三覆盖度确定为当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第一关联三角形之间的第三覆盖度是根据一个第一关联三角形与一个探点的关联度、一个第一关联三角形与第一关联三角形已关联的探点的关联度、以及第一夹角确定得到的值,第一夹角是一个探点、一个第一关联三角形的质心以及第一关联三角形已关联的探点形成的夹角,每个探点与每个第一关联三角形的第三覆盖度是每个探点与每个第一关联三角形之间的第三覆盖度之和;
第二子确定单元,用于在第二目标三角形包括已关联的探点数量大于1个的第二关联三角形的情况下,获取第二关联三角形已关联的探点与第二关联三角形的第四覆盖度、以及当前探点集合中的每个探点与第二关联三角形的第五覆盖度,并在第五覆盖度大于第四覆盖度的情况下,将当前探点集合中的每个探点与第二关联三角形的第五覆盖度确定为当前探点集合中的每个探点与每个第二目标三角形的第二覆盖度,其中,一个探点与一个第二关联三角形之间的第五覆盖度是根据一个第二关联三角形与一个探点的关联度、一个第二关联三角形与第二关联三角形已关联的探点的关联度、以及第二夹角确定得到的值,第二夹角是一个探点、一个第二关联三角形的质心以及第二关联三角形已关联的探点形成的夹角,每个探点与每个第二关联三角形的第五覆盖度是每个探点与每个第二关联三角形之间的第五覆盖度之和。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第一筛选模块,包括:
第三执行子模块,用于对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形:
第三确定子模块,用于在候选探点集合中确定与当前三角形的关联度最大的第一当前探点;
第三获取子模块,用于获取候选探点集合中除第一当前探点之外的各个探点与当前三角形的质心以及第一当前探点形成的夹角,共得到一组夹角;
第四确定子模块,用于根据一组夹角以及当前三角形与除第一当前探点之外的各个探点的关联度,从除第一当前探点之外的各个探点中确定出第二当前探点;
第五确定子模块,用于将第一当前探点以及第二当前探点确定为目标探点集合中的探点。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第三获取单元1808,包括:
保存模块,用于将目标探点集合中的各个探点的球谐基系数保存为目标贴图;
第二确定模块,用于在需要对目标虚拟模型进行渲染时,从目标贴图中确定目标虚拟模型中的各个顶点对应的探点的球谐基系数;
第三确定模块,用于根据目标虚拟模型中的各个顶点对应的探点的球谐基系数,确定目标虚拟模型中的各个顶点的球谐基系数;
渲染模块,用于根据目标虚拟模型中的各个顶点的球谐基系数,对目标虚拟模型进行光照渲染。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,渲染模块,包括:
第四获取子模块,用于在目标虚拟模型属于远景虚拟模型的情况下,获取目标虚拟模型中的各个顶点的第一球谐基子系数,并根据第一球谐基子系数对目标虚拟模型进行光照渲染;
第五获取子模块,用于在目标虚拟模型属于近景虚拟模型的情况下,获取目标虚拟模型中的各个顶点的第二球谐基子系数,并根据第二球谐基子系数对目标虚拟模型进行光照渲染,其中,第二球谐基子系数为根据第一球谐基子系数计算得到的系数。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,保存模块,包括:
保存子模块,用于在获取到目标探点集合中的各个探点的第三球谐基子系数以及第四球谐基子系数的情况下,将第三球谐基子系数以第一数据格式保存为目标贴图,以及将第四球谐基子系数以第二数据格式保存为目标贴图,其中,第四球谐基子系数是根据第三球谐基子系数计算得到的系数,第一数据格式所占用的字节数大于第二数据格式所占用的字节数。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第二获取单元1804,包括:
第四执行子模块,用于对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,每个三角形为当前三角形,目标虚拟模型被划分成一组三角形:
第一检测子模块,用于从当前三角形发出一组检测射线;
第二检测子模块,用于确定一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量;
阻挡子模块,用于根据一组检测射线中与候选探点集合中的各个探点接触的检测射线的数量、以及一组检测射线中的检测射线的数量,确定当前三角形与候选探点集合中的各个探点的阻挡度。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第二获取单元1804,包括:第一获取模块,用于获取目标虚拟模型被划分成的各个三角形与候选探点集合中的各个探点的阻挡度;
筛选单元1806,包括:第二筛选模块,用于根据目标虚拟模型被划分成的各个三角形与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合,其中,目标探点集合中的各个探点与目标虚拟模型被划分成的各个三角形之间具有索引关系;
第三获取单元1808,包括:第二获取模块,用于获取目标探点集合中的各个探点的球谐基系数,并根据索引关系以及目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第一获取单元1802,包括:
第三获取模块,用于获取目标虚拟模型的原始探点集合,其中,目标虚拟模型被划分成一组三角形,原始探点集合包括一组三角形中的各三角形对应的一个或多个探点;
第四获取模块,用于在原始探点集合中过滤掉无效的探点,得到候选探点集合。
具体实施例可以参考上述虚拟模型的光照渲染方法中所示示例,本示例中在此不再赘述。
根据本申请实施例的又一个方面,还提供了一种用于实施上述虚拟模型的光照渲染方法的电子设备,如图19所示,该电子设备包括存储器1902和处理器1904,该存储器1902中存储有计算机程序,该处理器1904被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;
S2,获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;
S3,根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;
S4,获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染。
可选地,本领域普通技术人员可以理解,图19所示的结构仅为示意,电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图19其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图19中所示更多或者更少的组件(如网络接口等),或者具有与图19所示不同的配置。
其中,存储器1902可用于存储软件程序以及模块,如本申请实施例中的虚拟模型的光照渲染方法和装置对应的程序指令/模块,处理器1904通过运行存储在存储器1902内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的虚拟模型的光照渲染方法。存储器1902可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1902可进一步包括相对于处理器1904远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1902具体可以但不限于用于存储候选探点集合、阻挡度以及目标探点集合等信息。作为一种示例,如图19所示,上述存储器1902中可以但不限于包括上述虚拟模型的光照渲染装置中的第一获取单元1802、第二获取单元1804、筛选单元1806及第三获取单元1808。此外,还可以包括但不限于上述虚拟模型的光照渲染装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1906用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1906包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1906为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1908,用于显示上述第候选探点集合、阻挡度以及目标探点集合等信息;和连接总线1910,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(Peer To Peer,简称P2P)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理器执行时,执行本申请实施例提供的各种功能。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,电子设备的计算机系统仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
计算机系统包括中央处理器(Central Processing Unit,CPU),其可以根据存储在只读存储器(Read-Only Memory,ROM)中的程序或者从存储部分加载到随机访问存储器(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器中,还存储有系统操作所需的各种程序和数据。中央处理器、在只读存储器以及随机访问存储器通过总线彼此相连。输入/输出接口(Input/Output接口,即I/O接口)也连接至总线。
以下部件连接至输入/输出接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至输入/输出接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理器执行时,执行本申请的系统中限定的各种功能。
根据本申请的一个方面,提供了一种计算机可读存储介质,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取目标虚拟模型的候选探点集合,其中,侯选探点集合中的探点用于对目标虚拟模型进行光照渲染;
S2,获取目标虚拟模型与候选探点集合中的各个探点的阻挡度;
S3,根据目标虚拟模型与候选探点集合中的各个探点的阻挡度,对候选探点集合中的探点进行筛选,得到目标探点集合;
S4,获取目标探点集合中的各个探点的球谐基系数,并根据目标探点集合中的各个探点的球谐基系数,对目标虚拟模型进行光照渲染。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (18)

1.一种虚拟模型的光照渲染方法,其特征在于,包括:
获取目标虚拟模型的候选探点集合,其中,所述侯选探点集合中的探点用于对所述目标虚拟模型进行光照渲染;
获取所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度;
根据所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度,对所述候选探点集合中的探点进行筛选,得到目标探点集合;
获取所述目标探点集合中的各个探点的球谐基系数,并根据所述目标探点集合中的各个探点的球谐基系数,对所述目标虚拟模型进行光照渲染。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度,对所述候选探点集合中的探点进行筛选,得到目标探点集合,包括:
根据一组三角形中的每个三角形与所述候选探点集合中的各个探点的阻挡度,确定所述一组三角形中的每个三角形与所述候选探点集合中的各个探点的关联度,其中,所述目标虚拟模型被划分成所述一组三角形;
根据所述一组三角形中的每个三角形与所述候选探点集合中的各个探点的关联度,对所述候选探点集合中的探点进行筛选,得到所述目标探点集合。
3.根据权利要求2所述的方法,其特征在于,所述根据一组三角形中的每个三角形与所述候选探点集合中的各个探点的阻挡度,确定所述一组三角形中的每个三角形与所述候选探点集合中的各个探点的关联度,包括:
对于所述一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,所述每个三角形为当前三角形:
确定所述当前三角形投射至一组检测区域中的各个检测区域的投影面积,其中,所述一组检测区域包括所述候选探点集合中的各个探点分别对应的检测区域;
根据所述当前三角形投射至一组检测区域中的各个检测区域的投影面积以及所述当前三角形与所述候选探点集合中的各个探点的阻挡度,确定所述当前三角形与所述候选探点集合中的各个探点的关联度。
4.根据权利要求2所述的方法,其特征在于,所述根据所述一组三角形中的每个三角形与所述候选探点集合中的各个探点的关联度,对所述候选探点集合中的探点进行筛选,得到所述目标探点集合,包括:
重复执行以下步骤,直到所述一组三角形中的每个三角形都关联有预定数量的探点,其中,所述目标探点集合包括所述一组三角形中的每个三角形关联的探点,当前探点集合被初始化为所述候选探点集合:
获取所述当前探点集合中的每个探点与所述一组三角形的覆盖度,其中,所述每个探点与所述一组三角形的覆盖度是所述每个探点与所述一组三角形中的每个三角形之间的覆盖度之和,一个探点与一个三角形之间的覆盖度是根据所述一个三角形与所述一个探点的关联度确定得到的值;
在所述当前探点集合中选取所述覆盖度最大的探点作为所述目标探点集合中的探点,并从所述当前探点集合中删除所述覆盖度最大的探点,其中,所述目标探点集合中的探点被根据所述每个探点与所述一组三角形中的每个三角形之间的覆盖度与所述一组三角形中的三角形进行关联。
5.根据权利要求4所述的方法,其特征在于,所述获取所述当前探点集合中的每个探点与所述一组三角形的覆盖度,包括:
在所述一组三角形中包括未关联探点的第一目标三角形的情况下,获取所述当前探点集合中的每个探点与每个所述第一目标三角形的第一覆盖度,其中,所述一个探点与一个所述第一目标三角形之间的第一覆盖度是根据一个所述第一目标三角形与所述一个探点的关联度得到的值,所述每个探点与每个所述第一目标三角形的第一覆盖度是所述每个探点与每个所述第一目标三角形之间的第一覆盖度之和,所述当前探点集合中的每个探点与所述一组三角形的覆盖度包括所述每个探点与每个所述第一目标三角形的第一覆盖度;
在所述一组三角形中包括已关联探点的第二目标三角形的情况下,获取所述当前探点集合中的每个探点与每个所述第二目标三角形的第二覆盖度,其中,所述一个探点与一个所述第二目标三角形之间的第二覆盖度是根据一个所述第二目标三角形与所述一个探点的关联度、一个所述第二目标三角形与另一个探点的关联度、以及目标夹角确定得到的值,所述每个探点与所述一组三角形的第二覆盖度是所述每个探点与每个所述第二目标三角形之间的第二覆盖度之和,所述目标夹角是所述一个探点、一个所述第二目标三角形的质心以及所述另一个探点形成的夹角,所述第二目标三角形已关联的探点包括所述另一个探点,所述当前探点集合中的每个探点与所述一组三角形的覆盖度包括所述每个探点与每个所述第二目标三角形的第二覆盖度;
在所述一组三角形中包括所述第一目标三角形以及所述第二目标三角形的情况下,整合所述每个探点与每个所述第一目标三角形的第一覆盖度以及所述每个探点与每个所述第二目标三角形的第二覆盖度,得到所述当前探点集合中的每个探点与所述一组三角形的覆盖度。
6.根据权利要求5所述的方法,其特征在于,所述整合所述每个探点与每个所述第一目标三角形的第一覆盖度以及所述每个探点与每个所述第二目标三角形的第二覆盖度,得到所述当前探点集合中的每个探点与所述一组三角形的覆盖度,包括:
获取所述第一目标三角形对应的第一系数、以及所述第二目标三角形对应的第二系数,其中,所述第一系数大于所述第二系数;
获取所述第一覆盖度与所述第一系数的第一乘积值、以及所述第二覆盖度与所述第二系数的第二乘积值;
求和所述第一乘积值和所述第二乘积值,得到所述当前探点集合中的每个探点与所述一组三角形的覆盖度。
7.根据权利要求5所述的方法,其特征在于,所述获取所述当前探点集合中的每个探点与每个所述第二目标三角形的第二覆盖度,包括:
在所述第二目标三角形包括已关联的探点数量等于1个的第一关联三角形的情况下,将所述当前探点集合中的每个探点与每个所述第一关联三角形的第三覆盖度确定为所述当前探点集合中的每个探点与每个所述第二目标三角形的第二覆盖度,其中,所述一个探点与一个所述第一关联三角形之间的第三覆盖度是根据一个所述第一关联三角形与所述一个探点的关联度、一个所述第一关联三角形与所述第一关联三角形已关联的探点的关联度、以及第一夹角确定得到的值,所述第一夹角是所述一个探点、所述一个所述第一关联三角形的质心以及所述所述第一关联三角形已关联的探点形成的夹角,所述每个探点与每个所述第一关联三角形的第三覆盖度是所述每个探点与每个所述第一关联三角形之间的第三覆盖度之和;
在所述第二目标三角形包括已关联的探点数量大于1个的第二关联三角形的情况下,获取所述第二关联三角形已关联的探点与所述第二关联三角形的第四覆盖度、以及所述当前探点集合中的每个探点与所述第二关联三角形的第五覆盖度,并在所述第五覆盖度大于所述第四覆盖度的情况下,将所述当前探点集合中的每个探点与所述第二关联三角形的第五覆盖度确定为所述当前探点集合中的每个探点与每个所述第二目标三角形的第二覆盖度,其中,所述一个探点与一个所述第二关联三角形之间的第五覆盖度是根据一个所述第二关联三角形与所述一个探点的关联度、一个所述第二关联三角形与所述第二关联三角形已关联的探点的关联度、以及第二夹角确定得到的值,所述第二夹角是所述一个探点、所述一个所述第二关联三角形的质心以及所述所述第二关联三角形已关联的探点形成的夹角,所述每个探点与每个所述第二关联三角形的第五覆盖度是所述每个探点与每个所述第二关联三角形之间的第五覆盖度之和。
8.根据权利要求2所述的方法,其特征在于,所述根据所述一组三角形中的每个三角形与所述候选探点集合中的各个探点的关联度,对所述候选探点集合中的探点进行筛选,得到所述目标探点集合,包括:
对于所述一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,所述每个三角形为当前三角形:
在所述候选探点集合中确定与所述当前三角形的关联度最大的第一当前探点;
获取所述候选探点集合中除所述第一当前探点之外的各个探点与所述当前三角形的质心以及所述第一当前探点形成的夹角,共得到一组夹角;
根据所述一组夹角以及所述当前三角形与除所述第一当前探点之外的各个探点的关联度,从除所述第一当前探点之外的各个探点中确定出第二当前探点;
将所述第一当前探点以及所述第二当前探点确定为所述目标探点集合中的探点。
9.根据权利要求1所述的方法,其特征在于,所述根据所述目标探点集合中的各个探点的球谐基系数,对所述目标虚拟模型进行光照渲染,包括:
将所述目标探点集合中的各个探点的球谐基系数保存为目标贴图;在需要对所述目标虚拟模型进行渲染时,从所述目标贴图中确定所述目标虚拟模型中的各个顶点对应的探点的球谐基系数;
根据所述目标虚拟模型中的各个顶点对应的探点的球谐基系数,确定所述目标虚拟模型中的各个顶点的球谐基系数;
根据所述目标虚拟模型中的各个顶点的球谐基系数,对所述目标虚拟模型进行光照渲染。
10.根据权利要求9所述的方法,其特征在于,所述根据所述目标虚拟模型中的各个顶点的球谐基系数,对所述目标虚拟模型进行光照渲染,包括:
在所述所述目标虚拟模型属于远景虚拟模型的情况下,获取所述目标虚拟模型中的各个顶点的第一球谐基子系数,并根据所述第一球谐基子系数对所述目标虚拟模型进行光照渲染;
在所述所述目标虚拟模型属于近景虚拟模型的情况下,获取所述目标虚拟模型中的各个顶点的第二球谐基子系数,并根据所述第二球谐基子系数对所述目标虚拟模型进行光照渲染,其中,所述第二球谐基子系数为根据所述第一球谐基子系数计算得到的系数。
11.根据权利要求9所述的方法,其特征在于,所述将所述目标探点集合中的各个探点的球谐基系数保存为目标贴图,包括:
在获取到所述目标探点集合中的各个探点的第三球谐基子系数以及第四球谐基子系数的情况下,将所述第三球谐基子系数以第一数据格式保存为所述目标贴图,以及将所述第四球谐基子系数以第二数据格式保存为所述目标贴图,其中,所述第四球谐基子系数是根据所述第三球谐基子系数计算得到的系数,所述第一数据格式所占用的字节数大于所述第二数据格式所占用的字节数。
12.根据权利要求1至11中任一项所述的方法,其特征在于,所述获取所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度,包括:
对于一组三角形中的每个三角形,执行以下步骤,其中,在执行以下步骤时,所述每个三角形为当前三角形,所述目标虚拟模型被划分成所述一组三角形:
从所述当前三角形发出一组检测射线;
确定所述一组检测射线中与所述候选探点集合中的各个探点接触的检测射线的数量;
根据所述一组检测射线中与所述候选探点集合中的各个探点接触的检测射线的数量、以及所述一组检测射线中的检测射线的数量,确定所述当前三角形与所述候选探点集合中的各个探点的阻挡度。
13.根据权利要求1至11中任一项所述的方法,其特征在于,
所述获取所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度,包括:获取所述目标虚拟模型被划分成的各个三角形与所述候选探点集合中的各个探点的阻挡度;
所述根据所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度,对所述候选探点集合中的探点进行筛选,得到目标探点集合,包括:根据所述目标虚拟模型被划分成的各个三角形与所述候选探点集合中的各个探点的阻挡度,对所述候选探点集合中的探点进行筛选,得到所述目标探点集合,其中,所述目标探点集合中的各个探点与所述目标虚拟模型被划分成的各个三角形之间具有索引关系;
所述获取所述目标探点集合中的各个探点的球谐基系数,并根据所述目标探点集合中的各个探点的球谐基系数,对所述目标虚拟模型进行光照渲染,包括:获取所述目标探点集合中的各个探点的球谐基系数,并根据所述索引关系以及所述目标探点集合中的各个探点的球谐基系数,对所述目标虚拟模型进行光照渲染。
14.根据权利要求1至11中任一项所述的方法,其特征在于,所述获取目标虚拟模型的候选探点集合,包括:
获取所述目标虚拟模型的原始探点集合,其中,所述目标虚拟模型被划分成一组三角形,所述原始探点集合包括所述一组三角形中的各三角形对应的一个或多个探点;
在所述原始探点集合中过滤掉无效的探点,得到所述候选探点集合。
15.一种虚拟模型的光照渲染装置,其特征在于,包括:
第一获取单元,用于获取目标虚拟模型的候选探点集合,其中,所述侯选探点集合中的探点用于对所述目标虚拟模型进行光照渲染;
第二获取单元,用于获取所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度;
筛选单元,用于根据所述目标虚拟模型与所述候选探点集合中的各个探点的阻挡度,对所述候选探点集合中的探点进行筛选,得到目标探点集合;
第三获取单元,用于获取所述目标探点集合中的各个探点的球谐基系数,并根据所述目标探点集合中的各个探点的球谐基系数,对所述目标虚拟模型进行光照渲染。
16.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序可被终端设备或计算机运行时执行所述权利要求1至14任一项中所述的方法。
17.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至14任一项中所述方法的步骤。
18.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至14任一项中所述的方法。
CN202210344256.9A 2022-04-02 2022-04-02 虚拟模型的光照渲染方法、装置和存储介质及电子设备 Pending CN116934947A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210344256.9A CN116934947A (zh) 2022-04-02 2022-04-02 虚拟模型的光照渲染方法、装置和存储介质及电子设备
PCT/CN2023/075919 WO2023185287A1 (zh) 2022-04-02 2023-02-14 虚拟模型的光照渲染方法、装置和存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210344256.9A CN116934947A (zh) 2022-04-02 2022-04-02 虚拟模型的光照渲染方法、装置和存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN116934947A true CN116934947A (zh) 2023-10-24

Family

ID=88199169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210344256.9A Pending CN116934947A (zh) 2022-04-02 2022-04-02 虚拟模型的光照渲染方法、装置和存储介质及电子设备

Country Status (2)

Country Link
CN (1) CN116934947A (zh)
WO (1) WO2023185287A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10008032B2 (en) * 2015-03-03 2018-06-26 Imagination Technologies Limited Graphics processing using directional representations of lighting at probe positions within a scene
CA2944435C (en) * 2016-10-04 2024-01-09 Square Enix, Ltd. Methods, systems and computer-readable media for diffuse global illumination using probes
US11694392B2 (en) * 2018-05-22 2023-07-04 Apple Inc. Environment synthesis for lighting an object
CN113694516B (zh) * 2020-05-20 2023-09-15 福建天晴在线互动科技有限公司 一种基于光照环境实时切换烘焙数据的方法及其系统
CN115120970A (zh) * 2022-04-28 2022-09-30 腾讯科技(深圳)有限公司 虚拟场景的烘焙方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
WO2023185287A1 (zh) 2023-10-05

Similar Documents

Publication Publication Date Title
CN116188808B (zh) 图像特征提取方法和系统、存储介质及电子设备
CN108063946B (zh) 图像编码方法和装置、存储介质及电子装置
CN113313832B (zh) 三维模型的语义生成方法、装置、存储介质与电子设备
CN110335330A (zh) 图像模拟生成方法及其系统、深度学习算法训练方法及电子设备
CN110070579A (zh) 基于图像检测的定位方法、装置、设备和存储介质
US20230125255A1 (en) Image-based lighting effect processing method and apparatus, and device, and storage medium
US10921131B1 (en) Systems and methods for interactive digital maps
CN115546331A (zh) 一种数据渲染方法、装置、电子设备及计算机可读介质
CN107507255B (zh) 图片压缩质量因子获取方法、系统、设备及存储介质
CN110717405B (zh) 人脸特征点定位方法、装置、介质及电子设备
CN111899323A (zh) 三维地球的绘制方法及装置
JP7432793B1 (ja) 三次元点群に基づくマッピング方法、装置、チップ及びモジュール機器
CN111753038A (zh) 一种地图数据的渲染方法及系统
CN116934947A (zh) 虚拟模型的光照渲染方法、装置和存储介质及电子设备
CN113034658A (zh) 一种模型贴图的生成方法和装置
CN114598883A (zh) 点云属性的预测方法、编码器、解码器及存储介质
CN110895699B (zh) 用于处理图像的特征点的方法和装置
CN112969027B (zh) 电动镜头的聚焦方法和装置、存储介质及电子设备
WO2023185317A1 (zh) 虚拟地形的光照渲染方法、装置、介质、设备和程序产品
CN114782249A (zh) 一种图像的超分辨率重建方法、装置、设备以及存储介质
CN115880416A (zh) 三维模型的显示方法、装置、服务器及存储介质
CN113706543A (zh) 一种三维位姿的构建方法、设备及存储介质
CN108347451B (zh) 图片处理系统、方法和装置
WO2016055100A1 (en) Supporting magnetic flux density based positioning
CN113141495A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40098469

Country of ref document: HK