没有合适的资源?快使用搜索试试~ 我知道了~
虚拟现实智能硬件2020年第2期引文:刘红丽,韩红磊,费光正。真实感水体折射的两阶段实时绘制方法,2020,2(2):132-141DOI:10.1016/j.vrih.2019.12.005·文章·真实感水体折射的两阶段实时绘制方法刘红丽,韩红磊*,费光正中国传媒大学动画与数字艺术学院,北京市朝阳100024*通讯作者,hanhonglei@cuc.edu.cn投稿时间:2019年9月18日投稿时间:2019年11月23日接受日期:2019年12月3日在中央高校基础研究基金、国家重点研发计划(2018YFB1403900)、北京地区高校高质量前沿学科建设项目(中国传媒大学网络信息)的支持下,真实感绘制一直是许多交互式应用的重要目标,这需要对现实世界中常见的许多特殊效果进行有效的虚拟仿真。然而,在这些应用中,折射常常被忽略。渲染折射效果非常复杂且耗时。方法提出一种简单、高效、快速的水体折射效果绘制技术。该技术包括宽的和窄的阶段。在宽相,水面被认为是平坦的。水下网格的顶点转换是基于Snell定律的。在窄相,波浪对水面的影响进行了研究。水面网格上的每一个像素都是通过一个额外的渲染通道的屏幕空间方法来收集的。宽阶段将需要在窄阶段中重新计算的大多数像素重定向到渲染缓冲区中的像素。结果分析了三种不同的传统方法和我们的方法在渲染相同场景的折射效果时的性能。与其他方法相比,该方法具有较高的帧速率和物理精度。它被用于多个游戏场景,可以有效地生成逼真的水折射效果。结论两相水折射法是一种效率与质量的折衷方法。它很容易在现代游戏引擎中实现,从而提高视频游戏或其他实时应用中渲染场景的质量。实时绘制;折射;液体绘制1引言在计算机图形学中,真实感图像的生成是一个重要的研究领域。用户习惯于在计算机游戏和虚拟现实应用中的现代真实感渲染结果。越来越多的细节被添加到虚拟环境中。其中,水是很常见的。水的建模和渲染涉及到获得令人信服的水效果[1]。然而,如何对水进行建模以获得合理的动画结果[1- 4]不在本研究的范围内。在生成动画水面后,如何真实地渲染它是至关重要的。2096-5796/©版权所有2020北京中科学报出版有限公司Elsevier B. V.代表KeAi Communization Co. Ltd.提供的出版服务。这是CC BY-NC-ND许可证下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。www.vr-ih.comHongliLIUETAL:两种针对具体问题的解决方案133反射和折射效果在真实感水体渲染中是必不可少的。虽然已经提出了许多复杂的算法来产生实时反射效果,但折射效果的实时绘制仍然是一个挑战。绘制水面下折射的物体需要测试物体与水面折射的光线之间的相交,这具有很高的计算成本。此外,这种测试在延迟渲染流水线中是困难的,延迟渲染流水线通常用于现代实时应用。本文提出了一种无需射线追踪的水下折射效应的有效计算方法。所提出的方法的结构如图1所示。在该方法中,两个阶段被施加到波纹水面上的折射效果。在宽的阶段,水面被认为是平坦的,而水下顶点以有效的方式被转换为图形处理单元(GPU)中的折射位置。在随后的窄化阶段,水面上的像素信息被重新计算的屏幕空间方法与干扰的像素法线合成一个逼真的波纹状的水的输出。2相关工作图1我们的两相折射渲染方法概述。实时折射渲染是一个巨大的挑战[5]。折射效果需要额外的光线,这在现代延迟渲染管道中很难实现。最近的一些论文解决了如何以物理精度实时模拟水面的问题。Jeschke等人提出了一种在二维域上将水面波模拟为位移场的方法[3]。这种方法也为艺术控制提供了一个直接的接口Schreck等人提出了一种基本解方法来模拟具有运动障碍物的时变水面波[4]。当与真实世界的示例进行比较时,可以生成物理上准确的结果。然而,如何有效地渲染模拟水面的折射效应,这两个参考文献中被忽略光线跟踪或逆光线跟踪被广泛接受为光学效果的模拟方法[6,7]。然而,由于对帧速率的高要求,实时真实感绘制仍然具有挑战性。因此,几乎不可能进行基于对象的光线跟踪计算[8]。134虚拟现实智能硬件2020年第2期为了获得动画水面,Li等人使用2D网格建模水面,并使用细节层次优化表面的均匀网格[9]。然后产生多倍频程的Perlin噪声,构造随机水面高度场。他们还使用了光线跟踪方法来分析和跟踪光线的反射,折射和阴影递归取决于交叉点的材料。然而,渲染过程需要大约20秒,这远远不是实时的。Xiao等人提出了一种基于粒子的流体渲染方法,为用户提供了速度和质量之间的权衡[10]。然而,它仅适用于基于颗粒的水,这在现代实时应用中并不常见。为了在任意网格表面上渲染粗糙折射,de Rousiers等人介绍了一种在环境映射中使用球面高斯近似预卷积的方法[11]。在环境贴图过程中,光线的来源被忽略。因此,该方法不适用于绘制位置差异不可忽略的大规模水面。基于体素的方法已被应用于生成折射效果。Nilsson提出将并行八叉树构造和基于体素的光线跟踪相结合,以实现实时折射效果[12]。Rodgman和Chen使用距离场体素来实现这种效果[13]。这些方法在大规模场景中使用大量GPU内存和资源。此外,在现代延迟渲染管道中实现这些方法并不容易。为了提高渲染效率,McGuire和Mara提出了一种低成本的光泽反射和折射屏幕空间技术[14]。然而,这种技术产生明显的伪影,其中水下区域被遮挡,这是屏幕空间方法中的常见问题[12,15]。Iwasaki等人提出了一种强大的技术,通过将物体切成碎片来渲染折射[13]。光线投射问题转化为一个采样问题。该方法效率高,但在动态场景中可能会导致过采样和失败.与基于光线跟踪的方法[6,8,9,12]不同,该方法涉及基于折射光线的耗时的交点搜索,所提出的方法仅在宽相位中的GPU中的光栅化过程之前计算水下顶点的变换。与基于图像的方法[8,11]相比,该方法在窄相位重新计算水面上的像素,以实现波纹表面的折射效果。此外,该方法不需要预处理,并支持任何动画平面水面。3广泛阶段用于生成折射效果的屏幕空间方法非常有效,但通常会引入明显的伪影。为了减少伪影,增加了宽相位以解决水下场景的一般折射信息。在该子过程中,通过理想平坦的水面计算折射效应,以描绘水下的广阔外观场景通常,折射效果的渲染涉及由于入射到曲面上的光的复杂分布而投射光线。然而,当水面理想平坦时,计算折射效果是有效和直接的。从广义上可以看出,在图1中的阶段中,仅需要一个平移计算来计算满足每个水下顶点的折射效果。图2双射与非双射的比较例(a)双射映射;(b)非双射映射。135HongliLIUETAL:两种针对具体问题的解决方案对于平坦的水面,从相机到水下顶点的折射路径是双射的。因此,可以肯定的是,每个水下顶点都有一个独特的折射路径到相机(图2a)。否则,对于波纹水面上的特定水下顶点(图2b),可能存在多个折射路径。在这种情况下,无法确定满足顶点折射效果的唯一位置。在将水面压平成平面后,折射路径可以由斯涅耳定律确定(图3a)。沿着折射平面上方的识别路径的截面的任何位置可以被认为是水下顶点的折射位置但位置 与 一 保存 长度 是 选择 为水下顶点的折射位置(图3b)。它保持了水下几何体的深度顺序,并保证了计算结果的准确性。图3水下顶点到折射位置的转换过程。(a)计算光线路径;(b)变换顶点。进一步的深度依赖的特殊效果,如次表面散射和泡沫效果,以及窄相。将变换后的顶点作为折射顶点送入下一级流水线,为后面的窄相位合成宽折射信息算法1显示了此过程的实施细节(表1)。当摄像机处于水下时,除了光线跟踪之外的传统方法无法解决这个问题。这是因为水面上方的几何形状复杂,并且偏转角大。由于上面的水场景很难使用基于体素的方法进行管理,因此几乎不可能计算折射效果,特别是对于复杂或动画场景。对于屏幕空间方法,路径的偏转程度太大,使得一曰:第二章:第三章:第四章:第五章:第六章:第七章:第八章:第九章:第十章:表1宽相位算法步骤计算新顶点位置a←abs(CameraPosition.z -WaterPlane.z)b←abs(WaterPlane.z -VertexPosition.z)d←CameraPosition.xy的长度- VertexPosition.xy i←反射的索引如果相机在水下,则i←1/i求解x/sqrt(a2+x2)=i(d−x)/sqrt((d−x)2+b2),xdelta←xnormalize(vec3(CameraForwardVector.xy,0))P←vec3(CameraPosition. xy+delta,水平面。z)的pathlen←sqrt(x2+a2)+sqrt((d−x)2+b2)许多重定向的像素从渲染11:returnnormalize(P-CameraPosition)缓冲液因此,出现明显的伪影,其中许多像素无法找到折射信息136虚拟现实智能硬件2020年第2期比较结果见图4。由于宽相位计算在我们的方法中是物理准确的,因此折射结果是正确的(图4a)。然而,屏幕空间折射[14]引入了明显的伪影(图4b),其中折射像素不存在于渲染缓冲区中。4窄相在窄相,我们专注于更频繁的情况下,表面涉及波。法向随水面振幅变化而变化。因此,水下场景看起来扭曲。这可以通过为水面网格添加额外的GPU通道来细化宽相位中折射信息的细节来实现。水面上的每一个像素都被重定向到一个位置,根据水波引起的正常变化。图4相机在水下时不同折射方法的比较(a)(2)屏幕空间法[14]。137HongliLIUETAL:两种针对具体问题的解决方案本研究的目标是实时折射的水面与浅水波,这是最常见的,在虚拟场景。水面的法线略有变化。因此,重定向的像素往往会在光栅化后落入渲染帧缓冲区。如图5所示,窄相位分为三个步骤,用于计算新的屏幕空间坐标,以重定向水面上的每个像素。首先找到一个矩阵,将展平的法线旋转到一个新的受波浪影响的法线上;然后将这个矩阵应用于摄像机光线,并找到与场景几何形状的近似交点;最后将交点投影到摄像机平面上,得到一个新的屏幕空间坐标,并将帧缓冲区中该像素的颜色分配给原始像素。算法2显示了窄相的过程(表2)。图5窄化阶段的三个步骤。(a)变换光线;(b)近似交点;(c)投影交点。表2窄相位算法1:程序重定向渲染像素2:N←从渲染缓冲区获取世界法线3:P←从渲染缓冲区获取世界位置4:D←计算偏转光线方向5:P0←水平面6:P1←直线(P0,D)和平面(P,N)的交点7:UV←将P1投影到屏幕8:return SampleScreenPixel(Clamp(UV))图5a中示出了第一步骤中的变换矩阵的计算。在第二步中,简化了求交线解析解时的场景几何表达式,避免了光线跟踪。我们将描述场景几何形状的隐式函数视为F(x,y,z)= 0。根据泰勒级数,我们有:F(x,y,z)=F(x0+δx,y0+δy,z0+δz)=F(x0,y0,z0)+δx·Fx(x0,y0,z0)+δy·Fy(x0,y0,z0)+δz·Fz(x0,y0,z0)+O(δx2+δy2+δz2)<$δx·Fx(x0,y0,z0)+δy·Fy(x0,y0,z0)+δz·Fz(x0,y0,z0)(一)其中(x0,y0,z0)是几何形状表面上的已知位置,因此F(x0,y0,z0)= 0。当函数的全微分的高阶无穷小被假设为可忽略时,隐函数可以在邻域中重写如下:(p-p0)·ΔF(p0)=0(2)或作为:(x-x0)·Fx(x0,y0,z0)+(y-y0)·Fy(x0,y0,z0)+(z-z0)·Fz(x0,y0,z0)=0(3)其中p0=(x0,y0,z0),p=(x,y,z),p是要近似的位置。这种近似如图6所示。此过程将已知位置的邻域近似为平面,这使得相交测试更快,更容易,而无需光线跟踪。在找到与近似平面的交点并将其投影回屏幕后,获得新的屏幕空间坐标(图5b)。我们使用这些坐标对渲染像素进行重采样,期望的输出。如图5b所示,近似场景几何形状的变化主要导致该步骤中的误差。在大多数情况下,水的误差可以忽略不计图6红点周围几何形状的近似值。(a)原始几何图形;(b)近似平面。138虚拟现实智能硬件2020年第2期浅波浪的表面。最后,像素被重定向到所识别的交叉点的投影,以合成所需的效果。这可能会在投影超出屏幕边界的情况下带来一些伪影。然而,它们对渲染质量并不那么重要,因为用户主要关注屏幕的中心部分[17](图7)。在这种情况下,应用箝位方法将相干颜色分配给这些像素。在一些简单的情况下,单独使用窄相位可以生成逼真的折射效果。然而,当重定向像素被其他物体遮挡时,存在明显的伪影(图8a)。通过宽相位可以避免伪影(图8b)。请注意,在图8a中,由于场景的复杂遮挡,收集了错误的像素(绿色)。在图8b中,通过宽相位避免了该问题。图9通过单独使用窄相位显示了渲染场景中的伪影。图7窄相位中的伪影很难被注意到。(a)渲染结果;(b)人工制品,以红色显示。图8 使用时可能出现故障情况 只有狭窄的阶段。(a)单独使用窄相;(b)将宽相和窄相结合。5实验 结果 和比较我们分析了三种不同的传统方法和我们的方法在渲染相同场景的折射效果时的性能。BVH加速射线追踪方法[6]用作地面实况。将所提出的方法、屏幕空间方法[14]和距离场体素加速射线跟踪方法[13]与地面实况进行比较。感知度量[18]用于测量不同方法的渲染结果与地面真实值之间的差异。因为它图9渲染结果比较。 (a)组合宽相位和窄相位;(b)仅使用窄相位,这导致伪影;(c)(b)的伪影。可以在图10(平坦水面)和图11(波浪水面)中看到,所提出的方法在两种条件下都实现了与参考图像的最高相似结果。在屏幕边界处的伪影的程度与屏幕空间方法中的表面的视角有关。这是由于屏幕空间中缺乏信息。基于体素的方法在网格边界处引入混叠伪影,并进一步导致大量的内存消耗。该方法不需要预先计算和补偿宽相位的信息损失,因此,它不会表现出其他方法的问题。如表3所示,所提出的方法不会导致明显的FPS降低,而在其他方法中存在显著的FPS降低。此外,我们的方法是不敏感的水下场景的复杂性,因为它不涉及光线跟踪。在光线跟踪方法[6,13]中,平均时间消耗显示场景中三角形因此,很难在实时应用中直接使用它们,139HongliLIUETAL:两种针对具体问题的解决方案图10不同折射方法在平坦水面场景中的比较。图11不同折射方法在波纹水面场景中的比较。表3不同折射方法地面实况[6]我们屏幕空间[14]距离场[13]无折射16k特里斯55.90362.53294.77166.47373.92小行星128k18.33366.82258.8936.50369.63电子游戏虽然基于体素的方法[13]显示出比传统的射线跟踪方法[6]更高的时间效率,但是当路径长度和体素化体积增加时,它是缓慢且不切实际的。它不仅由于缺乏体素分辨率而表现出严重的混叠,而且操作也具有挑战性。相反,传统屏幕空间方法[14]的FPS保持稳定。然而,它产生了太多明显的伪影。在粗渲染阶段,渲染质量依赖于折射网格的顶点密度。如果网格没有足够的顶点密度,则非线性变换可能不充分,从而导致伪影。在图12中,由于顶点不足,兔子看起来像是陷入了地板。建议对此类网格使用细分过程。有关水渲染的更多图形参考,请参见图13至图15在图13中,140虚拟现实智能硬件2020年第2期对于任何波振幅或视角,使用我们的方法生成渲染结果。在图14和图15中,我们的方法在视频游戏中产生了比常用方法更逼真的水折射效果。请注意,图14 b和15 b中的缺失折射效应已在图14 a和15 a中解决。6结论将一个复杂的问题分为两个阶段在数学和计算机科学等许多领域都是一种巧妙的策略。这种策略背后的思想是在第一阶段得到一个基本可行的解决方案,并最终在第一阶段的解决方案的基础上得到第二阶段的结果。本研究提出的两阶段方法在效率和质量之间进行权衡,以渲染逼真的折射效果的水场景。由于我们提出的方法将图12不同顶点密度的结果比较。(a)该池有1093个顶点,并正确渲染;(b)该池只有98个顶点,并产生伪影。折射计算问题,通常涉及一个耗时的光线跟踪过程,分为两个独立的阶段。每个阶段都有一个非常有效的方法来获得现代GPU硬件的帮助下的结果。它在速度和准确性方面优于其他方法。此外,所提出的方法很容易在现代游戏引擎中实现,如Unity或虚幻引擎。所提出的方法的目的是产生折射效果的动画水域与小波振幅,这是非常常见的互动应用程序,如电脑游戏。大型翻转波浪或海洋飞溅的结果可能通常不用于交互式应用程序,但具有明显的伪影。这是因为表面在宽相位中是平坦的,这引起误差。它可以通过精确地对波进行建模来解决,以减少波之间闭塞的概率。这将在今后进一步讨论。图13使用我们的方法绘制不同波幅和视角的游泳池场景的结果。(a)、(b)、(c)、(d)中的波振幅增加;(e)、(f)、(g)、(h)是(c)中不同视角下的渲染结果。141HongliLIUETAL:两种针对具体问题的解决方案图14视频游戏户外画面中水的渲染结果对比(a)水下几何折射使用我们的方法;(b)折射的部分是不正确的,在大多数视频游戏中常用的屏幕空间的方法。图15水下视点渲染结果的比较。(a)使用我们的方法正确地渲染了水面上的几何形状;(b)在屏幕空间方法中缺少几何形状。引用1杨文龙,王文龙,王文龙.复杂水面的动画和渲染。计算机图形与交互技术国际会议,2002,21(3):736DOI:10.1145/566570.5666452[10]杨文,李文,李文.动态网格的流体动画。在:ACM SIGGRAPH 2006论文。波士顿,马萨诸塞州,美国,ACM出版社,2006年DOI:10.1145/1179352.11419613Jeschke S,Wojtan C.水波包。ACM Transactions on Graphics,2017,36(4):103DOI:10.1145/3072959.30736784Schreck C,Hafner C,Wojtan C.水波动画的基本解决方案。ACM图形学报,2019,38(4):130DOI:10.1145/3306346.33230025放大图片Magnus J G,Bruckner S.具有折射和焦散的交互式动态体积照明。IEEE Transactions on Visualization andComputer Graphics,2018,24(1):984DOI:10.1109/tvcg.2017.27444386Gunther J,Popov S,Seidel H P,Slusallek P.基于BVH的包遍历的GPU上的实时光线跟踪。2007年IEEESymposium on Interactive Ray Tracing。Ulm,Germany,IEEE,2007DOI:10.1109/rt.2007.43425987Watt A H,Watt M.高级动画和渲染技术,理论与实践。纽约:ACM出版社,1992年8Cabeleira J.结合光栅化和光线跟踪技术来实时近似全局照明。 葡萄牙:里斯本技术大学,2010年9李宏,杨宏民,赵建平。基于Perlin噪声和射线追踪的水体反射、折射模拟。International Journal of SignalProcessing,Image Processing and Pattern Recognition,2017,10(3):63142虚拟现实智能硬件2020年第2期DOI:10.14257/ijsip.2017.10.3.0710肖晓英,张S,杨晓波.大规模粒子流体的实时高质量表面渲染。第21届ACM SIGGRAPH交互式3D图形和游戏研讨会论文集。美国加利福尼亚州旧金山,ACM出版社,2017年DOI:10.1145/3023368.302337711de Rousiers C,Bousseau A,Subr K,Holzschuch N,Ramamoorthi R.粗糙折射的实时渲染。IEEE Transactions onVisualization and Computer Graphics,2012,18(10):1591DOI:10.1109/tvcg.2011.28212尼尔森湾使用稀疏体素八叉树的实时屏幕空间反射和折射。瑞典:隆德大学,2015年13作者:Chen M.离散光线追踪中的折射。Eurographics。Vienna,Springer Vienna,2001:3-17 DOI:10.1007/978-3-7091-6756-4_114放大图片作者:Mara M.高效的GPU屏幕空间光线跟踪。Journal of Computer Graphics Techniques(JCGT),2014,3/4:73-8515Imai T,Kanamori Y,Mitani J.具有复杂折射的实时屏幕空间液体渲染。计算机动画与虚拟世界,2016,27(3/4):425DOI:10.1002/cav.170716杨文,杨文,杨文.水面折射和反射焦散的快速绘制方法。计算机图形学论坛,2003,22(3)DOI:10.1111/1467-8659.t01-2-0070817Renninger L W,Verghese P,Coughlan J.下一步去哪里看?眼球运动减少了局部的不确定性。视觉杂志,2007,7(3):6DOI:10.1167/7.3.618余华用于生产测试的感知度量。图形工具学报,2004,9(4):33-40 DOI:10.1080/10867651.2004.10504900
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JDK 17 Linux版本压缩包解压与安装指南
- C++/Qt飞行模拟器教员控制台系统源码发布
- TensorFlow深度学习实践:CNN在MNIST数据集上的应用
- 鸿蒙驱动HCIA资料整理-培训教材与开发者指南
- 凯撒Java版SaaS OA协同办公软件v2.0特性解析
- AutoCAD二次开发中文指南下载 - C#编程深入解析
- C语言冒泡排序算法实现详解
- Pointofix截屏:轻松实现高效截图体验
- Matlab实现SVM数据分类与预测教程
- 基于JSP+SQL的网站流量统计管理系统设计与实现
- C语言实现删除字符中重复项的方法与技巧
- e-sqlcipher.dll动态链接库的作用与应用
- 浙江工业大学自考网站开发与继续教育官网模板设计
- STM32 103C8T6 OLED 显示程序实现指南
- 高效压缩技术:删除重复字符压缩包
- JSP+SQL智能交通管理系统:违章处理与交通效率提升
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功