体积着色最重要的方面之一是传递函数的选择。 这个函数为每个输入值分配颜色和不透明度。 由着色器来定义此传递函数。 为了做到这一点,两个着色器使用一个强度映射。 虽然确定烟和火的颜色的方式是不同的,这两种着色器中的强度映射基本上是传递函数的黑白版本。
TurbulenceFD具有一个特殊用途的函数曲线(f-曲线)编辑器,允许艺术家方便并准确地控制传递函数。 使用这个编辑器非常类似于使用色彩校正进行图像后处理。 如果您在这方面有经验,这对您来说会很熟悉。
如上图所示,线性映射使颜色和不透明度通过缩放与输入值成比例。 然而,在许多情况下,我们想要切掉某些部分或放大其他部分。
例如,对于烟的着色,我们可能想要烟采用一个小范围的厚度(或不透明度)。 也就是说,厚度不应随密度产生线性下降,而应保持一个高值,然后迅速下降,并在密度范围的范围低值处下降,如下图所示。
为了帮助映射函数的设计,编辑器将输入值的直方图显示为背景。 例如,在上图中,我们可以看到没有高于0.5的输入值,因此我们应该将映射函数的重点放在实际处于容器中的值上。 当然,根据您的模拟,值的分布会在不同的帧之间发生变化,因此您必须查看随着时间变化的直方图,并设计一个映射函数, 根据直方图进行设计。
通常需要对映射函数进行非常细微的更改,以获得某种外观。 注意上图中X轴和Y轴上的值的范围。 编辑器被放大以显示输入值的范围低值的详细信息。 直方图显示,在这个比例上仍然有显著的变化,通过增加这个范围的强度(大约0.001到0.004),我们会得到一个很大的视觉差异。
对于火的着色,我们通常只需要火焰表面周围的窄带可见并发光。 我们可以通过在火焰着色器的不透明度映射中定义一个小的峰值来做到这一点,如下图所示。
通过不同的f-曲线设计,我们可以实现广泛的外观。 通过抑制低密度值使烟的轮廓更清晰,通过向右延伸上述峰值来填充火焰内部,等。
下图显示了编辑器的各种控件:
用鼠标左键选择并拖动扭结(1)
用右键添加新的扭结
通过按住shift键同时左键单击并拖动鼠标来跨越选择矩形来选择多个扭结
通过左键点击扭节(1)中的任何一个,并拖动它们到新位置,以此来移动选定的扭节(1)
使用切线按钮(2)为扭结定义平滑或线性切线
通过按工具栏上的删除按钮(3)或删除键来删除选定的扭结
通过左键单击线段手柄(4)并水平移动鼠标来弯曲曲线线段(更改偏差bias)
使用值输入框(5)更改所有这些值
使用右边的蓝色滑块(6)调整直方图的比例
使用直方图按钮(7)打开和关闭直方图
按住Shift键的同时,可以使用鼠标滚轮或缩放按钮(8)进行水平或垂直缩放
使用鼠标中键或翻译按钮(9)来翻译视图