Max/MSP/Jitter 教程17 - 图像旋转

kidult00 ArtxCode 9月15日

Max/MSP/Jitter 教程 11 - 矩阵混合
Max/MSP/Jitter 教程12 - 视频去背景合成
Max/MSP/Jitter 教程13 - 列表和矩阵
Max/MSP/Jitter 教程14 - 颜色查找表
Max/MSP/Jitter 教程15 - 剪刀和胶水
Max/MSP/Jitter 教程16 - 矩阵定位

00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Max 7 - Tutorial 14: Matrix Positioning
https://docs.cycling74.com/max7/tutorials/jitterchapter14

使用 jit.rota 旋转和缩放

Jitter 提供 jit.rota 对象来旋转和/或缩放图像。旋转和缩放是常见的视频效果,以不同方式组合它们还可以实现万花筒效果。jit.rota 在入口处获取视频数据矩阵(或其他类型的图像),根据对象属性的设置发送已缩放、旋转和以其他方式失真的版本。

打开教程 patch 。loadbang 触发 QuickTime 视频 dishes.mov 读入 jit.movie。单击 “Display” 开关启动 metro 开始播放视频。

视频是一个对着餐盘拍摄的三秒从左到右平移镜头。jit.movie 的循环属性初始化为 2,因此视频来回循环产生了来回平移的效果。

注意:Jitter 对象的许多属性使用参数 1 和 0 表示 “on” 和 “off”,因此可以合理地假设 jit.movie 的 loop 属性也是这样。loop 0 关闭循环,loop 1 打开,loop 2 让视频向前播放,到达 loopend 点时向后播放,而不是跳回到视频起点。

jit.rota 的 theta 属性指定围绕中心锚点的旋转角度。

拖动 “Rotation Angle” 数字框旋转视频。正(或增加)值是逆时针旋转,负(或减小)值是顺时针旋转。旋转角度 - 也就是角度(θ) - 以弧度表示。0 或 2π 的任何倍数(如 6.283185)是正常的直立位置。π 值(3.141593)或 π 的任何奇数倍是颠倒的位置。随意尝试,直到了解 theta 值与 jit.rota 行为之间的关系。

技术细节:jit.rota 用三角法进行大量内部计算,以确定如何旋转图像。如果不是三角学迷,你可能不习惯用弧度来思考角度。平时我们更常使用度数,即一个完整的旋转是 360°。在三角学中更常使用弧度,完整旋转是 2π 弧度。这是因为半径为 1 的圆的周长恰好为 2π,可以用与单位圆相交的点来表示角度。(例如,从单位圆上的一个点开始并绕圆周移动 π/2 的距离,会得到 90° 角度 - 即 π/2 弧度的角度 - 从开始的地方以圆心为中心)

另外,在三角学中,角度的正变化是围绕单位圆逆时针旋转,而在日常生活中,把顺时针运动看做 “正” 或 “增加” 更符合惯例(如钟表时针的转动)。

因此,如果把度为单位的顺时针旋转,转换为以弧度表示,需要将度角乘以 2π,然后除以 -360。

自动旋转

除了手动旋转图像外,还可以编写自动化程序提供不断变化的旋转角度。在上一章中,我们编写了一个名为 rotate 的子 patch,它使用 line 对象将色调旋转角度从 0° 增加到 360°。现在做类似的事情,但使用 bang 视频的 metro 来增加旋转角度。为了使用上的友好,用 ° 表示旋转角度,而不是弧度(在子 patch 中转换度弧度单位),另外也显示转速为 “每秒转数”。

在标有 Degrees per bang 的数字框中输入数字 6。这让旋转角度在 metro 每次 bang 时增加 6°。由于 metro 每秒发出 20 次 bang(每 50 毫秒一次),我们可以通过公式 d * 20 / 360 计算每秒的转数(即 d / 18,d 是每次 bang 增加的角度)。现在单击标记为 On / Off 的开关开始自动旋转。

双击 rotate 查看子 patch

[rotate]子 patch 中的自动旋转

用度数 * 2π / -360,将用户指定的每次旋转角度转换为弧度量。当一个 bang 进入左入口时,如果正在旋转,bang 让旋转角度增加并添加到 accum 对象中。请注意,每次增加负的角度也 ok,这让图像逆时针旋转。当总旋转角度超过 2π(或 -2π)时,split 将值发送到使用模运算的 expr,并在发送到出口前将其恢复到范围内(重置 accum 中的值)。如过旋转关闭,我们 用 sel 0 检测到该事件,将 theta 角度重置为 0。

关闭子 patch 窗口。单击 On/Off 开关停止自动旋转。

放大或缩小

jit.rota 的另一个主要功能是缩放。缩放量由 zoom_xzoom_y 属性决定。这样可以单独放大或缩小水平和垂直尺寸;或者一次更改两个属性来同时缩放。

拖动标有 Zoom 的数字框来放大和缩小。大于 1 的值会放大图像,小于 1 的值会缩小图像。直接在 x 和 y 数字框中输入值分别更改 x 和 y 的缩放尺寸(负缩放值会翻转图像并调整其大小)。

当放大图像(如值为 2)时,图像质量仍然不错,因为我们已经用 interp 1 消息打开 jit.rota 的插值属性。如果关闭 interp,会在放大时产生像素化。当缩小时 interp 没有明显的效果,它几乎浪费了计算资源。(有关像素化和插值,请参阅 Jitter 教程16)不过插值确实可以改善旋转图像的现实,即便图像缩小。

超越边缘

将缩放的两个尺寸设置为较小的值例如 0.25。

当图像由于收缩或旋转而未填满整个显示区域时,jit.rota 必须决定如何处理位于图像区域外的矩阵的其余部分。现在 jit.rota 将图像区域外的所有单元格值设置为 0,使它们为黑色。boundmode属性决定 jit.rota 如何处理位于图像边界之外的单元格。不同的可用 boundmode 设置显示在 patch 右上角标记为 Space outside the image 的弹出菜单中。将 boundmode 的值初始化为 1,让 jit.rota 清除所有外围单元格。以下是每个 boundmode设置的含义:

0 Ignor:保持所有外围单元格不变。1 Clear:将所有外围单元格值设置为0。 2 Wrap:根据需要重复图像以填充矩阵。 3 Clip:对于所有外围单元格,继续使用图像边界单元格的值。 ::...


免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

订阅 substack 体验古早写作:


关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::