【教程】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

为您提供最具前景的资讯与最适合的分类技术与学习教程

(0)

相关推荐