houdini官方新粒子系统大师班课程

——  微资讯 · 微课程  ——

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


视频教程

本教程介绍了基本上新粒子系统绝大部分的新功能,介绍了很多个部分和模块的知识点,小编给大家都罗列整理出来,方便大家学习和理解;基本上如果看完这个视频(学会),基本上掌握了粒子系统的基本知识,然后再做多几个案例就差不多了。

学习笔记

学习目录

1为什么使用新粒子系统

2他们是怎么工作的

streams粒子流

drag VS Forces 阻尼VS力

building a POP创建一个POP网络

3Particles粒子

VEXpressions VEX表达式

Sources 发射源

Collisions 碰撞

Facing/Instancing 方向和实例复制

External 外部模块关系

FLIP/Bullet/cloth 流体,刚体和布料等等


1为什么使用新粒子系统

多线程和解算效率更高: 基于vops来重新开发;

对于vops兼容性更好

减少动力学网络间跳转:移植到dops网络,并且保留pop命名;

微处理器垂直连线

鼠标中间信息优化

spreadsheet快捷显示选项

隐藏标签使用

stream类似于group,不过更加方便,因为分了一个支流出来(并不会实际上增加粒子数量)可以添加多不操作(不像组一样在一个流中操作,不直观且每次都要选择组)

力force,drag和wind

force添加一个力,drag为阻尼,他们每次调整都是相互制约,比较麻烦

wind是设定了一个风的速度,粒子不会超过这个风的速度,并且自带drag

drag的优化处理,旧版本是linear线性一次,现在是四元处理,更加平滑;

pop fan 是带有圆锥范围的wind的力

3通过pop vop来制作旋涡力效果

创建grid,使用物体发射粒子,设置速度为0,删除重力:让粒子发射后停留在物体表面

添加popvop节点 获得平面切线力(自定义y轴方向矢量和平面p位置方向,使用cross计算出切线方向),自定义倍增强度最后叠加会之前的force,输出给force

这时候看到的粒子旋转,并且向四周散开

添加add wind force,可以设置airrest效果

创建向心力,这里用到了自定义属性orbitrad 旋转半径值,做个判断,如果为0,那么使用p位置的长度,如果不为0,输出为orbitrad,然后使用length相减获得力的大小,使用normal p获得方向,添加一个倍增值为负数,因为方向是像圆心

叠加之前的切线方向的力,输出力

运动结果

04判定物体是否在模型(体积内部)

加载模型,使用vdbfrom polygon把模型转化为sdf场,效率比较高

进入到粒子系统,添加popvop 设置input中input1位sop路径,指向模型obj

在popvop中使用volumesample节点 连接filename到input1,不需要像以前那样提取,然后使用op:路径读取的方法,连接samplepos为p位置属性

进行compare,如果小于0那么在物体内部,如果大于0在物体外部,赋予不同的颜色twowayswitch

进行compare,如果小于0那么在物体内部,如果大于0在物体外部,赋予不同的颜色twowayswitch

需要在p位置添加一个transform节点,选择position位置,to space连接到input 1中模型的位置(转化粒子的空间坐标到模型的空间坐标中)

05VEX语言

基本语法

数据类型写法

v@ 矢量 i@整形 s@字符

export float @test =0;组委debugging

分组的名字@group_name;

全局变量@Frame,@TimeInc,@Time

输入端口 @OpInput1..4

虚拟属性@nage

使用popforce 中vex制作旋涡效果:在这里要输出其他测试属性,需要使用export vector @属性的类型

05 粒子从体积重获得属性 attribfrom voluemes

创建torus,使用paint volume工具进行才是volume绘制

在pop中添加pop attributes from volume属性

解决保持物体颜色(属性)的方法,考虑权重影响

使用两个attributesfrom volume分别获取Cd属性和density密度属性

attributes form volume获得Cd颜色,命名为volumecolor

attributes form volume获得density密度,命名为volumedensity

pop wrangle中表达式

08粒子发射

基于模型的颜色属性发射

对于面大小会变化的模型,可以激活scale point count by Area,基于面的大小进行粒子发射

给模型上绘制volume,如果移动的了模型,volume停留在原地,如果要跟随移动

在paintvolume中选择projection标签下选择 use UVs

使用动力学中的rigidbody发射粒子

切换geometry source中为use DOP objects并且输入主动刚体的名字

使用torus*的通用名字的好处是如果是复制多个torus刚体都可以同时发射粒子

09 粒子发射的抖动和间隔问题

09-1 发射速度过快(初始化速度是提前处理)

使用jitter time就可以解决

分为positive和negative两种(提前和延后方式)(positive在第一帧的时候其实已经提前了0.0几帧提前发射了一部分粒子)

09-02对于运动过快的模型发射粒子的问题(旋转)

使用 interpolate source插值计算forward和backward,

09-03 模型不动,没有初始化速度,力太大导致的间隔(力是post后处理)

jitter time要使用negative模型才可以解决

这个和posolver中两个端口有关系 pre-solve还是post-solve,默认情况下是post-solve,所以相对于力来说是滞后处理的(gravity)

010 碰撞

区别stop和stuck,如果碰撞体运动,那么stuk会吸附到碰撞体上而stop不会

可以直接在popsolver中进行参数修改

011

popreplicate 粒子复制(分裂)使用

使用第二个接口作为虚线ref连接,类似于stream的功能,否则会重复计算粒子

在group输入之前的hitgroup,碰撞之后分裂粒子

但是这样还有一重复碰撞的问题,需要忽略这个二次碰撞;使用pop collision ignore节点进行忽略碰撞

012 instancing实例复制

默认会抖动和旋转

使用pop lookat节点让粒子注释到一个方向

还可以修改method方法是如何达到这个旋转方向的,默认是immdediate立刻旋转,还可以使用turn/spin

然后添加dragspin控制旋转的

014制作羽毛飘落

羽毛模型处理

默认情况 发射时候会基于速度反正,然后下落

014-1解决一发设瞬间的旋转的问题,粒子发射创建一个borngroup刚发射出来的组,然后添加lookat节点,设置方向向上

014-1解决一发设瞬间的旋转的问题,粒子发射创建一个borngroup刚发射出来的组,然后添加lookat节点,设置方向向上

014-3添加wind的效果

014-4最后添加dragspin减慢旋转速度

015 flock群集粒子动画

一个封装的节点

016粒子的力影响FLIP流体(因为本质都是粒子,所以可以直接使用)

016粒子的力影响FLIP流体(因为本质都是粒子,所以可以直接使用)

018 对于刚体中应用粒子力,同样使用multisolver


(0)

相关推荐