Houdini 音乐驱动模型动画2笔记

时间:2021-08-02 04:30:56

1.实现的效果,通过多通道分别控制各圆柱的高低

Houdini 音乐驱动模型动画2笔记


2.准备声音文件,注,音乐文件及文件属性中不能有中文


3.受驱动物体的建立

建立line对象,使线条方向朝X轴正方向,为了让线条的中心点居于线条的中心使用属性绑定

ch("/obj/geo1/line1/dist")*-0.5

Houdini 音乐驱动模型动画2笔记


建立tube,让tube的中心点位于tube的底部

ch("/obj/geo1/tube1/height")*.5

Houdini 音乐驱动模型动画2笔记

通过copy节点拷贝到线条的点上,再通过表达式,使tube的半径贴在一起

1)使rad2的值参考撕1的值,所以在rad2中写入表达式
ch("/obj/geo1/tube1/rad1")
2)rad1的值通过线的点数与线的长度计算出来 :
半径=线长度/(线点总数-1)*0.5
ch("../line1/dist")/(ch("../line1/points")-1)*+0.5
Houdini 音乐驱动模型动画2笔记


4.音频文件的导入,详见上一篇笔记

在pitch节点中,pitch divisions的值与圆柱个数一致,即与线的点数一致
ch("../../line1/points")
空格+H,最大化显示音频数据

增加lag节点以及filter节点,对曲线做平滑处理
Houdini 音乐驱动模型动画2笔记


增加rename节点,对通道进行重命名
增加null节点,进行输出,对节点进行重命名“out_music”

5.传入音频数据

回到geo级别下,line1下增加节点“attribcreate1”,注:Local Variable中的数据必须全部大写
Houdini 音乐驱动模型动画2笔记

在attribcreate1节点下增加channel节点
CHOP选择处理好的数据节点out_music
Channel Scope,写入music
Attribute Scope,写入此节点为的父节点中定义的变量名字,(注:统一小写,上面的Name中tubeHeight改为tubeheight)
Houdini 音乐驱动模型动画2笔记

Details View面板中可以看到tubeheight属性的值,播放动画,看到其值在不断变化,说明音频数据传入正常
Houdini 音乐驱动模型动画2笔记


6.将音频数据与圆柱的height值进行绑定


copy1开启stamp,增加variable
cur_h 值$TUBEHEIGHT

tube中height中写入表达式
stamp("../copy1","cur_h",2)

如果绑定成功,在视窗中会马上显示出来
Houdini 音乐驱动模型动画2笔记


如果音频数据值为0那么圆柱的高度就为0,圆片不好看,为其添加一个初始值
out_music节点之前增加“math”节点,
Houdini 音乐驱动模型动画2笔记

7.为圆柱增加渐变


copy1下增加uvproject节点,uf调成如下图所示
Houdini 音乐驱动模型动画2笔记

增加vopsop节点,双击进去
1)需要导入属性"importattrib1"节点作为UV数据,Attribute值为“uv”
2)UV是一种矢量型数据,这里只需要它的V方向数据,所以从第二个节点导出
3)V方向数据导入到渐变ramp1节点中,而渐变节点的数据作用对象为输出对象的颜色“Point Color Attribute”

整个的数据流程如下图所示
Houdini 音乐驱动模型动画2笔记

完成上面的操作之后,回到VOPSOP属性面板,可以看到渐变的显示,调一个渐变颜色观察效果
Houdini 音乐驱动模型动画2笔记

但是,因为圆柱横向分段数少的缘故,所以看到在同一高度显示的渐变效果不一致
Houdini 音乐驱动模型动画2笔记

增加圆柱的分段个数
如果给一个给定的分段值,如10或20,那么对于很低的圆柱它不需要这么多的分段,为了优化,使用圆柱的高度对分段数进行控制

tube1属性中Detail面板下,Rows中写入表达式

floor(ch("../tube1/height"))

再观看效果
Houdini 音乐驱动模型动画2笔记

笔记结束!