Houdini学习 —— 使用音频驱动几何体变换之信号处理_谁允许你直视本大叔的的博客-程序员宝宝

技术标签: Houdini  信号处理  

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


背景

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

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


音频处理

音频导入及预处理

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

original wav

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

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

audio wav

音频滤波

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

audio wav

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

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

audio wav

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

audio wav

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

随机Trigger

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

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

Audio wav

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

Audio wav

信号集群

有的时候可能需要产生多个随机信号来驱动多个几何体信息(或者几何体的多个信息),因此有必要使用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)后,便已经产生了不同的信号:
Audio wav

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

Audio wav

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

Audio wav

Audio wav

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

<全文完>

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/noahzuo/article/details/72972125

智能推荐

动态规划电路布线_不想变蠢的蠢的博客-程序员宝宝

目录电路布线简介举例及其详细说明代码块测试结果电路布线简介在一块电路板的上下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i)),将上端接线柱i与下端接线柱π(i)相连,如图,其中,π(i),1<=i<=n,是(1,2……,n)的一个排列.导线(i,π(i))称为该电路板上的第i条连线.对于任何1<=i小于j<=n,第i条连线和第j条连线相交的充分且必要条件是π(i)>π(j)。

全网注释最详细的!测试代表员工的Employee类_t白日梦想家t的博客-程序员宝宝

题目为:定义并测试一个代表员工的 Employee 类。*它的属性包括“员工姓名”、“员工号码”、“员工基本薪水”、“员工薪水增长率”;* 他的方法包括“构造方法”、“获取员工姓名”、“获取员工号码”、“获取员工基本薪水”、“计算薪水增长额”及“计* 算增长后的工资总额”。面向小白,注释写的很详细!有任何疑问欢迎私聊我,一起讨论!!package day08_text;import java.util.Scanner;public class demo10 { public ...

计算机数学英语基础,2020考研计算机数学复习四大基本方向_weixin_39922004的博客-程序员宝宝

2020年计算机考研进入冲刺阶段,下面新东方在线为您整理了2020考研计算机数学复习四大基本方向,希望对大家有帮助!1、稳定从每年考试大纲中反映的情况来看,考研统考的三科政治、英语、数学当中,数学的变化情况是很小的。每一年的考点和前一年相比,不论是命题方向还是试题特点上,都是在不断重复的。正是由于考研数学的稳定性,九十年代甚至是八十年代的考研真题与现在的考试试题相比,都没有发生很大的变化。它的稳定...

一级列表_ButterKnife_勾选事件的联动_JiangMo_JM的博客-程序员宝宝

加减public class JiaJian extends LinearLayout {TextView text_jia,text_jian,text_num;int index=0;public JiaJian(Context context) {super(context);}public JiaJian(Context context, AttributeSet attrs...

HttpClient和HttpURLConnection对比_WannaRunning的博客-程序员宝宝

  初学WebService调用涉及到java发送http请求,项目中用到的是Httpclient,找了资料整理一下:HttpClient简介    在一般情况下,如果只是需要向Web站点的某个简单页面提交请求并获取服务器响应,HttpURLConnection完全可以胜任。但在绝大部分情况下,Web站点的网页可能没这么简单,这些页面并不是通过一个简单的URL就可访问的,可能需要用户登录而且具有相...

D45XT100-ASEMI电机专用整流桥45A 1000V_ASEMI99的博客-程序员宝宝

编辑:llD45XT100-ASEMI电机专用整流桥45A 1000V型号:D45XT100品牌:ASEMI封装:DXT-5电性参数:45A 1000V正向电流:45A反向耐压:1000V引脚数量:5特性:大功率三相整流桥产品描述D45XT100的电性参数:最大正向平均电流45A;最大反向峰值电压1000VD45XT100的包装方式:250pcs/盒,20K/箱D45XT100整流桥被广泛适用于:电源、充电器、适配器、LED灯饰、大小家电、民用及工业设备等

随便推点

EOS踩坑之测试网络的使用_绿绿峰的博客-程序员宝宝

刚入坑的小伙伴一定被各种环境的搭建方法搞得直蒙圈,啥高配置的电脑,运行本地节点等等。因为各种原因失败率居高不下,为了方便开发和测试,诞生了一些测试网供大家使用,例如jungle,kylin。其中jungle是国外的,因此测试时受到网络的影响较大,获取代币的时候,刷谷歌验证码还需要特殊手段~相比较,咱还是钟情于kylin,下面主要说kylin测试网(称其为“麒麟”测试网)主网址是:麒麟kylin...

ZYNQ7045 系统升级实现方法(multiboot)_weixin_43189165的博客-程序员宝宝_zynq7045

1.实现原理框图系统分为6个部分组成:fsbl:原始fsblgoogen_image:由3块组成分别为fsbl、bit、u-bootupdate_image:由3块组成分别为fsbl、bit、u-bootkernel_google:原始kernelkernel_update:更新kernelupdate_flag:更新标识2.实现原理flash存储格式及地址分配如上图所示位于...

jQuery下载与安装_有何不可有的博客-程序员宝宝

在浏览器搜索:jquery.com到达jQuery的官方网站:点击:到达如下页面:可见:第一个是压缩版,第二个是未压缩版(源代码)。学习中可下载第二个。区别:源代码:可读性好,但下载量大压缩版:可读性没那么好,但尺寸小,速度快,执行效率高。下载完成后,在eclipse中新建一个项目,在项目的WebContent中新建一个文件夹:把下载好的jquery-3.6.0.js复制粘贴到该文件夹即可:...

CentOS6虚拟机安装nginx_无情的搬砖机器的博客-程序员宝宝

参考这个文章第一步安装安装pcre的时候执行./configure报错然后安装使用命令gcc可以解决,yum -y install gcc gcc-c++然后发现各种依赖找不到报错,按照这个文章解决然后继续安装出现这个问题,再按照这个文章解决现在重新执行./configure后面顺利第二步安装--顺利第三步安装--顺利第四步安装执行./configure报错如下:参考这里解决继续即可...

Android桌面负一屏实现.md_世界末日不是谣言的博客-程序员宝宝_android负一屏开发

Android桌面负一屏实现负一屏的实现主流有两种方式Launcher自行开发,往Workspace中插入一个自定义的CellLayout来作为负一屏的容器。 这种方式是最常用的方案。利用Google的feed屏方案,基于ILauncherOverlay和ILauncherOverlayCallback这两个接口来实现,Launcher作为客户端,负一屏是一个独立应用作为服务端,通过aid...

VMware共享文件夹在虚拟机中什么位置_潇洒不放纵的博客的博客-程序员宝宝_虚拟机共享文件夹在哪

今天在VMware中设置了共享文件夹后,在虚拟机中老是找不见共享文件夹,尝试半天终于解决,如下:1.首先使用cd /进入根目录2.在进入mnt目录3.然后看一下这个文件夹是否东西ls,若没有,新建文件夹hgfsmkdir hgfs创建此文件4.执行vmhgfs-fuse /mnt/hgfs5.此时,在进入hgfs文件夹,cd hgfs6.最后执行ls,即可看到我们在Windows端的...