Max/MSP/Jitter 教程11 - 矩阵混合
Max/MSP/Jitter 教程 01 - 什么是矩阵?
Max/MSP/Jitter 教程 02 - Jitter 对象的属性
Max/MSP/Jitter 教程 03 - 播放 QuickTime 视频
Max/MSP/Jitter 教程 04 - 创建矩阵
Max/MSP/Jitter 教程 05 - 矩阵的数学运算
Max/MSP/Jitter 教程 06 - 控制视频播放
Max/MSP/Jitter 教程 07 - ARGB 颜色
Max/MSP/Jitter 教程 08 - 调整颜色
Max/MSP/Jitter 教程 09 - 调整图像颜色
Max/MSP/Jitter 教程 10 - 交叉渐变
00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Tutorial 9: More Mixing
https://docs.cycling74.com/max7/tutorials/jitterchapter09
本教程探讨用 jit.scalebias
和 jit.op
实现交叉渐变的技巧。它比 jit.xfade
方法复杂一些,但更灵活。
混合和交叉淡化
上一章讲解了 jit.xfade
用缩放(乘法)和加法以不同的比例混合两个矩阵。本教程将使用 jit.scalebias
和 jit.op
对象来自动执行这些数学运算。
这样做有一些好处。首先能清楚地演示混合和交叉渐变的数学过程。其次能看到 jit.op
如何对两个输入矩阵做数学运算。(教程 5 中展示了 jit.op
和标量值如何作用于单个矩阵)。第三,它可以分别指定两个矩阵的缩放因子,比 jit.xfade
更灵活。最后,jit.op
可以实现许多不同类型的数学运算,我们可以尝试其他组合矩阵的方法来得到不同的视觉效果。
再说 Mixing
打开教程 patch
用乘法和加法混合/交叉渐变矩阵
缩放因子设置为 0~1 之间的 jit.scalebias
将两个视频 scaled down(变暗)。下面会看到用 jit.op
的不同:两个入口的输入都是矩阵。这时 jit.op
分别对每个值执行指定的数学运算,将左矩阵中的每个值与右矩阵中的对应值配对。这样我们可以把两个矩阵的所有值相加来混合图像。
这些乘法和加法的结果与 jit.xfade
对象做内部运算的结果一样。可以试试用 patch 右上角的控件来交叉渐变视频(与上一章几乎完全相同)。
启动 metro
并使用 Mixer slider
执行从视频 A 到 B 的交叉渐变。
请注意,渐变值直接作为视频 B 的缩放因子,同时 !- 1
对象用 1 减去该值,得到视频 A 的缩放因子。这样,两个缩放因子的和总是等于 1,就像在 jit.xfade
中一样。
使用其他运算符组合矩阵
加法是两个矩阵最常见的运算。更改 jit.op
的 op 属性,可以尝试许多其他运算并查看其视觉效果。
在 Transition Time
数字框中设置一个非常长的交叉渐变时间(例如 10000 ms)。在 Operator
弹出菜单中选择 + 以外的运算符。现在点击 Go To switch
开始渐变,可以看到两个视频矩阵的运算如何进行。
弹出菜单包含 jit.op
各种运算符中的一部分。以下是菜单中选项的简要说明。
+
把 B 值加到 A-m
从 A 中减去 B,然后取模将结果折算回所需的数值范围max
使用 A B 中较大的值absdiff
从 A 中减去 B,然后取差值的绝对值|
“按位或”; 二进制操作,A 或 B 为 1,结果为 1^
“按位独占或”; 二进制操作,A 和 B 值不相同,结果为 1,否则为 0>
如果 A 大于 B,结果为 1(或 char 255),否则为 0<
如果 A 小于 B,结果为 1(或 char 255),否则为 0>p
如果 A 大于 B,结果为 A,否则为 0<p
如果 A 小于 B,结果为 A,否则为 0
其他运算符请查看 jit.op
对象参考文档。
你也可以直接拖动 jit.scalebias
上方的数字框,单独设置混合比例。还可以尝试超过 0~1 范围的值。
jit.scalebias vs. jit.op @op *
这个 patch 用 jit.scalebias
来做缩放乘法,而没有用 jit.op
与 * 运算符。为什么呢?
当 jit.op
操作 char 数据时,val 属性范围是 0.0~1.0(浮点数)或 0~255(整数)。如果想将 char 数据乘以 0~1 的某个值,用 jit.op
就可以。如果想乘以其他范围的值,就要用 jit.scalebias
,它允许 scale 的值超过 0~1 范围。 jit.scalebias
仅用于处理 4 平面 char 矩阵,在这个例子中没问题。所以在这个 patch 中,因为是在 4 平面 char 矩阵上做运算,并且想使用超过 0~1 范围的缩放因子,所以使用了 jit.scalebias
。
小结
你可以用 jit.op
对两个不同矩阵中的值执行各种数学运算。 jit.op
对每个值执行指定的数学运算,将左矩阵中的每个值与右矩阵中的对应值配对。当两个矩阵的 dim,planecount 和 type 属性不同时,jit.op
使用左入口矩阵的属性。在混合两个视频图像时,不同的数学运算符可以生成各种视觉效果。
友情提示:独自折腾 Max 易患上癔症……不妨入群互助
👇👇👇
更多 Max/MSP 应用,请翻阅 MakeNoise 系列
MakeNoise01 - 声音是什么?
MakeNoise02 - 频率和音高
MakeNoise03 - 振幅/响度/音量/增益 大乱斗
MakeNoise04 - 波形和相位
MakeNoise05 - Envelope 包络(ADSR)
MakeNoise06 - 音色和均衡器(EQ)
MakeNoise07 - 音频的「分辨率」
MakeNoise08 - 振荡器和滤波器
MakeNoise09 - 压缩 Compression
MakeNoise10 - 延时和混响