Reaktor 之 Multi Display 的用法

分享到微信朋友圈

· 曾照南 添加于 2017-10-09 · 暂无评论

作者:dreason

相信很多人对Multi Display模块(图1)是既熟悉又陌生,熟悉是因为你可能经常有看过它(这里不包含使用),陌生则是你可能不知道怎么使用它,说白了,你应该有看过用它做出一些简单但又好看的图形展示,可压根就不懂得它该怎么用;好的,今天,我就花点时间来讲讲这个模块的一些东西。


图1

首先,我们知道它是一个图形模块,你可以利用它提供的几种绘图元素来进行设计,而提供的绘图元素可以通过Obj这个输入不同数值来进行切换。(图2)


图2

从图2,我们可以看到它提供了Rectangle矩形,Bar也是跟Rectangle一样的矩形,只是Rectangle中间是没有填充颜色的,当然还有Line直线,而直线的类型也提供两种不同实现方式,除了这些,还有一个叫Cross,它是两条垂直相交的直线。

好的,了解这些绘图元素不难,重点是,了解这些后能用它们来做什么,首先我们来做一个很简单的例子,请看下图(图3):


图3

可以看出这是一个简单的搭建,利用Mouse Area模块来实现,利用鼠标去拖出不同大小的矩形,当然上面需要注意的是Mouse Area模块和Multi Display模块的作用值范围要一致,也就是说Mouse Area模块的X的取值范围是0到1,那么作用到Multi Display模块的X1,相应的X1的值范围也要是0到1。

不过很多人可能觉得图3的搭建太简单了,于是会想说能不能做点变化,这个肯定可以的,因为对于Multi Display模块,它还有X2和Y2没用到,就是说到这里,你可以知道为什么上面你只能用鼠标拖出一个不同大小的矩形,而这个矩形有一点都是永远固定在最底部,那是因为X2和Y2等于0的结果。

好吧,利用X2和Y2,我们可以来做一个固定大小的正方形。(图4)


图4

上面我们利用到了偏移值来决定正方形的大小,尽管偏移值我用的都是统一一个变化值,但你也可以每个每个分别取设定来得到一个不一样的矩形,除了矩形的变化以外,你也可以换别的绘图元素,比如说Cross,改变一下Obj的数值为-4。(图5)


图5

以上是Multi Display模块最基础的用法,当然你可能觉得这太基础了,对你的需要还不够,或许说,你想做点自己设计的图片,同样的,Multi Display模块也为我们提供了可以实现图片显示的功能,这个就是当Obj大于等于1的时候,比如我做了一个下面这样的图片:


图6

这是一张PNG格式透明图片,同样的我依然利用上面那个简单的例子来进行切换,也就是说我想把上面例子中的矩形绘图元素改成我自己做的这个图片,那应该怎么去实现呢?

首先我要先加载这个图片吧。(图7)


图7

好吧,当你设置完后,你就可以实现图片显示了(图8)。


图8

可以看出图片绘图元素跟其他绘图元素还是有点不同,对于X1、Y1、X2、Y2的设置需要改变下,但从图片的显示上,我们也发现一个问题,那就是你拖动鼠标的时候,图片是显示在鼠标下面,并没有对位到图片的中心点,也就是说还需要对X和Y的值进行偏移,那么问题来,这个偏移值应该要设置多少才能正好对到图片的中心点呢?

我们来思考下,Mouse Area模块和Multi Display模块的值范围都是0到1,它们默认在Panel上显示的图形大小是150像素*150像素,而对于加载的图片,它的大小是20像素*20像素,如果从像素的偏移来理解的话,我们只需要移动10个像素就可以把图片定位到中心点,可Multi Display模块的值范围只是0到1,也就说像素偏移的话要换算到0到1这个范围内,因为是移动10个像素,所以换算到0到1之间就是10除以150,即0.067,这个就是0到1这个范围内应该要移动的偏移值,于是我们就可以得到下面这样的搭建:(图9)


图9

到这里算是已经完成了我们想要的结果了,当然最后你还可以再更优化,比如你可以利用当鼠标按下的时候,图片切换到下一张,释放后又变回来。(图10)


图10

行,结束上面的基础,接下来,我们要来做一个稍微有点难度的,首先我来看一张图:(图11)


图11

没错,如果你玩过Ableton Live,那么这个效果器你应该不陌生,但我并是要来做这个效果器,而是你看到了上面效果器上的不同颜色相交的正弦波形,其实这是两条正弦波形,也就说我要来做这个图形显示,假如换做以前的话,我肯定是会用两个Multi Display模块来实现,因为很简单,但问题是如果只是让你用一个Multi Display去实现它怎么做呢?而且还要注意的是,两个正弦波形颜色也不一样哦。

其实要实现也不是很难,我只需要分成两部分来实现就可以了,比如我设置Multi Display模块Objects为100,如下图所示:(图12)


图12

好吧,接下来我要分成两部分来实现,也就是说我们可以把100分成前面50和后面50,前面50用来实现第一个正弦波形,后面50则用来实现第二个正弦波形,而要实现这个最关键的点就是用Iteration模块。(图13)


图13

上面我仅仅只是实现了第一部分的图形显示,注意我用到了Modulo模块来处理,这里用它是要来实现上面的两部分处理,当然我只用了一部分,另外一部分其实我可以用Router模块来实现。(图14)


图14

OK,很多人可能做到这一步就开始问题来了,尽管已经实现了要的结果,可图形上有条突兀的线怎么去掉呢?还有就是颜色应该怎么去改变呢?首先在做这些改变,我们需要对Multi Display模块属性做些设置,让颜色和Alpha通道可以独立作用。(图15)


图15

上面把RGB和A勾选掉就要让Index能作用到它们,这样一来我们可以让Modulo模块的Div去控制颜色的变化,对了,为了让那条直线消失掉,我们需要对Iteration的所有数值进行判断,让它等于49的时候,Multi Display模块的A输入接收到的数值等于0,所以我还需要用到一个判断模块来判断不等于49的部分,因此最终结果如下图所示:


最后要补充的是,如果你觉得上面的图形变化不够细致的话,你可以把Objects数增加,比如上面都是100,你可以设置到200,设置更高,但你可以注意到,无论你怎么设置,都不会影响搭建的结果,比如说对于Iteration模块的N输入,如果你一开始是用99,那么对于Multi Display模块改变Objects数值后依然不会作用到它,所以图形在细致的表现上依然没有变化,当然上面颜色的设置,大家可以自己随机挑选自己想要的,最终要提醒的是,无论是以后怎么去搭建模块,一定要想到它的通用性和灵活性,不然假如你又要改变搭建的东西,你要动的地方估计会改到你吐血。



可下载 Midifan for iOS 应用在手机或平板上阅读(直接在App Store里搜索Midifan即可找到,或扫描下面的二维码直接下载),在 iPad 或 iPhone 上下载并阅读。

文章出处:http://magazine.midifan.com/detail.php?month=2017-10#19做人要厚道,转载文章请注明出自 midifan.com,谢谢

暂无评论

添加评论