1.本发明涉及基于物理的真实感实时渲染领域,具体涉及一种用于半透明材质渲染的次表面散射计算方法。
背景技术:
2.目前在许多关于皮肤渲染的应用领域中,例如游戏,vr(virtual reality,虚拟现实)交互等需要实时渲染物体的场景下,在更短的时间内进行更加精确的半透明物体渲染是一个十分重要的问题。在对于现实世界的物体真实感渲染中,由kajiya提出的渲染方程,即一般所指的brdf(bidirectional reflectance distribution function,双向反射分布函数)计算模型仅仅只能考虑光在表面上的传输行为,由此引入的解决方案就是次表面散射。如何对半透明物体上的次表面散射现象进行高效而准确的计算是计算机图形学的一个重要研究方向。
3.在多年的发展之中,尽管期间不乏有人将其他领域与次表面散射相结合(如机器学习),但是针对次表面散射的研究主要可分为四个方面:介质内部的光线追踪,基于物理的解析式模型,实时计算优化,捕获与重渲染。光线追踪通过对大量光子的路径进行贡献累计进行出射辐射的计算,尽管其是理论上最精确的计算结果,但需要大量的计算时间。基于物理的解析式通过对辐射传输方程进行推导和近似求解来得到反射剖面,尽管计算时间较短,但其计算式对于实时计算而言仍显复杂。捕获与重渲染方法尽管能兼具高效性与精确性,但需要大量的数据存储且对于绘制对象有一定的限制。这些缺陷限制了相关方面在实际领域中的应用。
技术实现要素:
4.对于次表面散射计算的实时优化方面,具有代表性的工作是jimenez等人的可分离次表面散射和christensen等人的规范化剖面,两者的基本思想都是对复杂的次表面计算式进行简化,并在屏幕空间上执行计算。但相关的模型都无法精确地对最大散射距离有一个明确的定义,其中jimenez等人使用固定的最大散射距离进行采样点的选取,导致计算结果的同质性以及对低反射区域的模糊过度。christensen等人对最大散射距离的假设为无限远,可能导致样本点与表面点的距离极大,造成计算结果的误差。本发明提出了一种新的次表面散射计算模型,提出一个简单的多项式数学模型能较为精确地拟合蒙特卡洛光子追踪的计算结果,且最大散射距离能直接通过一个简单的除法进行计算。通过使用平均自由程和单散射率对拟合式进行计算,并通过本发明提出的新重要性采样方案在屏幕空间上进行蒙特卡洛计算,可克服散射范围估计错误的问题,实现对半透明物体的精确渲染。
5.本发明解决的技术问题是:解决了原先对于散射范围的错误估计以及不明确定义问题,以使样本点的分布更加准确,避免了次表面散射计算中的模糊过渡以及错误模糊问题。使用发明提出的新的次表面计算模型以及对应的重要性采样方案能有效对半透明物体,尤其是其中的低反射率区域进行精确的绘制,满足了次表面散射计算的准确性和实时
性。
6.本发明采用的技术方案为:用于半透明材质渲染的次表面散射计算方法,包括以下五个步骤:
7.步骤1:采用目前已开源的暴力蒙特卡洛光子追踪器mcml,将输入文件参数定义为一个上中下三层物体,并使用相似性理论考虑各向异性,通过对输出数据进行裁剪以避免零值数据对拟合的误差影响,并最终对裁剪后的数据进行特定多项式函数的拟合,得到若干组拟合结果,其中,上中下三层物体中的上下层为空气层,上中下三层物体中的中间层为测量层,测量层的厚度设定为1.0e 8以避免透射辐射的影响,e表示10的幂,折射系数η均设置为1以避免折射系数的影响,η表示折射系数,各向异性参数g设置为0,g表示各向异性参数;
8.步骤2:通过步骤1中所得到的若干组拟合结果,使用特定的输入参数对多项式中的未知项进行关系确定,基于所选用的拟合多项式,需要分别进行分子系数项、分子常数项和分母常数项的确定,得到反射剖面计算式,其中,所选用的输入参数是基于艺术家友好性的考虑选用的物体表面的总漫反射率与物体材质的平均自由程;
9.步骤3:根据步骤2得到的反射剖面计算式,对反射剖面计算式计算累积分布函数cdf,并对cdf求逆以得到重要性采样式,其中,cdf的逆没有数值解,需通过拟合的方式进行近似求解,重要性采样式不依赖于具体的剖面计算式,重要性采样式与平均自由程和单散射率相关;
10.步骤4:在运行阶段,基于步骤2得到的反射剖面计算式和步骤3得到的重要性采样式,在屏幕空间上采样若干个样本点,并使用蒙特卡洛计算物体表面点的次表面散射影响部分的出射辐射;
11.步骤5:将次表面散射影响部分与高光影响部分和透射光影响部分相混合,并进行后续的后处理步骤,实现对半透明物体的最终绘制。
12.本发明的原理在于:
13.本发明提出了用于半透明材质渲染的次表面散射计算方法。此方法的剖面精确性体现在拟合对象为暴力蒙特卡洛光子追踪器mcml,通过恰当的参数设置以及1.0e 6数量级的光子模拟,可精确表示辐射在各散射距离处的衰减,并经由特定的多项式进行拟合,所以尽管此计算模型并非基于物理,但比大多基于物理的模型准确。此方法的散射范围精确性体现在所选用的多项式拟合模型上,通过多项式的分子部分,可精确计算此多项式将于何处减小至0,并以此处作为最大散射距离,以此确认散射范围。
14.此方法的艺术家友好性体现在对输入参数的设置上,此方法中将输入参数设置为总漫反射率以及平均自由程。其中前者通常在实际领域使用中作为反射率贴图进行存储,而对于后者,时常假定在同一材质中保持恒定,所以不需存储额外的贴图。由于mcml的直接影响因素为单散射率,所以需要一步额外的计算将总漫反射率转化为单散射率,以体现参数对剖面结果的直接影响。在蒙特卡洛的路径追踪过程中,光子的能量衰减仅与每一次碰撞事件发生时的单散射率有关,而与路径长度无关,导致总漫反射率与单散射率呈一一对应关系,mcml的实验结果也证明了上述理论。
15.此方法的实时性体现在基于屏幕空间的计算上,在绘制过程中,不需对物体所有表面点均计算次表面散射,可以计算可见的表面点,即屏幕空间上显示的像素点,从而显著
加快计算速度。由于透视投影影响,大深度值处的物体距离在屏幕空间上的体现比小深度距离的物体要更短,所以不能直接使用采样距离作为屏幕空间两点的实际距离,而应该先对采样距离做一步投影计算。
16.本发明的有益积极效果是:
17.(1)本发明提出了一个将总漫反射率转化为单散射率的简单拟合计算式,代替了原先在两者之间的复杂的转化计算,以快速得到所需的参数,利于后续的剖面计算。
18.(2)本发明提出了一个新的反射剖面的多项式计算模型,以精确计算最大散射距离,避免了对散射范围的错误估计和采样点的不正确分布,使渲染效果更加精确。
19.(3)本发明提出了一个取决于平均自由程和单散射率的的累积分布函数cdf的逆函数近似式,以进行重要性采样计算,这个式子不依托于具体的剖面计算模型,所以同样适用于其他任何形式的反射剖面计算方法。
附图说明
20.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
21.图1为本发明的用于半透明材质渲染的次表面散射计算方法的一些实施例的流程图;
22.图2为蒙特卡洛光子追踪器的结果(左)与本发明中反射剖面(右)的对比图;
23.图3为本发明中算法在人脸上低反射率区域(如胡子)的渲染结果(上)与可分离次表面散射算法的结果(下)对比;
24.图4为本发明算法在人手部物体的表现;
25.图5为本发明算法在大理石雕像上的表现。
具体实施方式
26.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
27.另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
28.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
29.下面将参考附图并结合实施例来详细说明本公开。
30.如图1所示,用于半透明材质渲染的次表面散射计算方法,包括以下五个步骤:
31.步骤1:采用目前已开源的暴力蒙特卡洛光子追踪器mcml,将输入文件参数定义为一个上中下三层物体,并使用相似性理论考虑各向异性,通过对输出数据进行裁剪以避免零值数据对拟合的误差影响,并最终对裁剪后的数据进行特定多项式函数的拟合,得到若干组拟合结果,其中,上中下三层物体中的上下层为空气层,上中下三层物体中的中间层为
测量层,测量层的厚度设定为1.0e 8以避免透射辐射的影响,e表示10的幂,折射系数η均设置为1以避免折射系数的影响,η表示折射系数,各向异性参数g设置为0,g表示各向异性参数。mcml(brute
‑
force monte carlo simulation,暴力蒙特卡洛光子追踪器)是一个c语言的光子追踪模拟程序,用于模拟光子进入物体内部后,再重新出射时的能量损失。因为没有使用优化方法,所以被叫做暴力蒙特卡洛光子追踪器。相似性理论指的是光子在物体体积内部发生粒子碰撞时,视物体的材质性质,其散射向各个方向的概率可能相等(各向同性),也可能不相等(各项异性)。其中,各向异性的考虑非常复杂,所以可用相似性理论将其视作一个各向同性材质。具体来说,就是物体材质有散射率和吸收率。对于某一散射率吸收率的各向异性材质物体,可用另一不同吸收率散射率的各向同性材质代替考虑。零值数据可以是获取的数据数值为0的数据。
32.作为示例,对于输出数据,需要对其沿散射距离执行最大散射距离的判断,并进行裁剪操作以避免零值数据对拟合的误差影响,并最终对裁剪后的数据进行特定多项式函数的拟合。
33.在一些实施例的一些可选的实现方式中,上述采用目前已开源的暴力蒙特卡洛光子追踪器mcml,将输入文件参数定义为一个上中下三层物体,并使用相似性理论考虑各向异性,通过对输出数据进行裁剪以避免零值数据对拟合的误差影响,可以包括以下步骤:
34.第一步,对于坐标轴上的散射距离r,从r=0开始,每增加一段特定间隔,执行一次当前r是否为最大散射距离的判断,其中,此特定间隔称为裁剪间隔,裁剪间隔会随着最大散射距离的减小而减少,其中,判断公式如下:
35.rd(r
′
max
)≤rd(0)
×
∈。
36.其中,rd()表示反射剖面值。r表示散射距离。r
′
max
表示拟合过程中选取的最大散射距离。rd(r
′
max
)表示r
′
max
处的反射剖面值。rd(0)表示光子在坐标轴原点处反射剖面值。∈表示决定选取最大散射距离r=r
′
max
时的精细程度。∈的取值设定为0.005。
37.其中,裁剪间隔的确定如下:当r
′
max
∈0~0.5时,裁剪间隔为0.05。当r
′
max
∈0.5~1时,裁剪间隔为0.1。当r
′
max
∈1~2时,裁剪间隔为0.2。当r
′
max
∈2~5时,裁剪间隔为0.5。当r
′
max
>5时,裁剪间隔为1。当前散射距离r满足上式条件时,则认定此r为拟合过程中选取的最大散射距离r
′
max
。并对r
′
max
之后的数据进行去除。对r
′
max
之前的数据进行数据拟合。所选用的拟合多项式如下:
[0038][0039]
其中,rd(r)表示r的反射剖面值。r表示散射距离。rd()表示反射剖面值。a表示分子系数项。b表示分子常数项。c表示分母常数项。
[0040]
第二步,基于此式,材质的散射范围可精确计算,最大散射距离r
max
的计算式如下:
[0041][0042]
其中,r
max
表示实际计算的最大散射距离。r表示散射距离,max表示最大值。a表示
分子系数项。b表示分子常数项。表示分子常数项与分子系数项的比值的相反数。
[0043]
步骤2:通过步骤1中所得到的若干组拟合结果,使用特定的输入参数对多项式中的未知项进行关系确定,基于所选用的拟合多项式,需要分别进行分子系数项、分子常数项和分母常数项的确定,得到反射剖面计算式。其中,所选用的输入参数是基于艺术家友好性的考虑选用的物体表面的总漫反射率与物体材质的平均自由程。艺术家友好性指的是即使对于非专业技术人员的美术工作者或其他用户,也能通过简单易懂的参数控制,来调整最终的渲染效果的特性。总漫反射率可以是光在物体表面上的反射率,但是因为半透明物体的特殊性质,光在某一表面点进入物体后,会在多个其他表面点出射,将所有表面点的出射能量相加,即为总漫反射率。在次表面散射中,平均自由程可以是一种参数表示,平均自由程=1/(材质散射率 材质吸收率)。
[0044]
作为示例,基于艺术家友好性的考虑,所选用的输入参数为物体表面的总漫反射率与物体材质的平均自由程。由于输出数据直接决定于单散射率,所以需要一步额外计算以将总漫反射率转化为单散射率。基于所选用的拟合多项式,需要分别进行分子系数项,分子常数项,分母常数项的确定。最终得到可由总漫反射率与平均自由程进行计算的反射剖面计算模型。
[0045]
在一些实施例的一些可选的实现方式中,上述通过步骤1中所得到的若干组拟合结果,使用特定的输入参数对多项式中的未知项进行关系确定,基于所选用的拟合多项式,需要分别进行分子系数项、分子常数项和分母常数项的确定,得到反射剖面计算式,可以包括以下步骤:
[0046]
第一步,将总漫反射率与单散射率间的复杂计算关系进行简单拟合表示,计算公式如下:
[0047][0048]
其中,α表示单散射率。a表示总漫反射率。a2表示总漫反射率的平方。
[0049]
第二步,对分子系数项的关系进行确定,计算公式如下:
[0050][0051]
其中,a表示分子系数项。α表示单散射率。l表示平均自由程。
[0052]
第三步,对分子常数项的关系进行确定,计算公式如下:
[0053][0054]
其中,b表示分子常数项。α表示单散射率。
[0055]
第四步,对分母常数项的关系进行确定,计算公式如下:
[0056]
c=0.0097
×
l
×
exp(4.2
×
α) 0.166
×
l。
[0057]
其中,c表示分母常数项。l表示平均自由程。exp()表示以e为底的指数函数。e表示
自然常数。α表示单散射率。
[0058]
第五步,通过总漫反射率与平均自由程计算各散射距离处的反射剖面值。
[0059]
作为示例,将计算得到的分子系数项、分子常数项和分母常数项代入公式可以得到各散射距离处的反射剖面值。
[0060]
步骤3:根据步骤2得到的反射剖面计算式,对反射剖面计算式计算累积分布函数cdf,并对cdf求逆以得到重要性采样式,其中,cdf的逆没有数值解,需通过拟合的方式进行近似求解,重要性采样式不依赖于具体的剖面计算式,重要性采样式与平均自由程和单散射率相关。单散射率与总漫反射率有所区别,光子会在物体内部发生多次碰撞,每次碰撞都会损失固定比例能量,总漫反射率可以作为多次碰撞后的综合结果,单散射率则是每次碰撞时的固定反射率。
[0061]
作为示例,根据以得到的反射剖面对其计算累积分布函数cdf,并对cdf求逆以得到重要性采样式。因为此cdf的逆无数值解,所以需通过拟合的方式进行近似求解。为了保持反射剖面的规范性,需要使用修正计算以使cdf在实际计算的最大散射距离处恰好为1。此重要性采样式不依赖于具体的剖面计算式。重要性采样式与平均自由程和单散射率相关。
[0062]
在一些实施例的一些可选的实现方式中,上述根据步骤2得到的反射剖面计算式,对反射剖面计算式计算累积分布函数cdf,并对cdf求逆以得到重要性采样式,可以包括以下步骤:
[0063]
第一步,对于计算得到的反射剖面值rd(r),对作为变量的r做[0,r
max
]区间内的积分计算,以求得累计分布函数,计算公式如下:
[0064][0065]
其中,cdf(r)表示r的累计分布函数。r表示散射距离。cdf()表示累计分布函数。a表示分子系数项。b表示分子常数项。c表示分母常数项。ln()表示以e为底的对数。e表示自然常数。a表示总漫反射率。π表示圆周率。
[0066]
第二步,基于反射剖面值rd(r)的规范性,此cdf在r
max
处时取值为1。其中,由于剖面计算式是基于近似拟合的计算式,不一定满足cdf在r
max
处时取值为1的条件,需对反射剖面作修正以满足规范性,修正公式如下:
[0067][0068]
其中,rd
co
(r)表示r的修正之后符合能量守恒的反射剖面。r表示散射距离。rd
co
()表示修正之后符合能量守恒的反射剖面。rd(r)表示r的反射剖面值。cdf(r
max
)表示r
max
的累计分布函数。cdf()表示累计分布函数。r
max
表示最大散射距离。cdf_co(r)表示r的修正后的累计分布函数。cdf_co()表示修正后的累计分布函数。cdf(r)表示r的累计分布函数。
[0069]
第三步,对此cdf求逆以得到重要性采样式,其中,此cdf的逆函数没有数值表示,需要使用函数拟合的手段进行近似表示,为使此重要性采样式不依赖于具体的剖面计算式,且满足艺术家友好性,将输入参数定为单散射率与平均自由程,采样式如下:
[0070][0071]
其中,g(ξ)表示对散射距离r的采样计算式。ξ表示[0,1]之间的随机数。k1表示参数平均自由程l和单散射率α之间的第一关联式。k2表示参数平均自由程l和单散射率α之间的第二关联式。表示开方运算。ln()表示以e为底的对数。e表示自然常数。l表示平均自由程。α表示单散射率。
[0072]
第四步,将采样距离限制在散射范围之内,计算式如下:
[0073]
r’=min(g(ξ),r
max
)。
[0074]
其中,r’表示采样距离。g(ξ)表示对散射距离r的采样计算式。r
max
表示最大散射距离。min(,)表示求两个数值中的最小值。
[0075]
第五步,经由上式计算采样距离,并进而得到若干采样点,以此进行后续的蒙特卡洛计算以得到出射辐射。
[0076]
步骤4:在运行阶段,基于步骤2得到的反射剖面计算式和步骤3得到的重要性采样式,在屏幕空间上采样若干个样本点,并使用蒙特卡洛计算物体表面点的次表面散射影响部分的出射辐射。其中,蒙特卡洛与mcml有所区别,mcml是基于蒙特卡洛思想的光子追踪模拟程序。而蒙特卡洛是一种数学上的积分计算方法,其可以通过若干个离散的样本来近似计算一段连续区间上的积分。出射辐射可以是光在某一个表面点入射,然后在另一个表面点出射后剩余的能量,也可以称为辐射度。
[0077]
作为示例,在运行阶段,首先针对场景进行深度贴图阴影贴图(shadow map,shadow map是一种常用的实时阴影的生成方法)的计算以得到目标场景的最小深度值以及物体的遮挡情况,随后,根据深度贴图阴影贴图分别计算目标物体的透射光影响结果,高光
影响结果以及漫反射光影响结果。因为表面散射针对进入物体内部并沿同侧表面出射的能量,所以在此可以针对漫反射结果进行次表面散射的计算。首先利用已计算得到的重要性采样式在屏幕空间上采样散射距离,并进行投影计算,得到若干采样点的位置。随后,使用已得到的反射剖面计算式,结合蒙特卡洛计算物体任意表面点上的出射辐射。
[0078]
步骤5:将次表面散射影响部分与高光影响部分和透射光影响部分相混合,并进行后续的后处理步骤,实现对半透明物体的最终绘制。其中,后处理步骤包括bloom泛光以及抗锯齿处理,以优化目标物体的绘制效果。其中,bloom泛光可以理解为是一种增强版辉光或光晕的效果。至此,可完整实现对半透明物体的最终绘制。
[0079]
图2为不同单散射率下蒙特卡洛光子追踪器的结果(左)与本发明中反射剖面(右)的对比图,可体现本发明中的反射剖面能精确拟合蒙特卡洛的实验结果。图3为本发明中算法在人脸上胡子(低反射率区域)的渲染结果(上)与可分离次表面散射算法的结果(下)对比,可体现出本发明中的新算法可有效绘制半透明物体低反射率区域的细节,避免了之前算法中因散射区域评估较大导致的过度模糊。图4为本发明算法在人手部物体的表现。图5为本发明算法在大理石雕像上的表现。
[0080]
本发明未详细阐述的技术内容,如shadow map阴影贴图的计算、高光和透射光的结果计算、蒙特卡洛计算方法、bloom泛光处理和抗锯齿处理算法等,属于本领域从事基于物理的真实感渲染的技术人员的公知常识。
[0081]
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术邻域的技术人员理解本发明,但应清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
转载请注明原文地址:https://win.8miu.com/read-29194.html