【houdini】CG猎人第013期houdini完全基础入门学习-粒子案例完全学习
—— 微资讯 · 微课程 ——
利用零碎时间,走上超神之路!
课程概述
01课程介绍,02粒子系统讲解,03粒子系统流程,04streamVS group讲解,05使用图片控制粒子发射,06粒子表达式vex,07粒子与物体碰撞,08 给粒子添加旋转0,9使用曲线力控制粒子运动,10创建拖尾线效果,11创建导弹系统,12粒子的相互作用,13粒子制作真实的几何体替代碰撞。
学习建议
教程难度 ★★★
教程质量 ★★★★
这次给大家带来houdini粒子系统案例大全,包括粒子基本力和紊乱控制,使用贴图发射粒子,粒子旋转控制和实例替代,曲线引导粒子,拖尾曲线,粒子吸引,交互和最后的粒子替代进行动力学解算。真心收获满满。特别是导弹制作案例和粒子替换刚体解算的案例,解决了长久以来的想要的效果。同样,CG猎人也用houdini16全部制作一遍,提供源文件下载。祝大家学习愉快
图片发射粒子案例
使用vex控制粒子运动形态
粒子与物体碰撞
控制旋转和物体替代案例
曲线控制粒子运动
粒子拖尾特效
导弹导航打击特效
粒子相互作用力
粒子替代进行正确的刚体解算
学习统计
教程观看 2倍速度
观看时间 2小时
笔记整理 3小时
练习实践:2小时
学习笔记
01课程介绍
略
02粒子系统讲解
略
03粒子系统流程
略
04streamVS group讲解
略
05使用图片控制粒子发射
控制粒子发射范围有两种做法
01使用属性在 pop source节点中进行emit attribute的属性设置;
02直接修改外部发射源的范围,比如通过属性scatter或者delete等,直接控制发射源的形态。
制作原理
创建grid→uv texture 生成uv属性→attribute from map可以把贴图颜色加载大点属性中→attributecreate 基于$CR创建属性emit→scatter基于emit进行粒子分布创建→popnet进行粒子发射,创建popwind进行粒子驱动→attribute from map给生成的粒子重新赋予贴图颜色(粒子已经带了uv属性)
06粒子表达式vex
粒子节点中都带有vex expression激活标签,激活之后就可以和wrangle一样进行设置;
pop properties 粒子属性设置
pop wind风力的设置
pop vop节点
popwrangle直接写vex表达式
注意,这里要设置每个粒子不同的属性值或者是随着时间变化而变化的属性值都必须在vex wrangle中设置,直接在输入框中添加表达式无效。
07粒子与物体碰撞
使用刚体中的static物体加载被动碰撞物体,如果物体带有动画需要激活 use object transform并且调整volume的碰撞代理的精度。
pop粒子自身有pop collision detect进行碰撞检测,比如碰撞粒子变颜色和添加各种碰撞属性等。
下面有提示,如果要实现碰撞反弹必须使用动力学中的static或者rbd物体,pop collision behavior和pop collision detection都只是检测和改变碰撞行为用的。
08给粒子添加旋转
控制粒子的旋转主要应用与实例化拷贝粒子的时候,用于拷贝物体的定向和旋转控制。默认情况下copy节点如果没有法线属性就会基于粒子的速度方向进行拷贝;这样在发射出来一瞬间会有跳跃一下旋转。
在粒子中模拟自转使用pop torque节点,扭矩力设置,可以设置随机旋转轴和旋转力度进行控制,并且添加 pop spin drag进行旋转阻力模拟。
09使用曲线力控制粒子运动
重点就是使用pop curve force,旧版本粒子系统还需要单独给curve添加各种力,影响范围等属性,新版版只要连接进入curve就可以自动生成。
制作原理
创建曲线→point创建edge_dir属性→point vop转化为n(这也是中快速制作曲线切线为法线的方法)→grid→基于法线copy到线的第一个端点(法线用来定义旋转)→在粒子系统中添加pop curve force→注意调整影响范围和空气阻尼的大小进行设置。
上面使用point创建的edge dir属性和后面的粒子曲线力没有实际关系
10创建拖尾线效果
粒子作为的核心是基于某个属性(比如id)使用add节点进行先的连接;渲染属性的设置,基于uv进行pscale和颜色的0-1的驱动设置。
制作原理
grid→pop创建粒子发射带有id→id转化为自定义line属性→基于粒子1发射粒子2,基础line属性→add节点基于line属性连接成线→uvtexture节点使用collum方式对线展开uv,存储在point层级上→pointvop节点基于uv中的u方向0-1分别驱动ramp控制颜色和pcale→可以直接渲染或者使用sweep节点/polywire等进行放样生成模型。
11创建导弹系统
创建目标粒子,创建导弹粒子,使用pop attract进行跟踪设定,粒子靠近阈值进行爆炸处理(使用proximity进行判定)使用 replicate进行粒子生成。这个案例稍微复杂一点
制作原理
创建目标粒子发射物体sphere调整位置→创建发射器物体→创建popnet→使用两个pop source节点分别发射粒子→目标物体发射第一帧就可以了→添加popwind进行紊乱随机运动→添加popcolor设置颜色为绿色→发射物体创建控制发射数量,改名为missile→添加color修改为蓝色→pop attract吸引力设置→merge合并在一起→添加pop proximity节点获得nearestdist属性用来判定粒子与粒子间距→group基于这个属性分组→使用pop replicate节点进行分裂→有三个组外部分别拷贝处理→目标组拷贝一个圆锥→导弹组拷贝一个圆柱→爆破粒子组保持不变。
12粒子的相互作用
pop interact节点,主要学习基于pscale的值进行粒子间的排斥,使用 vex expression对pop interact中的 coreradius进行单个粒子设置。
制作原理
创建grid →scatter撒点→给每个点粒子创建随机pscale值,使用fit01(rand(@pntum),0.02,0.2)基于点序号进行随机设置→添加popnet→添加pop interact相互作用力→激活表达式,基于@pscale属性对粒子进行距离设置。
13粒子制作真实的几何体替代碰撞
以前一直想不到办法如何让粒子替代的物体可以实现真实的物体碰撞,毕竟粒子只是个点,不会有真实的形态进行碰撞,不过下面这个案例实际上模拟了这个功能,用的不是粒子系统,而是packed的bullet系统,效果和粒子替代很像,并且可以模拟真实的刚体碰撞效果。
制作原理
创建rbd packed物体,这时候是保持空的→创建multisolver→创建bulletsolver和sop sovler,分别连接到multisoler中→sop solver负责创建rbd物体→bullet solver负责解算刚体
重点是如何在 sop solver中设置
sop solver设置
object merge节点加载发射模型→scatter撒点控制发射数量,对于seed使用$FF每一帧随机位置→attribute create基于时间和点序号创建爱你独一无二的名字属性 particles_`$FF`_`$PT`→添加随机颜色和随机pscale大小→copy把sphere拷贝过去→attribute promote把点的name属性提升为primitive属性→foreach基于name属性对拷贝小球处理→pack处理→merge到dop-geometry中。
关于pscale和cd属性的保留,教程总是用了attributetransfer节点,不过在pack节点中就可以激活传递需要的属性
获得教程的方法: