Houdini zplus SOP 教程重看记录(二)
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 <( ̄ˇ ̄)/