FlowLine V.S. 镜花水月
Scanline Flowline 100% full CGI Water
尝试过很多方法实现这样的水,非真实性的,纯粹的应用与视觉计算的洪水效果,不过现阶段镜花水月的研究成果和scanline还不是一个级别的东西。。事实上Flowline现在已经是一个工业级别的标准,而且全世界也只有这么一家公司能做出这样规模的洪水。继续努力中。
My Mirroonce Flood CGI test by 镜花水月
这个就是镜花水月的效果了,其中使用Particle level set的部分通过Houdini提供的流体工具模块完成,并且得到粒子水平集的Inside和FluidSurface的交界,使用了ghostfluid方法。剩余的部分由一部分使用了Houdini的SPH,另外一部分的“拉丝”状的水花是通过镜花水月的粒子系统调用GPU实现的。相对于过去有所改进的是现在和GPU交换数据部需要通过geo文件了,我在sop下写了一个节点,用于memcpy数据从hmaster到Device Memory,然后完成计算后再Memcpy回来。。(废话-_+...)
虽然效果还和flowline差很远,不过把握类似的东西自己已经有了一整套经验流程。部分已经做到了API当中去了。最后实现这样的效果的时候,发现像这样拉丝的水花其实软件本身并不重要,无非是快和慢的关系,SPH无非是一种典型的用无网格求解NS的方法,所以本身算法上并不会有太大差别,换句话说,flowline的缺省参数应该制作不出第一张图的那种效果,真正在电影里面做成那种效果的时候他们一定使用了很多经验模型上的东西。
而我最早一直头痛与实现这样的效果主要原因出在发射器上,其实关键的部分在发射器,如何创建一个正确的发射器,去决定初始状态流体的速度和位置很重要,因为,接下来初始速度的迭代计算将直接影响到最后的形态。而我过去一直在想Noise,在想有没有好的Noise可以实现,其实Noise很重要,没有Noise这个效果至少不能实现30%,但更重要的是发射器,因为Noise场只是影响加速度,打一个不太恰当的比方,加速度是用来计算速度的自增量的,换句话说也就是在模拟开始之后起作用,而模拟之前的初始化往往会比接下来的控制更加重要,因为:自然界中的真实物理过程是没有“Noise”的概念的,自然界中基本上一种物理现象都是被现有的某一物理条件所“创建”的,如:汽车开过积水滩溅起水花,这样的效果在自然界中其实是只有CGI中“发射器”这么一个简单的过程的(相对于POP/DOP中应该只对应重力场,而发射器决定一切形态的概念)。所以过去花了很久通过POP调整形态,最终没有得到满意的效果。
现在已经对这样的效果有了一些自己的经验,接下来会做成真正的电影镜头,尽请期待2k的渲染版本。
最后祝在剧组跟组的姐姐一切都好 ~