8:文字特效:程序化动画

观看笔记
  • 通过attributecreate 可以创建自定义变量,通过大写在Hscript中调用
  • 本章节主要讲解属性的作用、运作思路

9:属性的概念以及属性和本地变量的关联

观看笔记
  • 使用divide节点可以给面片重新布线,勾选Convex Polyogn可以三角化布线
  • facet节点可以添加点的法线
  • primitive节点可以对面进行移动(勾选Do transformation)
  • 可以通过measure节点来测量一些参数,教程通过这个方法计算面积
  • 当相乘结果与自己要的结果相反可以试着用除法
  • 当区域值的范围很小的时候,可以重新建立新的区域(fit函数)

操作截图

操作逻辑
  • 创建Font节点来创建字体,可以通过Level of detail 来调控字体的精度
  • divide节点来重新给面片布线(使用bricker polygons 来创建网格式布线)
  • facet节点勾选unique point可以将点分离
  • measure节点可以计算各个面的面积
  • attributeCreate 给area属性重新赋予范围
  • primitive节点勾选do transformation可以单独对各个面进行位移操作,移动可以根据当前帧\$F/\$AREA实现小面先移动,大面后移动

10:属性和函数在SOP节点的常用情况

观看笔记
  • \$PR 是面的序号
  • 通过颜色属性可以辅助效果制作

操作截图

操作逻辑
  • 添加rand(\$PR)来增加移动的随机性
  • 添加多一个primitive节点来增加颜色信息,颜色信息可以通过坐标信息基于区分,从而实现中间慢左右快等效果。
  • 将颜色信息变量加入到移动表达式中
  • 添加颜色节点清理掉之前的颜色信息

11:飘动线条:属性配合程序化建模

观看笔记
  • 可以将一些动作用abc文件导入到Houdini中
  • 导入abc要确保导入完整的模型方可进行SOP操作
  • 在运动物体上撒点,点都不会不断运动,需要获取一个恒定的属性来确保撒点不动
  • trail节点可以根据时间生成一连串的点
  • add节点生成多边形可以根据属性生成

操作截图

操作逻辑
  • 添加alembic节点来加载abc模型
  • 节点设置要load as Unpack Alembic Delayed Load Primitives这样才可以加载出模型的点
  • Poly Soup Primitives 要使用No Poly Soup Primitives才可以加载模型的面
  • 要确保模型有一个不会不停变化的属性方可根据该属性进行撒点
  • 使用time shift 节点从而只获取第一帧的值
  • 使用measure计算面积
  • 使用attribute copy将计算的面积赋值给原模型,完成不变值的创建
  • 使用scatter节点撒点(调节根据属性撒点,并且将relax iteration 关掉放置平滑造成点的挪动)
  • attribute create根据点序号创建一个新的属性变量num(为后面连线做准备)
  • 使用trail节点生成运动路径上的点
  • add节点根据上面的属性变量进行连接(Polygon->By Group->By Attribute)
  • 使用merge节点将模型和曲线连接到一起

12:重要节点foreach的初级使用

观看笔记
  • \$NPT可以获取当前点的数量
  • for each节点在Houdini 16 已经改版(我参考的是pluralsight 的教程来用新版)
  • for each 使用Primitive属性
  • attribute promote 可以将属性转移,转换过程可以取平均值、最大值、最小值等等操作,这里因为每条曲线上的num值都是一样的,所以什么操作都不影响。
  • ratio自定义属性\$PT/(\$NPT-1) 通过这个方法可以算出每个点占曲线的百分比(\$NPT是点的总数)

操作截图

操作逻辑
  • 使用convert节点生成NURBS curve完成平滑效果
  • resample节点对曲线重新采样加点
  • 添加attribute promote节点将前面生成的自动以num变量装换为Primitive类别
  • (如果上面不转换,for each改为对点操作也是可以的,但是连线就没有了,循环之后只有点)
  • 添加for each 节点对num属性进行循环(实现每一根曲线的提取)
  • 在循环中添加attribute create 通过\$PT/(\$NPT-1)表达式创建ratio变量
  • 根据ratio的值随机删除曲线的一部分(delete加入表达式判断)

13:初识VOPSOP

观看笔记
  • 在Houdini 16中 vop sop 节点已经转换为 vop 节点
  • 通过噪波 turbulence Noise 节点来实现曲线的变化
  • 直接连接 Noise 会使所有的点偏移到原点处,需要添加add节点来实现在原位置上的偏移。
  • frequency 频率实现波段的密集程度
  • roughness 在特定波段中的小噪波大小
  • offset 整体偏移噪波效果

操作截图

操作逻辑
  • 添加vop节点
  • 加入turbulence Noise节点
  • 添加add节点让turbulence Noise的效果在原基础上进行偏移
  • 通过bind节点获取num属性,从而实现没一条曲线的偏移值都不相同
  • 通过multiply节点和获取ratio属性,实现曲线头部无噪波,不移位效果

14:渲染设置及几何体灯光

观看笔记
  • Houdini的曲线是默认有宽度的,如果要修改的话,可以加入width属性进行修改
操作逻辑
  • 打灯,聚光灯可以调节成grid,调大大小可以柔和阴影效果
  • 调节材质
  • 添加曲线的宽度
  • IPR渲染查看渲染效果调节参数
  • 渲染序列

15:vopsop讲解

观看笔记
  • vectofloat节点可以将向量转浮点
  • fit节点和fit函数一致
  • subdivide才是细分,houdini的smooth节点只是添加平滑没有细分
    总结:更具模型的高度对模型进行相应的偏移

操作截图

操作逻辑

第一个vop

  • 获取高度(vector to float)
  • fit修改值的范围
  • 将position拆分(vector to float)
  • 保留Y轴不变(高度相关的信息)在X轴Z轴通过multiply节点与高度的范围进行相乘
  • 这样就可以实现上高下矮的效果
  • 最后加入ramp parameter 节点实现更强的操控

操作截图

第二个vop

  • 获取高度(vector to float)
  • fit修改值的范围
  • 将fit的范围修改为vector
  • 将vector属性传到transform的rot中,实现扭转的偏移

操作截图

第三个vop个第二个的思路是一样的,只是修改不同的轴向而已

  • 获取高度(vector to float)
  • fit修改值的范围
  • 将fit的范围修改为vector
  • 将vector属性传到transform的rot中,实现扭转的偏移

第四个vop

  • 通过法线实现Houdini的peak节点的效果

操作截图

16:多边形模型的躁波破碎

观看笔记
  • 不封口的模型在使用isooffset的时候禁用laser scan才能减少烟雾溢出的问题
  • 制作破碎的噪波可以反其道行之,先在噪波的模型上切,然后再将模型复原
  • rest节点可以储存当前模型的点坐标信息,到那时在偏移会原来位置的时候,内部细节会丢失
  • 所以可以通过VOP记录模型变形的值,从而实现内部细节不丢失

操作截图

操作逻辑
  • 导入模型,根据模型的情况加入remesh节点重新布线(一般是减少面数)
  • 加入VOP节点,通过turbulence对模型进行变形
  • 传统破碎流程 添加isooffset节点,在加入scatter节点撒点,在添加voronoi fracture进行破碎
  • 使用point节点将偏移的模型复原

注:在这个过程中,可以在VOP中通过 bind export节点输出偏移值,也可以通过attribute wrangle以及rest节点记录的信息,通过VEX计算出偏移值。
注:这种方法不适用与带贴图的模型,裂缝会暴露出来。

17:躁波破碎的内部细节及随机大小改进

观看笔记
  • 通过是点的分布不均实现大块小块

操作截图

操作逻辑
  • 撒点之后加入通过attribute vop为点上颜色
  • 加入turbulence节点让点的值混乱分布
  • 通过fit 节点将区间调小,就可以实现黑白分明的效果
  • 更具调整颜色删除点

18:地面裂缝

观看笔记
  • 通过set vector 可以将一个矢量的一部分进行修改,默认为零
  • fit(\$PT,(\$NPT-11),(\$NPT-1),1,0) 这样设置width属性那么属性值会根据点的序号进行范围映射,倒数第10个以前都为1,后面会逐渐地变为0。

操作截图

操作逻辑
  • 画一条曲线
  • 加入vop的turbulence效果给曲线添加随机性
  • 加入resample节点对曲线重新采样
  • 再次加入vop增强随机效果
  • 添加carve节点选择Second U实现从0到1的过渡,设置关键帧
  • 添加width属性,属性根据点的值设置范围值
  • 添加polywire节点从曲线上生成多边形
  • 创建一个方块并调整方块的大小和细分
  • 移动方块到合适的未知
  • 添加boolean节点实现布尔裂缝。

总结

  看过了RBD的教程之后,重新去看这里的SOP教程,感觉非常简单,理解起来也非常快。
  我第一次看的时候完整地只是看到这里,后面电线的部分已经抓狂到不想看了,现在看来可能是自己心太急了,这个部分并没有那么神秘和复杂。
  后面的内容基本上就属于第一次看的范畴了,不过我相信just so so <( ̄ˇ ̄)/