美文网首页
论文翻译:《在任意表面上实时渲染毛发》

论文翻译:《在任意表面上实时渲染毛发》

作者: Dragon_boy | 来源:发表于2020-09-04 15:05 被阅读0次

本篇论文于2004年发布,是上篇文章中参考的英伟达白皮书推荐的论文,这里翻译一下,方便之后的查阅。英文原版可以在网上查找到。

摘要

我们介绍一种在任意拓扑结构的表面上实时渲染毛发的方法。作为预处理,我们使用例子系统模拟虚拟毛发,然后将其采样到一个体积纹理中。然后,我们在任意拓扑结构的表面上用参数表示纹理,使用重叠纹理——这是一种应用一个采样纹理到一个表面的方法,通过重复传递纹理片直到纹理被覆盖。重叠纹理允许确定一个在表面上毛发的全局方向区域。在运行时,体积纹理的片被渲染为一系列半透明的同轴外壳。为了提升靠近剪影的毛发的视觉效果,我们在表面上放置与表面法线方向重合的鳍状体,然后使用很方便的从体积纹理的毛发生长方向采样的2D纹理来渲染这些鳍状体。该方法的在中等复杂度的模型的交互速率上可以生成可信的毛发。此外,该模式允许实施修改观察和光照条件,同时可以局部控制毛发的颜色、长度和方向。

介绍

哺乳类动物的一个特点是它们由毛发。对于大多数的计算机图形学应用,沉浸感需要让虚拟生物呈现真实感。不幸地是,生成人类和动物的可信图像仍是一个挑战,其中一个原因是渲染的毛发往往看得出来是人造的。这篇论文展示了一种在交互帧速率下在任何拓扑结构的表面上渲染真实毛发的方法。在这篇论文中,我们交替使用术语毛发和头发(fur 和 hair)。

也许我们得到的最有效率的毛发图像归功于Kajiya和Kay,他们使用精确的几何细节来光追一个模型来作为体积纹理。在计算机动画工业,良好的毛发几何建模可以得到令人信服的人造扑入动物,例如迪士尼的《恐龙》里的狐猴。另一个例子是《101忠狗》里的狗毛发,使用了随机模型来代表毛发。然而,渲染毛发在计算上开销很大,并且大多数可以追溯到的方法在交互使用上都很慢。在交互设置中,Van Gelder和Wilhelm展示了不同的毛发参数可以实时操作。然而,他们的渲染器限制在绘制多边形线上,这样会限制每帧可以绘制的毛发的数量。

最近的Meyer和Neyret的工作展示了通过利用显卡硬件可以让以交互式速度渲染体积纹理成为可能。Lengyel随后构建了一个类似的方法,针对特殊情况下的毛发做了优化。该方法将毛发表面渲染为一系列同轴半透明的应用纹理的外壳,包含毛发体的采样。通过利用边界纹理映射技术,该方法允许交互式渲染拥有上千个多边形的毛发模型。

我们的方法基于外壳方法,因此实现了交互式帧速率处理。然而,在这个项目中,我们定位到了三个之前工作的限制。首先,外壳方法要求一个表面的全局参数。对于特殊的例子可以很容易得到(例如环面和圆盘),但针对任意拓扑结构表面,首先要将表面切分为多片,然后单独渲染。其二,该方法要求大量的纹理内存,因为每个外壳需要一个独立的覆盖整个平面的纹理,这些纹理必须足够大来处理每根毛发。最后,外壳方法提供了一个对体积纹理的比较有效率的近似,但只有当观察方向接近表面法线方向时成立。靠近剪影处,外壳是在一个切线角处观察到的,毛发会变得几乎透明,外壳间的间隔会很明显。

在我们的工作中,我们解决了外壳方法的前两个限制问题——参数化和纹理内存大小,通过使用Praun等人提出的重叠纹理。冲抵纹理通过重复拼贴覆盖表面的纹理小片来覆盖任意拓扑结构表面。由于表面由一个片的集合覆盖,我们只需要在每个片上进行局部参数化,与单个全局参数化对立。此外,许多片沿表面实例化,可以共享类似的纹理,因此,可以大量减少溢出的纹理内存。

第三个限制——剪影——并不只针对于外壳方法。在交互式设置中,例如游戏,设计师使用低模来维持高帧率。细节纹理帮助修饰这些粗糙的模型,除了某些剪影处,这些位置的切线连续性会减少视觉质量。此外,对于毛发的特殊情况,一些剪影处的视觉提示在感知角色毛发时扮演重要的角色。多边形粗糙感可以通过使用高分辨率模型缓解,或者使用裁剪高精度2D轮廓,该方法由Sander等人提出。为了解决剪影问题,我们介绍了一种模式,来渲染附加纹理的鳍状体,其方向沿靠近剪影的表面的法线。鳍状体纹理使用和外壳纹理相同的方法,使用毛发体积模型创建,但在针对陡峭观察方向时,采样的方向会更加恰当。另外,一名艺术家可以直接创建一张鳍状体纹理。

我们提供毛发的局部和全局属性的交互控制,例如方向、长度或颜色。例如,用户可以全局调整相对于表面的毛发角度或使用结合工具局部调整毛发的方向。

我们工作的成果可以总结为:

  • 使用重叠纹理来优化外壳方法,允许在任意拓扑结构的表面上使用,可以减少纹理的需求。
  • 通过渲染鳍状体提升了剪影的视觉效果。
  • 构建交互控制,可以局部或全局控制毛发的属性。

方法

这里我们简单地介绍一下我们的方法,在2.1到2.4小节会详细介绍。

我们的系统输入作为生物的三角形网格以及作为毛发的参数化模型。在运行前,我们执行两个操作:几何预处理,其中我们计算参数化表面的重叠纹理片;和纹理预处理,其中我们生成一个毛发片的几何模型,然后将其采样到外壳和鳍状体纹理。在运行时,我们渲染一系列赋予纹理的同轴外壳,从原始表面进行偏移,同时还有一些垂直于表面的鳍状体,用来优化靠近剪影的毛发。

几何预处理

为了构建片参数化,我们改编了Praun等人提出的重叠纹理模式。简短来说,该方法在表面的随机非覆盖的位置上生成片,并使用快速优化处理来局部参数化这些片到纹理域中。在下图,展示了覆盖表面的片集:



在这最初的重叠纹理构造中,片之间的缝隙可以让片重合、赋予片不规则的边界以及透明度混合这些边界来看起来忽略不计。对于大多数的毛发纹理,我们发现这些权衡是不需要的。作为替代,我们可以简单的让片的边界与网格的边绑定,并且完全消除片之间的重叠。因为毛发纹理是随机的,结果纹理沿网格边不连续的现象几乎察觉不到。这种非重叠纹理参数话的最主要的好处是一个外壳中的每个三角形网格只会渲染一次。作为替代,纹理片可以是环形的,因此可以通过拼贴覆盖大表面的片。这里展示的结果是基于这种非重叠参数化的。

即使使用非重叠参数化,我们仍可以使用片与表面的全局方向区域对其这一点带来的好处。一致的方向区域帮助隐藏片之间的缝隙,当毛发有独特的生长方向时。同样,我们可以使用非规则瑕疵形状的优势,它可以让每个结果片得到不平坦的网格边边界。对于毛发竖直的特殊例子,我们可以省略全局方向区域,取而代之创建一个各向同性参数化,其中每个片的局部朝向并不相邻对齐。

纹理预处理

通过使用Lengyel介绍的方法,我们创建了基于毛发束几何的外壳纹理。毛发束通过粒子系统模拟生成。模拟发生在一个小的长方体上,使用沿着两旋转轴的环型堆成,这样体积纹理可以拼贴。通过变化参数,我们可以获得直、卷、稀疏、浓密等效果的毛发。

外壳纹理

回顾一下,外壳方法对外壳模型的每个层床架一个四通道图片,通过将在一个网格叠底在一个包含毛发束的碰撞盒上。在每个网格点上我们通过插入一个几何毛发的较高的高斯滤波器来计算颜色和透明度。滤波器较高,因为外壳间的空隙比网格与每个外壳间的空隙要大得多。对于最里面的外壳,由于该层代表皮肤表面,所有的采样都赋予完全的不透明度。

为了将重叠纹理与外壳方法结合起来,我们使用每个表面片的参数化来访问外壳纹理的层。因此,对于每一个层,一个纹理片被实例化重复,来生成覆盖整个网格的半透明外壳。这一过程对每个层重复。在我们的实现中,我们通常采样16个层,并且纹理片的分辨率为128\times128

鳍状体纹理

我们定义了一个鳍状体纹理的单个实例,用来应用在模型的靠近剪影的边上。纹理通过沿任意平面切线方向的合成几何毛发片来生成。片的宽度决定了与鳍状体相关的毛发的密度。当渲染每个鳍状体时,我们随机按照边的长度缩放的间隔选取纹理坐标。缩放参数与在重叠纹理构建中使用的网格面控制参数一致。理论上,每个边会有它自己的鳍状体纹理,沿着几何毛发模型的合适的横截面采样,影响局部网格曲率和鳍状体的局部密度。然而,我们发现这一步是不必要的(因为使用一般的的鳍状体纹理的模型的视觉效果已经不错了),并且会强加大量的纹理存储空间。因为鳍状体的局部密度取决于模型的复杂度,我们为每个模型手动选择要符合的纹理片的宽度,用来创建鳍状体,选择看起来对给定模型和纹理恰当的密度。

运行时渲染

这一节描述三个运行时执行的渲染步骤(表面、鳍状体和外壳),按照渲染的顺序讲解。

表面渲染

对每一帧,我们首先渲染整个网格的不透明版本,设置深度缓冲。这同时包括毛发区域的最内部的层(皮肤)和与生物无毛区域相绑定的表面。

鳍状体渲染

接下来,我们渲染应用纹理的鳍状体。每个鳍状体是一个附着在网格边上的四边形,沿着表面的法线方向扩展,见下图:


我们发现通过只渲染靠近模型剪影处的鳍状体可以得到更好的结果。为了维持暂时的一致性,我们让鳍状体沿生长方向渐变,使用接下来的计划。对于每个网格边,我们计算鳍状体法线和无限远观察者的视点之间的点积

相关文章

  • 论文翻译:《在任意表面上实时渲染毛发》

    本篇论文于2004年发布,是上篇文章中参考的英伟达白皮书推荐的论文,这里翻译一下,方便之后的查阅。英文原版可以在网...

  • 用Angular写一个简单的VirtualScroll

    VirtualScroll适用于页面上存在大量数据但是只有少量需要被同时渲染的情况,可以根据滚动条的高度来实时渲染...

  • GPU & OpenGL相关 & 状态机 2022-06-15

    渲染分离线渲染(离线烘焙) 和 实时渲染。 实时渲染的技术实现分 普通渲染 和 光线追踪算法渲染https://w...

  • Attention U-Net

    论文:https://arxiv.org/pdf/1804.03999.pdf论文翻译1论文翻译2 亮点: 将注意...

  • 回答网友问题之十五

    问题一:在VRay for C4D中,VRay IPR实时渲染,为什么我加了材质到模型之后,实时渲染窗口是黄色的?...

  • 毛发材料| VRayHairMtl

    概观 VRayHairMtl是一种主要用于渲染头发和毛发的材料。 它可用于渲染通过VRayOrnatrixMod修...

  • 论文翻译

    文|李丽梁 最近预计把修改和翻译硕士学位论文提上日程。 论文中,有用的加上有价值的,大约5万字。 这是一篇很有修改...

  • 论文翻译

    1、https://blog.csdn.net/yjw123456/category_11265184.html[...

  • 1 ipr blender view

    ipr,实时渲染查看器。 渲染窗口 save multilayer exr as 保存多层exr作为 exr,问度...

  • three.js基础

    1.三大组建 2.渲染器renderer 3.场景 4.渲染器 5.渲染循环 渲染有两种方式:实时渲染和离线渲染 ...

网友评论

      本文标题:论文翻译:《在任意表面上实时渲染毛发》

      本文链接:https://www.haomeiwen.com/subject/hncasktx.html