houdini流体大师班入门课程I 基础知识讲解

——  微资讯 · 微课程  ——

利用零碎时间,走上超神之路!


说明:由于本教程是商业教程,仅分享学习笔记,供大家学习交流使用,切勿用于商业用途,公众号不方便分享视频内容,大家可以在网络自行查找;对于之前赞助过CG猎人的朋友,应该有部分收到过这套教程的,可以对着视频制作(还有其他的商业教程笔记会陆续公布)。


课程导语

这篇教程进阶上一篇入门教程;如果所上一篇教程是整体介绍一遍流体的入门教程,那么这篇就是真正细化的入门教程,能够在较短的篇幅里面把流体的知识点讲清楚,做扎实,真心不容易,小编强烈推荐,非常好的一个教程。现在是这篇教程的第一部分,后面还有2部分明后天继续分享,敬请期待~

课程目录

05-1介绍

05-2使用工具架工具创建

05-3手动创建节点

05-4中个节点详细介绍


学习笔记

05-2使用工具架工具创建

创建发射源 torus物体

创建box作为碰撞体

选择torus圆环物体,点击工具架命令Emit particles发射粒子,创建流体发射

在节点视图中会自动创建三个节点

在torus发射物体中,查看到fluidsource(把模型转化为流体发射源的核心节点)

进入autodopnet中查看解算节点

直接播放效果

在flip solver中选择闭合边界(产生碰撞)

查看粒子实际大小,在flip object中找到 visualizion,切换模式为sprite,这个就是粒子世界解算半径大小

调整粒子解算大小的边框 particles separation

设置初始化速度,在之前torus的发射源头中设置速度v

回到之前发射源部分,找到torus节点,在后面添加attributeswrangle节点,直接设置速度

设置向下的速度方向大小为-1

在fluid source中调整速度继承的大小和添加nosie效果

回到动力学网络中,设置速度缩放倍增

碰撞物体设置

选择box碰撞物体,选择命令 collide with objects

点击命名,然后进入dopnet中选择fluidobject,然后enter确认

进入到box中,同样看到fluidsource节点,只不过这次预制修改为碰撞

在动力学体系中

添加了source volume节点,连接到第三个接口中

碰撞精度调整

可以单独把碰撞精度独立出来进行碰撞精度调整

粒子导出 进入到particle_fuid,找到Dop I/O


05-3手动创建节点

同样创建一个torus和一个box物体

在torus后面添加一个fluidsource节点,找到container setting中选择初始化设置initialize为 source flip

中间可以添加一个point节点(其他都可以)创建速度值

中间插入一个trail节点,用来计算速度

手动创建一个dopnet网络

清除默认的flipobject中的物体路径

创建一个source volume节点,连接到solver中最后一个点

选择预制和source FLIP和volume path路径

在flipsolver中修改 解算框的大小和激活边界碰撞

添加重力,让其解算会下落

加载碰撞物体 source volume

激活碰撞显示(在flipobject中)

关联flipobject中的 particleseperation到fluidsource中的particles seperation中

同样,关联flip object中的collision seperation到 source碰撞物体中的division中

加载解算的粒子

新建一个geometry节点,在内部创建一个DOP I/O节点

设置动力学路径和内部导入物体名字

输入场的名字的 Geometry物体

VDB转化

创建VDBfrom particle,把粒子转化为VDB

把mini radius最小半径设置为0

设置 voxel size的大小和流体解算精度大小一致

使用convert VDB把VDB转化为 polygon soup

中间可以插入一个 VDBsmooth sdf节点

还可以通过vdb shape sdf进行扩展和和收缩处理

使用attributes transfer节点把粒子中的速度传递到模型上去,设置半径和最大采样粒子为2

filecache进行模型缓存


05-4节点参数介绍

flipobject节点

设置z轴深度为一个voxel,就是把particle细分拷贝控制z 值的大小

激活速度显示,目前一个速度线大概代表一个voxel,但是一个voxel里面可以包含多个粒子,这就是为什么新版flip优化的效果(以前是需要计算每个粒子间的相互作用力)但是现在是以粒子蔟的方式(voxel)来计算,当然这里有连个解算步骤,一个粒子自身的运动速度,整个流体voxel是速度控制(视图中的线)

把粒子切换为sprite,这就是voxel的大小形态

如果我们修改了 particle seperation的值,其实是添加了voxel的细分

这样可以获得更多的速度和流体解算细节

grid scale 默认是2,其实最终效果是 particle seperation*radius scale*grid scale的值,如果调整grid scale为1,粒子量会变得非常大

flipsolver节点参数

substeps解算步幅(这个和dopnet中的 步幅是倍数乘积关系)

timescale 解算时间缩放

min max substep设置最小最大步幅

CFL condition用来控制最大小步幅偏移

particle motion标签

apply External force 应用外部力(比如重力)

粒子速度处理方式

detect仅仅做判定,不做运动修改

treat as baliistic 普通粒子运动

use extrapolated velocity 考虑周围粒子运动状态

kill直接杀死

behavior行为中的控制

collision detection碰撞检测

两种方式

使用static object 与普通粒子相同,直接与刚体碰撞,使用particles模式;

使用volume采样,move outside collision,这个效率更高,解算快;

collide with volume limits 激活与边界框碰撞功能(配合flipobject中打开边界框)

kill outside volme limits 杀死边界框外部的粒子

use friction and bounce,使用摩擦力和弹力(对于沙的模拟效果)

Add ID attributes 类似于粒子中添加ID属性

age particle 添加粒子年龄属性

Reap paticles 基于solver杀死粒子

reseeding 标签

reseeding会自动填充粒子间的间隙,避免mesh的时候漏洞

关闭reseeding的情况:中间会有gap,但是好处是粒子数量是恒定的;

打开reseeding,可以自动填充粒子,但是最终粒子数量不恒定(甚至每一帧都不一样,因为要重新采样)

particle per voxel 用来定义每个voxel中的粒子数量

surface oversampling 表面粒子需要加倍采样  是上面的1.5倍;

seperation 粒子分离功能

默认情况不开启,粒子键不会有相互分离的作用力(仅仅是voxel键的力)

开启之后,粒子会相互排斥,结果就是更加均匀分布(代价就是更加耗费性能)

droplets  水滴粒子

主要是针对飞的比较远的粒子(水滴)效果删除

volume标签

force scale 控制力度对流体运动的影响,默认是1(如果为0会出现很奇怪的运动)

velocity smooth控制粒子向voxel的平滑过渡,值越高,月偏向于voxel平滑;值为0粒子更多细节(断开,扰动之类的)

update surface和update velocity 更新mesh和速度方法,advect比rebuild快

collision 碰撞标签

sticke on collision 对于static 物体的碰撞吸附设置

stick scale吸附的强度

max distance 吸附的距离(对于粒子厚度来说)

后面三个标签 viscosity,density和divergence在后面章节详细介绍

solver解算器标签

spatial scale 空间缩放(这个在项目一开始就要设置好),默认是1

distribution 分布解算(高级)


—— CG猎人——

微信号:Hunter_CG

QQ-540710114

为您提供最具前景的咨询与最适合的分类技术与学习教程

(0)

相关推荐