毛发渲染中根据指定密度优化导发顶点个数

在现行的毛发渲染技术中,一组用于计算物理模拟的曲线叫做导发,真正的毛发在导发间插值得到。当导发上的顶点过多时,会显著影响毛发渲染的性能,所以按需减少导发上的顶点数量可以优化毛发渲染的速度,是一项很必要的技术需求。

本方案目的是使艺术家能够指定导发上各段的密度,按需减少导发上的顶点数量,最终优化毛发渲染的速度。实现原理是将艺术家指定的毛发分段密度转换为一个分段密度函数,利用分段密度函数的积分来筛选各顶点的保留情况。


具体步骤

  1. 从编辑器界面中得到艺术家指定的分段密度。

img

  1. 根据分段密度画出分段密度函数

img

  1. 计算分段密度函数在0到1上的定积分,其实就是折线函数下方梯形的面积总和。

  2. 根据分段密度函数的积分确定新的毛发的总顶点数。

  3. 以原毛发线段数的倒数为步长,计算每段在密度函数下的面积,得到一个面积数组。

  4. 以(密度函数下面积总和/新毛发线段数)为新毛发一个线段的目标面积。

  5. 从0开始累加第5步中得到的原毛发线段面积数组,每当超过一次目标面积时,根据(超过的面积/当前原毛发线段面积)在当前原毛发线段的两个顶点间进行线性插值得到新顶点位置。之后减去一个目标面积,继续进行累加。


流程图

img


成果

img

img