1-4期
195人加入学习
(33人评价)
Houdini 影视特效实验班

6个月零基础到入职

价格 ¥ 6198.00
教学计划
承诺服务

gas match field节点的作用是通过参考某一个场而新建一个场,新建的场在size,reslution上与参考的场相匹配,新建的这个场里面是没有数据的。

gas disturbance的工作原理是这样的,在流体框中切割成一个一个的小方块,这个小方块的大小由block size这个参数决定,每一个小方块都随机生成不同方向的矢量场,通过disturb field参数把这些矢量场指定写入某一个场,并且影响这个场,threshold field参数是gas disturbance生成的矢量场影响的阈值,默认就是density场,density场的数值大于cutoff参数指定的值,gas disturbance生成的矢量场便不再影响,反之就会影响

[展开全文]

整体的逻辑是这样的,先使用一个gas match filed节点,通过参考vel场,创建一个空的矢量类型的场,里边没有任何数据,取名叫做disturb场,这个disturb场和速度场的size,resolution是相同的,然后使用一个gas disturbance节点生成一些矢量场(disturbance的工作原理是这样的,在流体框中切割成一个一个的小方块,这个小方块的大小由block size这个参数决定,每一个小方块都随机生成不同方向的矢量场,通过disturb field参数把这些矢量场指定写入某一个场,并且影响这个场),写入空的disturb场,最后再使用一个gas field wrangle节点,把速度场和disturb场相加,这样就可以对速度场进行一个扰乱

 

 

其实直接在gas disturbance节点里面填写扰乱速度场就行,为什么要创建disturb场,是因为要节省解算的资源,在gas disturbance节点的黑盒子里进行操作的目的在于,让density值为零的地方不要生成扰乱的矢量场,这样能节省大量的资源进行解算,gas vop里面的操作是这样的,density场作为gas disturbance节点生成的矢量场影响范围的阈值,如果当density场的值满足自己设定的条件,才会执行括号的里的操作,如果当density场的值不满足自己设定的条件,输出的矢量场则是(0, 0, 0)

[展开全文]

gas blur节点能对指定场里的数据进行模糊,被模糊的数据在smoke状态下显示自然也会被膨胀一圈

 

float vel_len = length(v@vel);
f@scalefield = fit(vel_len, 0, chf("max_vel_len"), 0, 1);这两句话的意思是根据速度的大小来控制scalefield场的值,速度为零的地方scalefield场的值为零,速度超过自己设定的值的地方scalefield场的值为1,中间进行自动插补

然后通过这个scalefield场控制disturbance,这样在烟雾速度大的地方disturbance强,烟雾速度越小disturbance强度越小,烟雾速度为零,disturbance影响也为零

 

gas calculate 节点是一个计算场的节点,destfield指定要计算哪一个场,source field表示要用哪一个场计算destfield指定的场,计算的方式是下面的calculation参数,指定用什么计算方式,现在这里用的是copy的方式,source field里面什么都没有填,这里表示的就是使用一个“无”来替换掉destfield指定的场,这就相当于删去了destfield指定的场

 

[展开全文]

1,右键 copy parameter/paste relative references 相对参考;

 

 

[展开全文]

GROUP    $OS 节点/组关联命名

disslove   删除点,线

 

[展开全文]

我觉得使用这个还挺麻烦的,干脆就自己手动的弄一下,其实单只是缓存一个发射源的话也耗不了多少时间

[展开全文]

启动keep in bounding reagen 在下面打勾,就可以打开一个控制的范围

 

1.attribwrangle节点,修改点和面的属性@P.y +=1;

group节点的bounnding type 改成bounding obect就可以实现指定物体来影响组的形态

shift+o 打组整体移动

c按键就是给打组添加颜色

[展开全文]

1.s进入编辑状态

aattribwrangle给上游节点的面设置一个表达式

让所有y轴低于0的面都自动删除

if(@P.y < chf(“threshold”)
){

 这里要按下tab按键再写removeprim(0, @primnum, 1);

}

#这里“threshold”必须是绿色的才可以起作用

 

 

 

2.还有一种方法,删除网格下的面,就是用clip节点

再用polyfill节点自动封口

3.颜色的渐变

[展开全文]

单词

group  /ɡrup/ 组

Point/pɔɪnt/点

color/'kʌlɚ/颜色

grid/ɡrɪd/网格

作用:

1 分组

2选区

3合并

快捷键

shift+O 为节点打组 C打开调色板

[展开全文]

水是粒子和流体的混合计算,关于这一点是之前有过了解,当时我在想,如果说老胡这套河流的教程还是和网上很多别的教程一样使用fluid source这个节点来进行河流的制作我就不打算再看了,老胡的教程真好,从最底层的原理开始讲解,无论houdini哪一次改版,改成什么样,最底层的原理掌握了,就什么都不怕了

[展开全文]

flipsolver节点在底层上是先计算体积,再把数据传递给粒子,所有关于流体的数据全部储存在粒子上面

 

粒子源发射流体粒子时,首先要确保流体粒子的寿命,不能像普通粒子一样消散,然后是要给流体粒子源进行一个差值,使用forward,粒子发射之前就进行差值,差值的模式选择使用粒子源的粒子点,这样保证粒子之间不会有断流

 

flipobject节点的initial选项,相当于流体粒子的发射器,input type参数的作用是定义被导入的SOP几何体如何发射流体粒子。surface SOP,被导入的几何体的表面发射流体粒子(这个选项一般用不上);      particle field,被导入的几何体的每个点上发射流体粒子,本案例正是如此,这种方式的优点在于可以组合具有不同初始条件(速度,质量,密度等)的多种流体,但是当对具有不同初始条件的多种流体进行组合的时候,改变流体的精度模拟的效果会有相对大的改变。如果initialize fluid attribute(该选项只有在particle field模式下才有意义)处于禁用状态时,流体粒子不会在导入的SOP几何体上创建或更改任何属性;        file,可直接从bgeo缓存文件初始化流体模拟,做一个河流模拟的时候进行河流的初始化很有用;     fetch Dop,从指定Dop对象内部生成粒子,这个还不知道有什么样的应用;   narrow band,这是houdini16之后的窄带技术,一两句话说不清楚,具体作用就是减少内存的消耗。     不过 要注意的是,其实所有的流体粒子最好都是通过source节点来发射,不要使用flipobject节点的initial选项来生成。   

[展开全文]

flip solve节点,particle motion选项卡,apply external force添加标准力,勾上之后,在后面添加的gravity这些力标准力才能起作用;    under resolved particle,某些单个粒子可能因为Particle Radius Scale和Grid Scale的比值而没有参加解算,这个选项就是专门针对这些未参与解算的粒子的一些操作;no detection不对这些未参与解算的粒子做任何处理;detect only只是单纯的对这些未参与解算的粒子加上一个属性;Treat as Ballistic,这个是结合上一个参数force override,通过force override添加的一个外部力影响这些未参与解算的粒子;Use Extrapolated Velocity使用外推流体速度,具体到底是什么速度我并不清楚,不过这样对这些未参与解算的粒子是最好的;kil,直接杀死这些未参与解算的粒子。         collision detection选项,控制流体粒子与其他对象之间碰撞的处理,none,不执行流体粒子与物体的碰撞;Particle,执行流体粒子与碰撞物体的碰撞;Move Outside Collision,当流体粒子穿过了碰撞物才被认定产生了碰撞,这样的碰撞检测很快,但也非常不精确;Kill Unmoveable Particles杀死那些穿过了碰撞物的流体粒子,所以这五样参数都保持默认就好,不需要进行任何调整

 

behavior子选项卡,collide with volume limits,流体框边界被封闭的时候,流体粒子会与流体框产生碰撞;kill outside volume limits,流体框边界打开的时候,流体粒子超出流体框边界会被杀死;use friction and bounce,使用摩擦力和弹力,这样object物体设置的碰撞参数才会起作用;add ID attribute,给流体粒子添加ID属性;age particle,使流体粒子老化;reap particle,杀死年龄大于生命的流体粒子;delete attribute,删除模拟输出中通常不需要的内部属性。    当我们使用popsource作为流体粒子的发射源的时候,其实这整个behavior子选项卡的参数都不需要进行任何调整和改动

 

reseeding子选项卡的作用是,在粒子数下降太低而无法正确表示流体曲面的体素中创建新粒子,并删除体素中过于拥挤的粒子,默认就是开启,也不需要进行调整,保持默认就好,当然使用这个会极大的占用内存,而且开启这个选项之后,流体会永远倾向于一种塌缩的状态,流体的水位高度很难维持在发射源的水位高度

做慢镜头不能开启reseeding,因为reseeding会产生新的粒子,如果做慢动作,新产生的粒子在上一帧是没有参考位置的,这样的慢动作坐下来会出问题

 

separation选项卡会尝试去保证每个流体粒子的间距,但是flipsolve本身就在做这种事情,让流体粒子保持一个间距,有一个流动的状态,只有当粒子出现了极为拥挤的状况下才开启这个选项

 

droplet选项卡的作用是这样的,当水撞击在某个物体上面的时候,溅起了水花,这些水花在半空中会受到空气阻力的作用,会被打散,形成更小的水花,这个选项就是模拟这中效果
Detect Droplets    开启液滴检测
Min Particle Density当粒子密度小于这个值的时候,那么这些粒子视为小液滴,会受到空气阻力的影响,被打散
Max Particle Density当粒子密度大于这个值的时候,这些粒子视为主体流体粒子,不会受到空气阻力的影响
最小粒子密度到最大粒子密度之间的粒子进行插值

Behavior对液滴粒子的处理
  Blend With Fluid当液滴粒子重新加入主体流体粒子的时候,按照Velocity Blend参数中指定的数值,使液滴粒子的速度和主体流体粒子的速度进行混合
  Kill On Detection杀死所有完全液滴的粒子,即密度小于Min Particle Density参数指定数值密度的粒子
  Kill At Fluid杀死所有和主体流体粒子结合的完全液滴粒子,即密度小于Min Particle Density参数指定数值密度的粒子与主体流体粒子融合后会被杀死,不会有液滴粒子的速度和主体流体粒子的速度进行混合
Velocity Blend控制液滴粒子速度和流体粒子速度之间的混合

 

vorticty涡流选项卡,用来模拟现实世界中水的涡流力,一般来说都要开启。并且在后续的渲染中可以利用这个vorticty属性值进行更多细节的渲染

以上都是particlemotion选项卡里面的子选项卡,每一个开启都会极大的占用内存

 

 

volume motion选项卡

smooth surface选项,可以更精确的追踪SDF,给舒缓的流体添加更平缓的表面状态,但是对一些具有比较大的紊乱的模拟,比如瀑布,河流等,效果并不显著,在本案例中关闭,开启后会极大的占用内存

 

solve选项卡,use preconditioner选项,当内存条槽有四条时不需要开启,use openCL,当显卡现存够时开启,能启用显卡加速

[展开全文]

xyzdist函数,得到原点到几何体上最近的点的距离,第一空填要查找的对象,第二空填从什么地方开始查找。

 

之所以要把额外的发射源发射的速度设置向上,是因为这样可以使主要发射源发射出来的流体粒子保持在一个一定高度的水位,这样也可以使河床中未被流体粒子覆盖的地方填满

[展开全文]

DOP import节点,objectmask导入DOP中指定的object物体 ,geometry path参数是导入指定的object物体的子数据,具体需要导入哪一个子数据,在DOP中的geometry spreadsheet面板里面查看选择,本案例中以导入显示数据为例,Geometry/visualization,格式写法就是这样,注意开头字母需要要大写

[展开全文]

首先surface是一个SDF,gas SDF to fog是把SDF转换成fog,这个节点有点类似于VDB form polygon节点,把polygon转换成VDB的时候是选择转换成distance VDB还是转换成fog VDB。SDF field参数栏默认指定就是surface,不需要更改(好像没有别的什么场是SDF的),destination field参数栏,意思是把SDF转换成的fog给到哪一个场

 

turbulence的工作原理是这样的,首先检测指定的某一个场,如果检测到这个场的数值大于某个阈值,便对binding选项卡下velocity field参数栏的指定的场进行扰乱,检测的场通过binding选项卡下的density field参数栏指定,扰乱产生的阈值通过turbulence setting选项卡下的influence threshold参数栏决定,通常来说这个值保持默认就好

[展开全文]

xyzdist函数,得到0号输入端原点到1号输入端几何体上最近的点的距离,在这里,最近的距离是0,最远的距离由自己设定,再把这个距离fit成1到0,density值乘以这个1到0的数值,density的变化便是离几何体最近的地方最厚,离几何体最远的地方最薄

 

applydata节点是给DOP中object的节点添加额外的数据,这个节点其实不做任何处理,只是一种标准化的流程,在object节点下直接连上SOPscalefield节点也是一样的。

 

因为本案例中的turb control场是在SOP中做成的,要导入DOP中需要使用SOPscalefield节点才能进行导入,use SOP dimension,勾选这个,才能完整导入在SOP中设置的场的大小和数据;default operation参数,set initial表示只导入场的初始状态,set always,如果这个导入的场有动画,那么就需要选择这个。  Date name参数栏,给导入的场命名,当要引用这个场的时候,便是通过这个名字来进行引用

[展开全文]

1.groupcombine节点主要讲解了group组的相减,相加 等

2.groupression节点表示了程序

@p.x>0 && @p,z<0

@p.x>0 || @p,z<0

分隔的符号&&表示同时满足||表示或者满足其中一个

 

表达式:length(@P) <5;

得到一个适量方向上小于5的园

 

[展开全文]

gas vortex confinement的工作原理是这样的,添加一个vortexdir场来影响由velocity field参数栏指定的场,一般就是vel场,不需要进行更改。  confinement field参数栏,通过制定一个标量场,来改变vortecdir场的强度

[展开全文]