【教程】houdini 新粒子系统破碎拖尾案例I
—— 微资讯 · 微课程 ——
利用零碎时间,走上超神之路!
今天也到周五了,终于到我们这周粒子学习的最后一个案例教程(第一部分),具体视频教程请查看靠之前分享的 houdini13粒子破碎片(没有获得分享的同学查看下一篇粒子翻译文章),不知道大家是否能跟上步伐,如果大家够努力的话,相信对于粒子系统应该有一个较新的了解和认识了,希望大家都是真切的学到和成长,而不是仅仅停留收藏教程的步骤~~
这个案例教程是使用houdini13新粒子系统制作破碎拖尾,分为两部分:第一部分讲解破碎和动力学设置,第二部分讲解粒子发射部分;
第一部分学习收获
01学习了extrude和polyextrude节点的区别;
02 packed物体的基本使用流程;
03pop force如何控制刚体运动;
04重点:如何判定碎块的前后关系,控制先后运动;
视频教程
学习笔记
制作目标
目录
学习houdini13新粒子系统的工作流程
使用H13制作一个完整的 镜头
创建logo然后破碎
让logo的碎片冲向镜头
添加粒子系统
材质
体积光
part1
创建logo模型并且进行破碎处理
创建trace sop节点:基于黑白图片获得描边
在image input中加载houdini默认图片库的logo,不过由于图片是黑灰色,不是完全黑白,所以默认是没有任何东西,这时候可以降低threshold,可以出现logo
使用extrude挤出厚度
extrude和polyextrude的区别就是 extrude右边的输出端是可以通过定义一条弧度曲线挤出倒角造型
出现烂面的问题,这是因为trace生成的点太多, 这时候需要resample进行点的控制
基本的预先破碎流程 isooffset转化为体积→scatter基于体积撒点→voronoifracture 基于点进行破碎
voronoifracture 在group标签下为我们创建了内部组和外部组,还有attribute 名字属性piece,方便我们后续的赋予材质和进行粒子匹配;
可以使用explodedview进行碎块查看
运动原理分析
我们需要让靠近摄像机的碎块先运动,才不会挡住后面的碎块;在H12的版本中,我们可以使用sort节点基于某个点进行排列序号(这个点可以是摄像机的位置);但是在houdini13中,刚体使用packed物体运行更加高效,但是问题就是packed之后物体的顺序会重新排列,解决办法如下
使用assemble节点转化为packed几何体
assmeble基于name这个属性来把物体打包,这个name由上面的voronoifracture创建
回到obj层级,点击动力学命令 RBDobject 物体,转化为动力学物体
进入dopnet中,新建rbdpackedobject,拷贝路径到这个节点替换(现在不需要这样做,当你点击rbd物体的时候,会弹出两个选项,直接选择rbd packed object就可以了)
选择rbd fracture object
添加multiple sovler,右边可以接入各种解算器和各种力,这时候我们添加pop force力控制
设置pop force中的紊乱效果如下
在物体obj设置模型:在dop import中设置这效果
关闭use single object(否则物体会整体移动)
然后是import style 使用fetch packed Geometry from DOP network 导入packed物体的动画
但是渲染还是什么都没有,因为packed物体中包含了density属性,mantra不知道如何对待这样的物体(geometry带有density属性)所以可以使用属性节点把density删除
这时候渲染就没问题了(在houdini15中都是一键设置好的,不需要这样手动修改参数)
如果我们要让破碎在24帧之后才开始运动,需要控制pop force(使用粒子力的好处就是可以方便使用vex语言控制)
在force中使用语言控制 当帧@Frame>24的时候,设置力为0,0,1否则力为0,0,0
对noise的amplitude控制同理 amp*=@Frame>ch("start_frame") ? 1:0;
这里使用了判定条件的缩略写法 条件 ? true: false;
核心重点部分 如何处理动力学中先后移动的问题
在rest节点前面添加一个 pointwrangle节点,进行代码设置
在这个节点插入两个定义属性
整形int的 start_frame开始时间
浮点float duration
代码解释
v@pos=relbbox(@P); //获得相对box的边界
f@releaseweight=(1-@pos.z)*ch("duration");//基于duration获得权重比,基于z轴方向
f@sortweight=(@ptnum/(@Npt-1.0))*ch("duration");//其实这个不知道有什么用,做出来有没有调用;不知道是不是有默认sortweight进行排列
f@release_frame=ch("strart_frame")+@releaseweight;//这个用来保证时间错开不会比start frame早,这个在release_frame在dop中进行调用
dop中动力学force和amp中之前使用自定义的开始时间,现在使用release frame这个属性
这样就实现了先后运动的效果(距离摄像机越近越先运动)
CG猎人(Hunter_CG)专注于CG微资讯与微课程的分享(10分钟以内)。让广大CG爱好者与从业人员能够利用零散时间了解最新最具前景的资讯,了解国际技术发展动向与前沿市场动向。提供精挑细选实用微课程,从入门到高级循序渐进。通过知识总结与分享,共同进步。
分享教程和学习笔记,同时设计maya,3dsmax,softimage,houdini,cinema4D blender,modo和lightwave等常用三维软件,也包含reallow,naaid专门制作特效的三维软件;包含fumefx,rayfire,karakato和thinkingparticles等插件教程和学习笔记。
—— CG猎人——
微信号:Hunter_CG
QQ-540710114
为您提供最具前景的资讯与最适合的分类技术与学习教程