体绘制方法通常用空间密度函数描述体纹理数据的分布,并利用式(2)来完成三维流体空间密度的构建,如图3a所示,密度分布随流体粒子空间位置的变化而变化,计算过程复杂多变.本文对传统流体粒子密度分布进行简化,固定了网格中单个粒子密度分布的样式,如图3b所示,简化的密度分布假定网格体素足够小,流体粒子在单一网格体素内的运动不会导致周围网格体素密度分布的变化,因此密度分布仅与流体粒子所在的网格体素相关,避免了重复计算.
对三维流体表面进行判断时,本文基于新的着色器模型,水晶滴胶利用一遍绘制完成整个光线投射的过程,根据片元纹理坐标来采样像素着色器中得到的二维体积边界纹理,用于计算视线的方向及长度,最后基于二分法的思想来判断流体表面位置.如图3C所示,及0分别为体积边界的入射点与出射点,通过求解两点间的中点A及比较相应位置的密度阈值,确定A为流体外部点,用于替换流体外部点参与计算,以此类推,逐渐收敛于流体等值面C饰品滴胶.

水滴表面的渲染
考虑到新一代着色器模型的性能,本文将上述光线投射算法扩展成简易的光线追踪算法用于水滴的实时渲染中,光线追踪算法对于水的多种光学特性的渲染非常重要.如图4a所示,本文主要考虑水正面及背面的折射、反射特性来映射周围的环境,并将计算得到的颜色值应用于上述流体表面点.此外,光线的折射量与反射量的分布需要满足菲涅尔定律.

入射光线经过水表面会拆分成折射光线与反射光线两部分,反射量与折射量的分布需要遵循菲涅尔定律.考虑到菲涅尔反射多项式的估计质量,当光线从空气中射入时,折射率为O.75,本文采用菲涅尔反射多项式估计反射量的分布;当光线从水中射出时,折射率为1.33,本文采用菲涅尔方程精确计算反射量的分布.

本文采用如下步骤来完成水滴的光线追踪渲染:其中反射1颜色值从环境贴图采样得到。
|