Max/MSP/ Jitter 教程20 - 迭代和矩阵重采样
Max/MSP/Jitter 教程11 - 矩阵混合
Max/MSP/Jitter 教程12 - 视频去背景合成
Max/MSP/Jitter 教程13 - 列表和矩阵
Max/MSP/Jitter 教程14 - 颜色查找表
Max/MSP/Jitter 教程15 - 剪刀和胶水
Max/MSP/Jitter 教程16 - 矩阵定位
Max/MSP/Jitter 教程18 - 使用已命名的矩阵
Max/MSP/ Jitter 教程19 - 使用已命名矩阵的反馈
00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Tutorial 18: Iterative Processes and Matrix Re-Sampling
https://docs.cycling74.com/max7/tutorials/jitterchapter18
本教程演示何时应该使用已命名 jit.matrix
对象的更复杂示例,以及如何使用 jit.matrix
对图像增采样(upsampling)和减采样(downsampling)。
patch 左上角包含一个 jit.movie
,patch 打开时会加载一个静止图像 fuzz_circle.jpg。
单击开关启动 metro
。图像出现在 patch 右下角的 jit.pwindow
中:
Getting Drunk
patch 顶部将 jit.movie
中的图像写入链条中的第一个 jit.matrix
。bangbang
对象发出的 bang 用 drunk
对象随机变化坐标,来改变 jit.matrix
每一帧的 dstdimstart 和 dstdimend 属性。请注意第一个 jit.matrix
的 usedstdim 属性为 1,它将缩放输入矩阵:
第一个 jit.matrix
只是用来缩放圆形图像以适应输出矩阵的 80 x 60 区域。请注意,格式化缩放图像坐标的消息框,也会逐帧清除矩阵(用 clear
消息),这样就不会残留之前的图像。drunk
改变了圆圈的位置,让它四处抖动。
单击 patch 右下角 jit.pwindow
中的某个位置。圆圈将跳到单击的位置,并从那里开始移动。
在 jit.pwindow
中单击鼠标的结果将发送到 r winclick
对象。route
对象将 mouse
相关的信息抽出来,用 unpack
对象提取前两个元素(鼠标单击的 x 和 y 位置)。然后使用来设置 drunk
对象的新原点。
反馈网络
一旦圆圈图像已被缩放并由 jit.matrix
放置好,patch 流程就进入一对名为 blurry 的 jit.matrix
反馈链:
反馈循环
这一部分包含四个 jit.matrix
(不包括顶部的一个缩小圆形图像的对象)。其中两个对象同名(blurry),仅用于存储和检索由 patch 的其余部分之前生成的矩阵。最上面的 jit.matrix
将矩阵发送到第一个 jit.op
的右入口。此外,它用 bangbang
发送 bang 到第一个 jit.matrix blurry
让它输出矩阵。该矩阵最终到达 jit.op
的左入口,然后显示(通过 jit.pwindow
)并乘以标量(第二个 jit.op
对象)。它最终会覆盖先前的矩阵(进入下面的 jit.matrix blurry
)。先不管中间一些对象,可以看到 blurry 矩阵将保留圆形图像前一“帧”的某个版本:
第一个 jit.op @op max
组合新旧图像。@op max 比较两个矩阵中每个单元并保留值较高的那个单元。第二个 jit.op @op *
对象乘以标量(由 patch 右侧的数字框发送到 s fb
)使图像变暗:
反馈量指定图像在存储之前变暗的程度
在 patch 的蓝色区域中用标记为 Feedback
的数字框来更改反馈量。单击 jit.pwindow
移动圆圈时,注意圆圈后的轨迹如何增加或减少,这取决于所设置的反馈量。
增采样和减采样
图像处理算法的最后一步,涉及这两个对象之间的区域:发送前一帧中保留的矩阵的第一个 jit.matrix blurry
,以及合成前后两个矩阵的 jit.op
:
用 jit.matrix
重新采样图像
教程 patch 中两个绿色 jit.matrix
重新采样上方的 jit.matrix
的模糊图像矩阵。两个 jit.matrix
中的第一个将 dim 的属性设置为 4 x 4。可以用蓝色区域中标记为 Pixelation 的数字框来更改。这个数字被发送到 jit.matrix
上方的 s dim
对象。
在教程 patch 的蓝色区域中,更改标记为 Pixelation 的数字框。注意圆形轨迹如何变化。
对图像矩阵减采样,jit.matrix
将 320 x 240 矩阵从其输入复制到一个小得多的矩阵中,舍弃多余的数据。得到像素化的图像,可以用矩阵的 dim 控制。
第二个 jit.matrix
将矩阵增采样回到 320 x 240 大小。当后续的对象处理矩阵时,它们有全分辨率图像并将输出全分辨率矩阵。
jit.streak
对象通过随机复制到相邻单元得到好看的像素化轨迹效果。jit.streak
的 prob 属性控制矩阵中任何给定单元格被复制到相邻单元格的可能性。这里的 prob 为 0.5,任何给定单元格都有 50% 的可能性。
技术细节:默认情况下
jit.streak
将单元格复制到左侧。更改 direction 属性将改变此行为。还有一个 scale 属性可以指定被复制的单元格与其原始值的亮度比值。jit.streak
的帮助文档有更具体的信息。
小结
成对命名 jit.matrix
可以有效地存储先前迭代。这些技术可以用合成对象(例如 jit.op
)组合先前矩阵与当前矩阵来生成视频延迟效果。还可以使用 jit.matrix
重新采样图像(使用 dim 属性)以更有效地执行算法(矩阵越小,图像处理得越快)并创建像素化效果。jit.streak
对象根据概率因子(prob 属性)随机复制单元格到相邻单元格。
Max/MSP/Jitter 教程系列
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 - 交叉渐变
友情提示:独自折腾 Max 易患上癔症……不妨入群互助
👇👇👇