Bubbles Shader in Houdini泡泡泡泡泡泡泡泡泡泡

来源:互联网 发布:js点击按钮执行动画 编辑:程序博客网 时间:2024/04/25 00:17

在尝试做一个泡泡的shader,现在已经初步做好alpha,下一步做shading,泡泡的形态全部以一种procedure的方式实现,给一个粒子或者点云,就可以渲染出一堆泡泡,泡泡的半径用pscale指定。这样粒子用flip什么的动起来的时候,就能看到一堆泡泡在流动了。

目前的实现是纯节点连出来的,不得不说节点虽然连的快但是实在蛋疼…… 稍微复杂点的不但要注意怎么连,还特娘的要注意在2D空间怎么摆放,而代码堆放的复杂度基本是1D的,一块一块顺着写就行了。



原理还算简单,把泡泡的膜分为两部分,一种是泡泡和泡泡之间的隔膜,是平面,一种是泡泡和外界之间的薄膜,是球形的。

平面的中间隔膜,可以根据ray的当前sample P和下一step之后的P判断两个位置最近的点(点云或者粒子)是不是同一个,如果是同一个就处在同一个泡泡的空间中,就没有隔膜。如果是两个不同的点,就说明这step之间穿过了这两个点之间的隔膜,通过求两点之间的中间平分的平面得到隔膜的shading。法线也好求,Normalize(近点-远点)。

和外界之间的薄膜,可以对ray当前和sample P和下一step之后的P和最近的点<这个点的pscale做个xor,结果为true则穿过了薄膜,位置就近似在pscale*normalize(p-p0)+p0,法线normalize(p-p0)。

目前用fresnel做的alpha。shading可以用各种specular model来做了。

等看看能不能用这方法做个啤酒泡沫。

0 0
原创粉丝点击