Houdini zplus SOP 教程观看记录(三)
雷电案例
19:闪电的制作
操作逻辑
+ 通过多个turbulence和resample可以将直线弄成比较弯曲的线
20:闪电分支添加
操作逻辑
- 通过vop给曲线标记颜色,通过颜色来删除曲线
- 获取曲线的ptnum以及点的总数
- 让点的总数减一
- 将ptnum转成浮点型
- 将ptnum与点数减一相除
- 获取的值赋值到颜色上,即可实现颜色从零到一的黑白渐变
- 加入ramp节点进行调节
21:vopsop参数及效果控制
观看笔记
- Polyframe节点可以添加切线和法线
操作逻辑
- 通过vop给曲线标记颜色,通过颜色来删除曲线上的点
- 通过copy节点根据撒的点复制曲线
- 给复制的曲线添加polyframe节点将tangent的信息写到N法线上
- 添加point节点将法线的信息反转
22:vopsop参数及效果控制
观看笔记
- rotate节点可以实现切线(法线)旋转
- point函数可以获取到具体点序号的属性
- scatter随意撒点导致撒的点不在曲线的点上,这导致后面合点会出问题
- sort节点可以修改序号排序,甚至可以修改为随机
操作逻辑
- 添加point节点加入pscale属性
- pscale加入随机数实现,实现随机大小
- 加入Vop point 实现切线方向向左的往左偏移,向右的往右偏移
- 加入rotate节点乘到法线属性上实现偏移
- 加入random节点实现随机旋转
- 加入fit函数调整random输出值的范围
- 加入外部参数方便外部调节
- 加入vector to float节点获取N的X轴向
- 加入two way switch 节点进行判断切换
- 加入compare节点判断是否大于零
- 加入multiply constant来乘-1
- 实现大于零往正转,小于零往负转
- 主干线加入ratio属性
- copy节点加入stamp复制ratio
- 支线加入sub_ratio属性 实现支线从主干线的ratio值到1
- 加入fuse节点合并顶点
- 通过表达式根据ratio删除点实现雷电的从零到一的效果
- 添加polywire添加实现多边形
添加normal节点修正法线
雷电案例总结
雷电这个案例的逻辑还是挺复杂的,整理出来之后就清晰了很多,难点都在vop point里面。
玻璃裂痕案例
23:玻璃裂纹制作思路
观看笔记
- 玻璃裂纹需要无序的点进行曲线复制
- 用曲线去模拟玻璃裂纹的感觉
- 通过int取整可以实现0.1 0.2 0.3的间隔取值
- transfer attribute 可以实现将其他地方的属性传送到需要的地方中
操作逻辑
- 加入add节点添加点
- 用copy节点复制点
加入vop让点在平面上随机排布
添加point节点,通过pscale加入随机的大小
- 添加line节点,并加多一些点,为后面传递颜色做准备
曲线要让中心与原点居中,复制的时候才合理- 添加transform节点来旋转直线
- 通过copy stamp来传递旋转值
- 用同样的方法制作弧线
- 弧线的pscale可以取整,看起来更加合理
另外弧线的长度也可以根据pscale的值进行调整
通过color节点分别给弧线和直线添加黑和白的颜色
- 添加attribute transfer节点将直线的信息传递到弧线上
Distantce Threshold 来控制传递的精度
通过attribute promote节点将point的Cd属性转成primitive
promote的averge合并可以让曲线的颜色混合,没有传递到值的曲线颜色位黑色- 删除黑色的弧线
- 去除颜色属性
- 通过merge合并
24:玻璃裂纹的蔓延动画及渲染
观看笔记
- gourp节点的Bounding volume 可以用几何体去框选需要的点线面
- box节点可以通过根据上面的bounding box生成大小
操作逻辑
- 加入sphere节点添加分组的用几何体
- 加入mountain节点给球加入随机效果
- 加入transform节点设置关键帧实现模型组件变大的效果
加入group节点进行分组
加入point vop节点实现噪波(实现原理与上面撒点的一致)
- 加入delete节点进行删除,删除非打组的部分,实现模型由中心向外延伸
加入polyextrude节点挤压面
挤压后需要去掉用于生成的曲线
玻璃裂痕案例总结
这个案例也不复杂,逻辑理顺之后非常简单。
最后的噪波实现如果按照教程赋予给多边形会导致每一帧模型都在变化,所以最后我把噪波加载曲线上了。
脚印案例
25:solver节点的特点
观看笔记
- solver节点可以实现根据时间累加的效果
- 脚印就是将相应的面往下拉,只要模型的细分足够就可以看到比较精细的结果
+
操作逻辑
- 通过该alembic节点加载模型
- 缩放模型
+ 加入grid节点生成地面
- 分别给模型赋予不同的颜色
通过solver节点来处理attribute transfer
实现触碰的区域有颜色区分,并且效果是叠加的
加入group节点根据颜色信息进行打组
输入的表达式不能有空格,否则不起作用加入time shift节点实现保留240帧的结果
+ 加入subdivide对组细分
加入第二个solver节点进行脚印变形
这里的group节点需要勾选unshared Edges来实现+ 通过magnet节点实现模型往下移动的效果,magnet只能接收metaball的体积
- 加入color节点让地面颜色统一
26:solver的使用
观看笔记
- 通过xyz distant 来获取地板周围的区域
操作逻辑
通过attribute create 创建dis值
默认值不能为零需要和搜索的最大值一致,否则最小值为零就没有凸起效果了(教程可能有误)
- 在第二个solver中加入point vop节点
加入xyz distant 节点获取人物模型和地面的接触区域
根据搜索的最大值,获取的区域由0到最大值过渡设置min节点保证最小值过滤
保护已找到的区域,从而不会导致脚离去,抬起的部分又缩回去通过bind节点获取外部dis值
如果dis的初值为零,就会导致最小过滤一直在零值上
- 在颜色处理之前加入point vop节点抬起周围的区域
fit1的范围值让0到0.5的区域变为1到0,从而实现大于0.5的区域都为黑色,0-0.5的区域逐渐变大抬起
fit2的范围让-0.1到0的区域变为0到1,从而实现Y轴小于-0.1的区域乘以0,保持脚踩坑的高度在地面以下
- 加入parameter节点生成scale参数方便外部控制抬起的程度
27:脚印效果以及改善
观看笔记
- 加入turbulence 节点增加地面抬起的复杂度
用perlin噪波的效果比较理想
脚印案例总结
脚印案例还是有点难度的,我主要是在打组的表达式以及min节点操作上面卡了不少时间,其他部分就不算太难。