【houdini】CG猎人第004期houdini完全基础入门学习笔记
—— 微资讯 · 微课程 ——
利用零碎时间,走上超神之路!
到目前为止houdini完全入门已经更新到第004期了,之前计划用1个月的时间对houdini入门,后面预计还有差不多十期,时间已经过半了,大家一定要抓紧学习,后面速度会越来越快,也越来越难(不知道大家这几期跟着CG猎人学习的感觉如何?是不是和你们之前所谓的入门的不太一样呢?如果你觉得有难度那就对了,这样才说明你在进步,前面走得慢,后面要开始跑了,大家加油!
课程概述
01attractor 粒子吸引力02漩涡效果03粒子消散效果
学习建议
教程难度 ★★★
教程质量 ★★★★
入门教程(中级卷)涵盖信息量比较多,而且结合大量案例制作,技术讲解非常好(可惜是houdini12的,扣了一星)小编计划分为4部分学习。在第三部中你将学习到粒子漩涡知识(对于制作龙卷风,沙丘漩涡和海洋漩涡都有很大的指导意义)物体的粒子消散部分,这里的技术已经是大部分高阶案例的核心技术点,集合了vop sop,volume体积,粒子和pyro流体技术共同制作。有基础的同学直接查看蓝色字体的重点部分。
学习统计
教程观看 2倍速度
观看时间 2小时
笔记整理 2小时
练习实践:1小时
学习笔记
01attractor 粒子吸引力
这个新版本的很类似,重点是添加吸引之后一般会添加drag阻尼力。用于避免粒子惯性脱离运动吸引限制(比如曲线路径)。
02漩涡效果
重要的核心知识点(制作龙卷风,海洋漩涡的等关键基础知识) 使用sop粒子→通过vop定义漩涡的方向→传递给volume→volume驱动pop 粒子的运动。
这样做的法的最大的特点就是可控性非常高(控制非常简单)。
02-1创建tube,修改参数为漏斗形状,上下封面→isooffset转化为volume(新版本建议使用vdb)→scatter基于体积撒点→添加vop sop节点。
02-2重点 vop sop节点设置这里基于粒子P和半径radius,和自定义向下的矢量down需要获得切线和向内的矢量,并且控制各自比例。
向内(向心)力容易获得,直接normalize(@P)可以获得向心的方向;
注意,需要先把p位置的y忽略不计,这样才能获得正确的向心力,使用vector和float的转化。
切线方向里可以通过自定义的down(0,-1,0)向上的力与向心方式向力使用cross product求得(cross product的原理就是基于连个矢量构成平面计算出第三个垂直于这个平面的矢量)。
这时候有三个方向力:向内的方向 inforce,向下的力downforce和切线旋转的力rotaeforce。
这我们需要平衡的是向下和向内的力,如果要形成漩涡效果,那么半径越大的粒子向心力越大,越靠近中心的粒子向下的力越大,这样才能形成漩涡的效果。所以基于粒子半径(tube的半径)进行fitrange设置,用来mix 混合向下的力和向内的力。
红色,自定义的向下的方向
蓝色,通过对p位置的normalize,使用negate进行反转
黑色,基于点位置fitrange进行适配大小和距离,提取最大的是max radius
绿色 ,基于向下和向内的方向cross product求出切线方向的力。
最后面输出为N,方便预览,也方便后面的传递
02-3紊乱控制,第二步做出来的力方向都是非常统一,需要添加turbulence紊乱力的控制,有两种方法
一种是直接把turbulence紊乱叠加在最后的力的输出中,使用mix进行混合控制。
另外一种可以直接用于bias的控制,让之前三个力的混合带有混乱效果。
当然每个方向的量还可以添加multiply倍增量,这个需要在后面调整粒子动态的时候不断调整,比如向下的力大一点还是向内的力大一点等等。
02-4把这个N属性传递为volume的v速度属性
使用vlume节点创建速度vel的体积(设置为vector,并且场为v速度场,默认值为0,0,0,调整高的精度。使用volume from attribute把粒子的N属性传递给volume vel场。
02-5新建粒子系统,基于circle发射,添加pop advect by volume,加载volume速度场,设置update velocity更新速度。后面添加pop force设置紊乱和pop kill设置粒子低于y轴原点就死亡(删除)
popkill中的代码设置
dead = @P.y<0;
02-6添加紊乱细节和动画绑定,渲染设置
01可以在tube中添加mountain,让体积造型紊乱效果。
02使用lattice,选择线绑定(lattice除了晶格绑定还可以基于线绑定),对线做twist扭曲变形器控制动画。
houdini的和maya的lattice晶格变形很像,不过houdini把原理的东西给展示出来,使用对代理box晶格或者是线的变形控制了被变形物体。这里需要保证的变形前的代理box或者线和变形后的box或线的拓扑结构一致。
03关于渲染
方式一,使用trai节点进行粒子路径记录,然后通过add节点基于属性id进行曲线连接,生成线
方式二,使用copy节点把box拷贝到粒子上继续进行渲染
当然,粒子量够多的话还可以直接对粒子渲染(设计到pscale粒子大小,v速度,alpha透明度属性和材质等设置问题)
03粒子消散效果
03-1学习重点
a学习如何设置形变物体的noise(不会在空间滑动)
b学习叠加计算效果是做geometry solver解算器
c制作物体粒子消散的基本部分:第一部分,模型基于颜色变化进行delet删除 第二部分,基于颜色获得发射粒子部分,发射粒子。
d粒子动态控制,使用pyro烟火驱动粒子运动,当然也可以通过vop或者force的紊乱进行控制,不过pyro流体会更加好看。
03-2重点 如何对运动(形变的物体进行紊乱颜色设置),加载角色模型,带有动画,这种情况添加vop的紊乱效果会看到运动过程中会在空间滑动。处理这种方法一个是用restpos,另外一种就是课程中的效果,使用timeshit固定第一帧不动,进行vop紊乱然后使用attributecopy节点基于点序号把颜色传递过去。
但是这两种的原理其实是一样的。rest position的原理其实也是把模型固定在某一帧(模型不动的情况下的点位置来计算vop中的紊乱效果)
03-2 重点 如何使用颜色紊乱叠加计算:对于需要迭代的效果制作,使用geometry solver节点,进入内部设置vop中,turbulence紊乱→add叠加原有颜色。注意,这里需要在外部先把模型变默认设置黑色(因为如果没有默认的颜色值,houdini是当场白色,这个对于很多属性都是这种情况,比如法线N)
03-3基于颜色删除模型,这个就是表达式的问题 $CR<0.95,同理,对于消散边缘的 选择,也是用表达式进行。scatter基于表面大小进行撒点(固定密度,面积越大点越多的)新版本的方法是
需要measure节点测量type类型选择area 测量区域,存储在area属性中
scatter中激活density attribute,默认是density属性,修改为area属性,设置density scale进行密度缩放。 这样保证相对这里平均发射。
注意,需要给模型计算速度trail节点,这个一方面会影响粒子的运动,另一方面也会影响pyro发射的速度。
03-4创建pyro,使用scatter的粒子作为发射源发射(获得速度和density属性)
pyro设置略(新版的变化也不大,按照视频教程做就行了)
03-05popnet中基于scatter粒子发射粒子,然后和漩涡一样添加pop advect by volume和vop等制作noise等效果,设置color颜色,完成最终效果
获得教程的方法: