请原谅我搓搓的英语翻译水平0.0(仅作参考)
http://research.microsoft.com/en-us/um/people/hoppe/fur.pdf
前人的研究:主要是使用Shell方法@@
缺点:
1、需要surface的全局参数,但是并不是所有surface都具备这一特性(比如一些特定的表面。没有事先切分成片和分开渲染他们)
2、需要大量的纹理内存,每个shell需要不同纹理覆盖整个表面,而且纹理要足够大区解决单独的头发
3、Shell方法只有在实现方向大致垂直于surface时,才对体积纹理提供了一种有效的近似。轮廓附近的地方(shell在掠视角(grazing angles)内被观察),头发将过于透明,而且在不同shell之间,会很明显
改算法对这些的改进:
1、——使用lapped texture(解决问题1,2):
Lapped textures可以通过将重复(wrap mode?)粘贴小块面(Small patches of example texture)覆盖特定的拓扑结构。因此我们只需要单独patch的局部参数,而不是全局参数。而且大量小块面他们共用一张贴图,所以可以解决纹理内存过大的问题。
2、对于轮廓问题:(这里的轮廓指的是刚好与视线垂直的表面)
这其实并不是Shell方法才具备的问题。在交互设置时,设计师为了保证高帧率,他们会采用低模。Detailed Texture有助于美化这些粗糙的模型,除了在轮廓那些切线不连续的地方,那些地方视觉效果将下降。而在毛发渲染的时候,轮廓的视觉效果在感知上扮演着十分重要的角色。对于这种情况,人工的多边形可以采用更高的分辨率来缓解,或者使用Sander的方法–clipping到一个高分辨率的2D轮廓。
为了解决这个问题,我们引入了一个方案:垂直渲染fins到轮廓表面的地方。fins纹理使用跟Shell 纹理同样体积的模型来模拟毛发,但是他们将会在不同方向(更加适合倾斜视角的方向)进行采