Houdini Study Note学习笔记 ( 二)

Scatter 节点 

//如果模型是带动画的,直接scatter 会导致每一帧撒点的位置不同,会闪,解决如下

texture 节点: Attribute Class -> Auto Select(或Point)

//point 节点

//scatter 节点

 

Dop 中自定义场

------------>使用 Sop Scalar / Vecotr field  microsolver 。这些节点能把SOPS下使用iso offset节点定义的 fog volume 引入到DOPS中。

------------>使用Gas Particle To Field microsolver 。这个节点允许点属性copy到自定义field中。

------------>使用 Gas Field Vop 。

 

Fog vs SDF

上图,上面对应Fog Volume , 下面对应SDF

>> Fog Volumes 更像传统意义上的贴图,物体在其中,存储1,否则0;

>> SDF(Signed Distance Fields)如果当前Voxel在物体里面,值为负(浮点数,不像Fog是整数),在物体外面,值为正。

>>对于两种Volume, 数值为0的点代表物体表面的位置,Fog存储的是整数,只能精确到voxel边界,而SDF由于是浮点数,可以根据相邻的voxel中存储的数值,判断表面的位置,增加精度,如图中紫色线(代表表面)所示。

 

Divergence

   

Divergence 是由于速度场(velocity field)的不平横造成的。Voxel的Divergence可以这样测量:比较Voxel边界上进来和离开的速度。Incompressible (不可压缩)流体的Divergence应为0。为了除去Divergence,引入了pressure field。Houdini 为此提供了三个结算器:Gas Project Non Divergent、Gas Project Non Divergent Multigrid(计算速度快,不支持碰撞和free surfaces)、Gas Project Non Divergent Variational (设置相对复杂,计算更精确)。

                 

左图为速度场(velocity field),加了简单的noise, 可以看到点的分布不均匀,有的地方密(Compression),有的地方疏。右图为Pressure field ,是根据Project Non Divergent 计算得来的,是用来抵消Compression效果的。当把Pressure field 加到 velocity field 上后,你就得到了下面的图:

Free Surfaces

使用Gas Project Non Divergent Multigrid的时候,上面提到了这个结算器速度快,但是不支持free surfaces。Free Surface个人理解应为流体表面的自由流动,例如水表面的流动是自由的,不会受到附近空气的阻力而使速度减慢。

Project Non Divergent 之前,需要把粒子的速度映射到一个 field(场),暂且称这个field为vel。映射需要使用节点Gas Particle to Field , 此时如果我们勾选了 Use Max Extrapolate Cells, Max Extrapolate Cells 设置为2,这时距离粒子大于2个Cell的voxel中,值就为0。

如此,经过Gas Project Non Divergent Multigrid 重新计算新的vel, 并用Gas Field to Particle 把速度直接赋给(利用copy的方法)Particle后,发现位于边界的粒子的运动好像受到阻力作用似的。这是由于Gas Project Non Divergent Multigrid在计算新的vel场时,位于粒子外、边界位置的voxel 的值为0,从而造成这种效果。

你可能感兴趣的:(Houdini Study Note学习笔记 ( 二))