APP下载

虚拟现实环境室内点光源阴影实时生成仿真

2022-09-28徐鹤桐

计算机仿真 2022年8期
关键词:走样光源阴影

杜 状,徐鹤桐,王 媛

(长春工业大学人文信息学院,吉林 长春 130000)

1 引言

虚拟现实属于一种能够体验虚拟环境的计算机系统,基本特征为沉浸、交互与构想。在一些虚拟的游戏和电影场景中,阴影的生成十分关键。阴影即为物体遮挡了光源而出现的较暗区域,也就是在光源照射范围内,没有被照射的区域。阴影可以体现出非阴影部分无法描述的信息,为计算机图形学领域一个重要研究话题。阴影不仅能够体现多个物体存在的位置关系,还可以增强对比度,确定光源具体方位,进而使图像更具有立体感,生动地渲染虚拟现实环境,使其更具有真实感。按照阴影生成条件,将阴影分为本影与半影两种。其中前者表示物体上没有被光源直接照射的部分;后者则是物体受到一定光源照射形成半昏半亮区域。本文研究的点光源仅能生成本影,而线、面光源能够形成半影。

由于阴影在虚拟现实环境中发挥着重要作用,因此广大学者目前已经对其进行了大量研究。马志强[1]等人提出基于自适应光源采样的阴影生成方法。对光源的某些区域做规则采样,生成多幅阴影图像;将这些图像重新映射到视点下,结合阴影差值判断是否需要对采样点进行细分,进而完成自适应逐层采样,避免生成无效阴影。杨超智[2]等人提出基于自适应可见滤波的阴影生成方法。将光源中心作为参考点生成二值光源可见性图,同时平滑滤波处理所有可视场景点,获取可见性因子;在光线跟踪流程中利用可见性因子调整光照值,提高阴影生成的真实感。

随着计算机技术的发展,对阴影生成质量要求越来越高,上述两种方法虽然能够在不同条件下生成阴影,但没有考虑阴影背景颜色影响,导致获得异常的阴影采样点。因此,本文将膨胀腐蚀算法应用到阴影生成中,通过阴影灰度图像获取阴影颜色,并将其融合,避免被限制在单一颜色通道[3]上,提高阴影生成效果。

2 点光源位置估计与强度计算

结合已知虚拟现实环境图像,判断点光源种类、方向与强度,再通过计算机图形软件中的光照模型,将点光源信息进行拟合,映射到虚拟物体上,进而能够生成物体的阴影。

2.1 点光源位置估计

在虚拟现实环境下,对于点光源的位置分为有障碍物遮挡与无障碍物遮挡两种情况,下述利用不同方法分别讨论两种情况。

1)基于标记的无障碍物遮挡点光源检测

结合Lambert定理[4]构建标记亮度Lr和光源与标记表面之间辐射度Φ的正比例模型,则Lr、Φ以及入射光强Ls三者之间的关系式如下

Lr∝Φ∝Ls·A·cosθ

(1)

式中,A代表标记面的面积大小,θ是标记面和入射光线存在的夹角。如果θ=0,Lr与Φ拥有极大值,这时点光源的方位应该在虚拟环境中辐射度值最高的标记面法线上。

结合上述模型,判断无遮挡条件下点光源的位置过程如下:

步骤一:已知点光源和标记面的相对距离D,选取标记亮度的最大值当作主标记[5];

步骤二:确定副标记[6],该标记是所有辐射度值中和主标记最为相近的标记。将副标记当作顶点,并将2α为顶角,绘制圆锥体,且保证副标记的法向量必须在圆锥体范围内。所以点光源的位置即为副标记与主标记法线方向的交点。α值越小,说明估计位置p和实际点光源位置差距越小。经过不断调节相对距离D,确保α与D共同满足指定阈值要求。

2)基于反射的有障碍物遮挡点光源位置恢复

结合光直线传播特征与反射原理,物体都会具有镜面反射属性,且在点光源照射情况下存在下述两个特性:

物体表面出现的反射光线是有一定方向性的分布在环境中。通常情况下,镜面反射存在的入射光线和法线之间构成的角度,与反射光线和法线二者存在的夹角相等;

物体表面的光强会因观察角度的改变而改变,且取决于反射光线与视线之间的夹角,如果反射光线与视线吻合,则反射光强度变大。

综合上述两个特征,能够结合物体表面存在的高光点实现点光源的方向恢复。使用逆向光线追踪思维,设定某一视点的射线穿过高亮点,并在高光点X处和反射球相交,则光源方向矢量L′的计算公式如下

L′=2(V·N)N+V

(2)

2.2 点光源强度运算

本研究将台灯作为照明设施,设定为点光源照射在标志球上。若不考虑场景内不同物体的反射作用,则虚拟现实环境中的光照包括环境光与点光源。在此种状况下,通过镜面标志球进行分析,并使用计算机图形相关软件构建光照模型获取光源强度。

由于室内点光源距离较近,因此不能忽略光强衰减问题,通过下述衰减函数表示光强衰弱情况

(3)

式中,d代表点光源与物体之间的距离,ac、al与aq分别代表衰减、线性衰减与二次衰减常数,通过对这三个常数的调节,能够有效控制光照强度的衰减。

综合分析环境光影响,包括光源漫反射[7]与光强衰减等,通过局部光照模型获取虚拟真实场景中环境光强以及点光源强度。

此外,还需得到标志球的场景图像,本文遍历全部采样点,获取特征矢量,并划分采样点区域,删除异常采样点。再利用式(4)完成每个采样点的环境光计算,最后得出光强的算术平均值。该过程的详细步骤如下

(4)

式中,Ka、Kd与Ks分别表示不同时刻的物体反射系数,n为高光指数,f为焦距,Ri是区域反射系数。

步骤一:在获取的标志球图像中任意挑选n′个采样点,运算得出特征矢量V、Li;

步骤二:对点光源与采样点编码,同时划分区域;

步骤三:去除不合理的采样点;

步骤四:对高光系数n与标志球半径Sr做初始化处理;

步骤五:确定所有分区的采样点个数,利用式(4)获取点光源强度。

3 虚拟现实环境室内点光源阴影实时生成

3.1 基于膨胀腐蚀的阴影实时生成

(5)

因阴影区域色彩和阴影背景颜色相关,则在确定阴影颜色过程中,必须重点分析背景因素影响,本文提出了基于膨胀腐蚀的阴影颜色计算方法。利用融合原理[8]可获得

ShadowColi=ωi×SourceColi+(1-ωi)×Bgroundi

(6)

式中,SourceColi代表经过第i次膨胀腐蚀操作后阴影的真实色彩,SourceColi是理想的阴影颜色,此时理想色彩为黑色,Bgroundi是阴影部分的背景色彩,ωi代表第i次操作的融合因子,满足ωi∈[α′,β′],其中α′与β′都是ωi的临界值。针对第i次的膨胀处理,可利用下述公式表示

(7)

对于第i次腐蚀处理,可通过下述公式描述

(8)

式中,N*与M*分别表示需要完成的腐蚀与膨胀次数。

引入上述腐蚀膨胀算法,则阴影实时生成的步骤可表示为

输入:点光源的实际位置lp(lp1,lp2,lp3),假设地面s的深度是minY。

输出:点光源实时阴影。

步骤一:对α′与β′进行初始化处理,使SourceColor=(0,0,0),同时初始化N*与M*,建立点光源世界坐标矩阵[9]H;

步骤三:针对阴影的所有三角形与四边形区域,获取所有顶点的颜色HardColor(x,y,z),这时ω=β′,因此有

HardColor(x,y,z)=(1-β′)×Background

(9)

步骤四:构建一组点光源采集集合A1,A2,…,An,利用膨胀腐蚀操作获取阴影区域颜色,生成阴影区域。

3.2 锯齿走样改进

在阴影生成过程中,会经常出现锯齿状走样现象,造成此问题的关键是对阴影图的采样不够充分,当转换矩阵达不到一致时,就会导致变换后的像素低于阴影图像像素,由此产生锯齿现象[10]。

锯齿现象生成过程可描述为:光源投影在空间内的长度表示为dz,dp′与dy′分别代表物体的投影大小以及在视点空间内的高度,假设z′表示物体在模型空间内的体积,则有

(10)

由此可知,dy′与z′的值过大,均会引起锯齿走样现象。

针对这一问题,本文将对数分割法与平均分割法融合,对采样密度进行优化。平均分割算法生成的分割面始终与裁剪面相互平行,沿着z轴作m′等分,则第i*个分割点位置表示为

(11)

式中,g与e分别代表近、远剪裁面。该方法生成的采样分布表示为

(12)

由此可知,物体与视觉投影面越近,走样现象会越明显,会导致较近的地方采样不足,而较远的地方容易出现过采样。

(13)

找出最佳分割点之后,结合距离远近生成自适应采样密度,进而最大程度避免锯齿走样问题,提高阴影生成质量。

4 仿真数据分析与研究

为验证所提阴影实时生成算法的可行性与优势,此次仿真以从点光源位置估计、阴影边缘锯齿效果以及生成速度为测试指标。

实验一:点光源位置估计

假设存在7幅虚拟现实环境图像,每个图像中有两个点光源,光源1设置在无遮挡环境下,而光源2则有障碍物遮挡,这两个点光源在世界坐标系中的坐标表示为(-22.0,-12.3,23.6)和(-12.2,-2.3,34.9)。为方便分析本文方法、自适应光源采样与自适应滤波方法位置估计的精准性,通过比较光源实际位置和估计位置的差值来对比三种方法性能,实验结果如图1和图2所示。

图1 无遮挡下不同方法点光源位置估计结果

图2 有遮挡下不同方法点光源位置估计结果

由图1和2可知,三种算法在无遮挡条件下对点光源位置的估计误差没有明显差距;但当光源被遮挡时,自适应光源采样与自适应滤波算法的估计误差明显上升,而本文方法依旧保持较高的估计精度。这是因为所提方法可以结合场景图像预测出光源类型与方向,再通过光照模型获取点光源的实际信息,提高估计精度,同时也能计算出光照强度。

实验二:抗锯齿效果评价

针对生成的阴影,是否具有边缘抗锯齿性是算法评价极为关键的指标。为了能够准确体现出算法在不同场景下的生成效果,本文分别设置两种不同复杂度的仿真环境,利用上述实验提到的三种算法进行对比,实验结果分别如图3和4所示。

图3 简单环境下阴影生成效果图

图4 复杂环境下阴影生成效果图

由上述实验结果可知,本文方法无论在简单还是复杂的虚拟现实环境下,均表现出良好的阴影生成效果。而自适应光源采样方法虽然在简单场景下没有出现明显锯齿走样现象,但是会出现严重的阴影虚化问题;自适应滤波方法通过滤波处理改善虚化现象,然而阴影边缘会生成严重的锯齿。本文方法表现出了突出的阴影生成优势在于利用对数分割与平均分割相结合的方式改进走样现象,改善阴影生成效果。

实验三:执行速度对比

由于本文研究的是实时生成算法,因此执行速度是评价算法的关键性因素。利用以上三种阴影生成算法分别在简单与复杂的环境下进行仿真,获得的结果如表1所示。

表1 不同方法执行速度对比结果

表1得出的实验结果均为经过10次仿真后的平均结果,由此能够看出所提方法在不同场景下的执行速度远远高于其它两种方法。这是因为本文膨胀腐蚀的次数设置较为合理,减少不必要的时间,提高算法执行效率。

5 结论

阴影生成是增强虚拟环境真实感的关键方式,受到越来越多的学者关注。本文将膨胀腐蚀算法引入到阴影生成过程中,获取每次操作的阴影区域,再通过对锯齿走样的改进,提高阴影生成效果。仿真结果证明,所提方法不仅能够有效改善锯齿走样现象,还能提高算法执行速度。但随着终端软硬件的迅猛进步,该方法也需要不断改善,特别在移动终端中使用时,对点光源的采样需进一步提高,实现在不同环境下自适应采样。

猜你喜欢

走样光源阴影
“双减”,如何确保落地实施不走样
女性衰老从身体走样开始
镜面铝线路载板在LED COB光源中应用
光源改变光环境
阴影记
阴影
中国将耗资48亿建全球最亮“北京光源”
天地间唯一的光源
阴影魔怪
资本大举进村 土地流转“走样”