×Preface× 先介绍下自己。本人上海音乐学院音乐工程系毕业,无编程基础。大二的时候玩过VB,学的太快了,便没有继续学习。直至鬼使神差发现了processing以后,便下载了多本教程边学习边小做作品。 这次合作源于我的专业J老师要参加本次电子音乐周,希望有人能够做一点视觉交互方面的东西。我们系虽然有学max,不过大部分还是用msp,所以老师就找我合作。同时合作的还有J老师的弟弟,数学专业出身,编程人员。 ×一× J老师开始给我看了他想要的效果,是一个很像分子式的视频。在我听了他做的音乐开头部分之后,觉得更想做类似星星的视觉效果。于是打算先试试看。最初想法就是载入星星的图像,然后根据音量的高低运动。但是由于编程能力有限,星星的运动无法很灵活的根据声音变换。遂打算根据老师的想法做类似分子式旋转的效果。首先找到了traer的example 此eg是通过点击鼠标来生成每一个node,所以先把mouse改成根据音量的大小来生成node,我用minim这个library,设置为: for(int j= 0; j < in.left.size(); j+=100){ if(in.left.get(j)*1000>280 ){ addNode(); 意思是,大于280就生成一个Node. 另外把2d球改成3d的球,以及把连接的线也改成3d的(此处询问了豆瓣上数位编程高手,十分感谢) 球问题不大,线的话,增加一个z: vertex( a.position().x(), a.position().y(),a.position().z() ); vertex( b.position().x(), b.position().y(), b.position().z() ); 并在最后一行改: p.position().set( q.position().x() + random( -0.05, 0.05 ), (q.position().y() + random( -5, 5 )), q.position().z() + random( -0.5, 0.5 )); 改成3d以后再旋转起来: angle += 0.009; rotateY(angle*13); 基本完成 结果配上音频一看,效果虽然是有,但是十分不明显。虽然是每一个比较响的声音都会生成,但是3d球本身没有变化,后来把球的半径也和音量连起来,但是效果很怪。所以完全推翻。 ×二× [...]