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

本文介绍了一种使用程序方式实现泡泡效果的方法。通过粒子系统和光线追踪技术,可以在三维场景中生成逼真的泡泡膜表面,并利用节点系统实现了泡泡的alpha透明度及shading效果。文章详细解释了如何区分泡泡间的平面隔膜和泡泡与外界的球形薄膜,并给出了相应的算法。

在尝试做一个泡泡的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来做了。

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值