- Max/MSP/Jitter 教程 11 - 矩阵混合
- Max/MSP/Jitter 教程 12 - Chromakeying 视频去背景合成
- Max/MSP/Jitter 教程 13 - 列表和矩阵
- Max/MSP/Jitter 教程 14 - 颜色查找表
00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Tutorial 13: Scissors and Glue
本教程学习如何使用两个简单的对象来切割和组合二维矩阵的矩形区域。
教程 patch 有两个互补的 Jitter 对象:将矩阵切割成大小相等的小矩阵的 jit.scissors
; 将多个矩阵粘贴到一起的 jit.glue
。还会简要介绍 router
对象,它可以将 Max 消息从多个源引导到多个目的地。
读取视频
patch 左上角的 loadbang
自动发送 read traffic.mov
消息给 jit.movie
加载交通镜头的视频。
点击 patch 顶部的开关启动 metro
。视频出现在底部较大的 jit.pwindow
中。有趣的是,图像被切割成四个象限,出现在分开的的 jit.pwindow
中。
切割
jit.scissors
把包含视频的矩阵分割成四个小矩阵:
jit.scissors
将任意尺寸/类型/平面数的矩阵切割成更小的矩阵,然后在不同出口发送。@rows 和 @columns 属性指定每次接收到矩阵时分割成多少个小矩阵。这里 jit.scissors
将图像拆分为四个小矩阵(2 列 2 行)。这些单独的矩阵以列优先顺序发送到各出口(从左到右,然后从上到下)。
jit.scissors
有两个属性非常重要:
1)出口数量在创建对象时就确定。只有在对象框中指定行和列属性,才会生成对应数量的出口。例如,jit.scissors @rows 10 @columns 2
将创建一个有 20 个出口的 jit.scissors
实例(包括用于查询属性的最右出口),如果 jit.scissors
没有参数,就只会生成一个出口。可以用 Max 消息更改行和列属性,但是无法添加超过对象初始化时的出口数量。
2)jit.scissors
发送的矩阵大小等于矩阵切片的大小,而不是整个原始矩阵。例如,教程 patch 中的四个较小的矩阵,每个都是 160x120 个单元,而不是 320x240。
Routing the Matrices
由 jit.scissors
输出的四个小矩阵,被发送到两个不同的地方: jit.pwindow
和 router
对象。彩色接线显示每小矩阵被发送到了哪里。
router
对象
router
是 gate
和 switch
的组合。它有两个参数(输入口数量和输出口数量),由左入口的消息指定。router
能处理的大多数消息与 MSP 对象 matrix~
相同。因此可以跟 matrixctrl
对象一起使用。
router
右侧的四个入口从 jit.scissors
的四个矩阵出口获取输入。receive routeit
对象从 patch 的右下方控制 router
的 s routeit
获取消息。router
最左边四个出口连接到 jit.glue
对象,我们稍后会讨论。
控制路由器
发送消息 patch $1
后跟入口号($1)和出口号到 router
, 会在该入口和对象的出口之间建立虚拟连接。到达该入口的任何消息会转发给相应出口。如果先前已有入口连接到该出口,patch 消息将切断该连接以支持新连接。
patch 中的 radiogroup
对象控制四个小矩阵(到达入口)被发送到 router
的哪些出口。入口和出口从 0 开始编号,所以 2 1
在 router
的 3 入口和 2 出口建立连接。
单击 radiogroup
控件并观察下方 jit.pwindow
的图像如何变化。注意 router
如何使剪切的矩阵,出现在底部合成图像的四个象限中。
整合的胶水
patch 底部的 jit.glue
做与 jit.scissors
相反的事情。行和列的属性指定入口数而不是出口数,以网格排列的输入矩阵合成一个矩阵输出。
将相同的矩阵发送到 jit.glue
的四个入口
要点:与
jit.scissors
一样,jit.glue
只能在对象初始化时创建入口和出口,对象框中的行和列属性将确定入口数。此外,由jit.glue
生成的输出矩阵的大小,等于所有小矩阵的大小(例如,四个 160x120 矩阵将合成一个 320x240 矩阵)。
jit.glue
默认当从左入口接收到新矩阵时,只输出复合矩阵。如果断开 jit.glue
最左边的入口,就不能再获得任何新的输出矩阵。syncinlet 属性可让 jit.glue
发送输出到不同的入口。syncinlet 值为 -1 时,jit.glue
在任一入口收到新矩阵时都输出新的合成矩阵。虽然看似不错,但会增加大量冗余工作,降低 Jitter 的帧处理速率。
小结
jit.scissors
对象切割矩阵成更小的、大小相等的矩阵。jit.glue
对象把相同大小的矩阵合并到一起生成复合矩阵。两个对象的行和列属性分别确定出/入口的数量,以及矩阵被切割或合成的方式,这在对象创建时就要给出。router
以任意方式连接多个入口处的消息到多个出口,跟 MSP matrix~
对象类似。
- 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 易患上癔症……不妨入群互助
👇👇👇