Houdini学习 —— 使用音频驱动几何体变换之信号处理

这篇博客介绍了如何在Houdini中使用音频来驱动几何体的变换。


背景

Houdini是我个人非常喜欢的DCC工具,节点式的操作与过程化的思想简直是天生一对。这篇博客介绍了如何以.wav音频文件作为输入,从而根据音频中的鼓点来驱动几何体进行规律性的变换的方法。

整个过程大致可以分成三大部分 —— 第一部分是针对于音频进行处理,从而将连续的杂乱无章的信号转化为规律的值为0或1的Trigger鼓点信号;第二部分是将0/1的Trigger信号转化为驱动的连续信号,最后一部分则是针对于鼓点信号的输入来驱动几何体。


音频处理

音频导入及预处理

首先是进行音频的导入,这个应该不用细说,使用File节点即可,在Channel File中选择对应的.wav文件即可,输入的波形如下:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

可以看到波形中有绿色和黄色两个声道,实际上我们只需要针对一个声道的鼓点进行处理即可,因此选择删掉左声道:

实现方法也很简单,使用Delete节点即可,将Select Channels设定为By Channel Name,并且将Channel Names设定为chan1,输出波形如下:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

音频滤波

首先是进行简单的滤波,毕竟原来的波形中的噪声实在太多,因此使用Parametric EQ节点进行一次滤波,使用默认设置即可,输出波形如下:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

通过试听能够得到比较清晰的鼓点,但是发现查看波形属性后发现整个波形的信息还是太多,而且采样频率是44100HZ,有点太高了,因此使用envelop节点来进行一次处理并且重新采样一下,从而得到一个比较……额……清爽的波形:

这里我将Envelop Width设定为2,并且采样频率设为96,启用重采样,得到的波形如下:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

然后就是针对于输入的波形来产生Trigger信号了,简单的使用Trigger节点,并且设定好对应的Trigger Threshold值,我这里设定为0.042,输出波形如下:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

可以看到这样以来就产生了纯净的0/1的Trigger信号。

随机Trigger

然而如果需要针对Trigger信号来驱动几何体集群,那么我们需要产生随机的多重Trigger信号,因此这里对其做一些额外处理:

首先添加噪声信号,使用noise节点,并且将type设定为Random,随后调用hold节点,输入Trigger信号,从而产生随Trigger信号触发的随机值,如下图:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

我们将其作为一个与原信号值相乘的数值,因此我们需要0/1值,因此使用logic节点,Convert Input节点设定为Off When Zero Or Less,接着使用Math节点将其做一个乘法,从而得到一个具有随机性的0/1信号:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

信号集群

有的时候可能需要产生多个随机信号来驱动多个几何体信息(或者几何体的多个信息),因此有必要使用copy节点来产生信号集群。

需要针对信号产生多个集群,则需要使用一个constant节点作为template,这里设定为chan[0-9],并且去掉Single Frame,将End frame设定为1000,这样一来就产生了10个对应的信号。

另外,每个信号的噪声Seed需要针对每个信号而不同,所以在copy节点的variable中,添加对应的seed值,让其使用rand()函数而生成(我这里使用了rand($C + 23)作为seed的variable值),勾选Cook Each Copy

此后,将noise节点的Seed值改为表达式stamp("../copy1", seed, 0)后,便已经产生了不同的信号:
Houdini学习 —— 使用音频驱动几何体变换之信号处理

由于我预备使用这些信号来驱动几何体的旋转,因此需要使用count节点来获得其旋转的角度,可以看到得到了一个比较不错的信号集群:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

之后就是解决尖锐的跳跃了,这个简单,使用filter节点即可,我将Filter Width节点设定为0.6,最后再将值乘以90即可,得到的信号如下:

Houdini学习 —— 使用音频驱动几何体变换之信号处理

Houdini学习 —— 使用音频驱动几何体变换之信号处理

暂时先写到这里,几何体变换应该是很简单的处理了,篇幅所限,下篇博客再讲吧……

<全文完>