Motion · Chuyển cảnh
Xé dải chuyển cảnh
Chuyển cảnh xé rách — glitch-displace xé nhiễu (16 dải ngang lệch rung rồi cắt cứng giữa chừng), xé cấp dải với ngữ nghĩa lỗi kỹ thuật số.
Nguồn: video-shotcraft (Vincent Wei) ↗ · Apache-2.0 · Composition Remotion (React/TSX) — có video preview, không có player trong trình duyệt
Khi nào dùng
Đổi trang năng lượng cao: ngữ nghĩa lỗi kỹ thuật số/đứt gãy; xé cấp dải giữ nguyên vẹn trang mà năng lượng vẫn đẩy tới tận cùng
Ý đồ
Thẻ này quản xé cấp dải — trang bị cắt thành các dải ngang chuyển động tốc độ cao, nhưng mỗi dải nội dung vẫn nguyên vẹn. Đây là ranh giới gu thẩm mỹ được vạch ra qua nhiều lần chấm điểm lặp lại: dòng chuyển cảnh vỡ mảnh bị loại ba lần liên tiếp (doom-melt dải dọc rơi, pixel-dissolve khối vuông lật đen, facade-block gạch bay tứ tung đều bị loại), còn dòng dải thì qua vòng. Vỡ mảnh đọc là "trang bị phá hủy", dải đọc là "trang đang chuyển động tốc độ cao" — nguyên vẹn không vỡ mà năng lượng vẫn đẩy tới tận cùng. Xé ngang: các dải lệch rung trái phải + bóng mờ sáng tối, phiên bản giảm cấp thang xám của lỗi kỹ thuật số (thay RGB split bằng bóng mờ sáng-tối kép). Hợp ngữ nghĩa lỗi hệ thống/nhảy khung tức thời.
Thời lượng & năng lượng
- Thời lượng: Trạng thái trước ≥40f + xé 17–24f + đuôi ≥40f, khoảng 4.5s (135–140f)
- Năng lượng: Cao
Công thức cảnh quay (bản gốc tiếng Trung — timing, easing, bảng tham số, lỗi hay gặp)
意图
本卡管条带级撕裂——页面被切成横条高速运动,但每条内容完整。 这是反复裁决划出的品味分界:碎块系转场三连否(doom-melt 竖条坠落、 pixel-dissolve 方块翻黑、facade-block 砖块翻飞全部淘汰),条带系过关。碎块读作"页面被破坏",条带读作"页面在高速 运动"——完整性不破、能量却拉满。横向撕:条带左右错位抖动 + 明暗重影,数字故障的灰阶降维(RGB split 改明暗双重影)。 适用系统故障/瞬间跳变语义。
单式选型
| 式 | 做法 | 适用 | |----|------|------| | A glitch-displace | 16 条水平条带(外层裁剪+内层整页 translateY 对位),每条 translateX 由库标 h(i*31+f*7) 驱动 ±70px 抖动,叠明暗错位重影;58f 抖动衰减中硬切 B 页再抖 4f 归位 | 故障/断裂语义;高潮前的暴力换页 |
参数表
| 参数 | 典型值 | 调节手感 | |------|--------|----------| | 抖幅 | ±70px(spec 加码档),底层垫完整页防露底缝 | 峰值帧条带错位必须肉眼明显——±12px 级读不出撕裂 | | 包络 | 45–48f out-cubic 冲起 → 平台 → 56–62f 线性消散 | 冲击判例:扩散 out-cubic、消散线性 | | 重影 | ±12px 明暗双重影(brightness 0.45 / invert) | RGB 分离的灰阶降维;无重影只是抖不是 glitch | | 摘罩 | 62f 起条带、重影、filter 全部条件卸载直出裸 B | opacity 0 不算摘;滤镜残留毁真静止 | | 收尾 | 73f 真静止(≥40f) | R1 |
已知坑
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
首次实战须以真实素材回验
- 条带不碎块——后续同类手法一律做条带:横条各自完整,
绝不裂成方块/砖块/独立坠落物(三连否判例,见意图)
- 高能转场,与 whip-pan/crash 系同片注意能量预算——
高能转场挤在一起互相稀释
- 硬切藏在抖动衰减中(58f 切、62f 归位)——切点暴露在静止帧上
就失去了 glitch 的掩护
参考实现
demos/transition/tear-streak-transitions/ (GlitchDisplace.tsx)
Mã nguồn tham chiếu (Remotion)
- demos/transition/tear-streak-transitions/GlitchDisplace.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/transition/tear-streak-transitions/GlitchDisplace.tsx
Component import fixture chung từ demos/_fixtures và helper từ assets/lib của repo; xem SKILL.md trong repo để biết quy trình render.
Mọi thứ trên trang này đều có bản máy đọc. Đưa agent link JSON, hoặc thêm MCP server gimgs rồi bảo nó tìm motion template.
- Tải JSON — trong đó có công thức cảnh quay (timing, easing, bảng tham số, lỗi hay gặp) và toàn bộ source TSX.
- Clone repo video-shotcraft; component import fixture chung từ demos/_fixtures và helper từ assets/lib.
- Đăng ký component thành <Composition> trong project Remotion rồi render bằng `npx remotion render`, hoặc dựng lại công thức bằng engine của bạn.
curl -s https://gimgs.net/motion/tear-streak-transitions.jsongit clone https://github.com/Vincentwei1021/video-shotcraft
# component: demos/transition/tear-streak-transitions/GlitchDisplace.tsx
npx remotion render <CompositionId> out.mp4claude mcp add --transport http gimgs https://gimgs.net/mcp
# then: search_motion_templates / get_motion_template("tear-streak-transitions")Prompt
Use the video-shotcraft shot recipe "Xé dải chuyển cảnh" (Remotion composition, Apache-2.0) published on gimgs.net. Recipe JSON (prompt = timing/easing/parameter table/pitfalls, files = TSX source): https://gimgs.net/motion/tear-streak-transitions.json Raw TSX: https://gimgs.net/motion/tear-streak-transitions/template.html Repository: https://github.com/Vincentwei1021/video-shotcraft (component: demos/transition/tear-streak-transitions/GlitchDisplace.tsx; imports demos/_fixtures and assets/lib) Spec: 1920x1080, 30 fps, 4.54s 1. Read the JSON and follow its "prompt" section (when to use, intention, parameter table, known pitfalls). 2. Adapt it for: <describe what you want>. 3. Either clone the repo, register the component as a <Composition> in a Remotion project and run npx remotion render <CompositionId> out.mp4 — or re-implement the recipe in your own engine (HTML/WAAPI works: keep the same timing and easing).
// ===== demos/transition/tear-streak-transitions/GlitchDisplace.tsx =====
// glitch-displace|噪声置换撕裂
// FakeDashboard A 播到 45f,45–62f 撕裂转场:页面切 16 条水平条带
// (外层 overflow hidden + 内层整页反向 translateY 对位),每条 translateX
// 由 h(条号*31+f*7) 驱动 ±70px 抖动,幅度包络 0→峰值→0(起势 out-cubic、
// 消散线性,冲击判例)。同时叠 2 份整页明暗错位重影(+12px 暗 / -12px 亮反相,
// opacity ≤0.35,灰阶版代替 RGB 分离)。58f 抖动衰减中硬切 variant="B",
// 再抖 4f 至 62f 归位。62f 起摘罩直出 B(条带/重影全部条件卸载),
// 62–135f 真静止 73f ≥ 40f。帧确定:h() 伪随机,无 Math.random。
import React from 'react';
import { AbsoluteFill, useCurrentFrame, interpolate, Easing } from 'remotion';
import { FakeDashboard, G } from '../../_fixtures/Fixtures';
const STRIPS = 16;
const H = 1080;
const STRIP_H = H / STRIPS; // 67.5
const AMP = 70; // 峰值条带错位(spec 备选加码值,QA 要一眼看到撕裂)
// 库内标准伪随机
const h = (n: number) => {
const s = Math.sin(n * 127.3) * 43758.5453;
return s - Math.floor(s);
};
export const GlitchDisplace: React.FC = () => {
const frame = useCurrentFrame();
const tearing = frame >= 45 && frame < 62;
const variant: 'A' | 'B' = frame >= 58 ? 'B' : 'A';
if (!tearing) {
// 45f 前 A 静置;62f 起 B 摘罩真静止(无 transform / filter / 重影)
return (
<AbsoluteFill style={{ background: G.bg }}>
<FakeDashboard variant={variant} />
</AbsoluteFill>
);
}
// 幅度包络:45–48f out-cubic 冲起 → 平台 → 56–62f 线性消散(帧驱动,确定性)
const rise = interpolate(frame, [45, 48], [0, 1], {
easing: Easing.out(Easing.cubic),
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
const decay = interpolate(frame, [56, 62], [1, 0], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
const env = Math.min(rise, decay);
return (
<AbsoluteFill style={{ background: G.bg, overflow: 'hidden' }}>
{/* 底垫一份完整页,防条带间横移露底色缝 */}
<AbsoluteFill>
<FakeDashboard variant={variant} />
</AbsoluteFill>
{/* 明暗错位重影(灰阶版 RGB 分离):+12px 压暗 / -12px 反相提亮 */}
<AbsoluteFill
style={{
transform: 'translateX(12px)',
opacity: 0.35 * env,
filter: 'brightness(0.45)',
}}
>
<FakeDashboard variant={variant} />
</AbsoluteFill>
<AbsoluteFill
style={{
transform: 'translateX(-12px)',
opacity: 0.28 * env,
filter: 'invert(1)',
}}
>
<FakeDashboard variant={variant} />
</AbsoluteFill>
{/* 16 条水平条带:外层裁切,内层整页反向 translateY 对位 + 逐帧横向抖动 */}
{Array.from({ length: STRIPS }).map((_, i) => {
const dx = (h(i * 31 + frame * 7) * 2 - 1) * AMP * env;
return (
<div
key={i}
style={{
position: 'absolute',
top: i * STRIP_H,
left: 0,
width: 1920,
height: STRIP_H,
overflow: 'hidden',
}}
>
<div
style={{
width: 1920,
height: H,
transform: `translate(${dx.toFixed(2)}px, ${-i * STRIP_H}px)`,
}}
>
<FakeDashboard variant={variant} />
</div>
</div>
);
})}
</AbsoluteFill>
);
};
- Read the recipePrompt = when to use, intention, parameter table with typical values and how each one feels, known pitfalls. Treat values as calibrated starting points.
- Get the codetool: git
git clone https://github.com/Vincentwei1021/video-shotcraft && cd video-shotcraft && npm install - Register + rendertool: remotion
npx remotion render <CompositionId> out.mp4 # component: demos/transition/tear-streak-transitions/GlitchDisplace.tsx - Or re-implementPort the timing/easing from the recipe to HTML + WAAPI (gimgs motion contract) or any engine; keep the same segment windows and easing.
| param | type | default | description |
|---|---|---|---|
| — | |||
Cùng danh mục

Chớp trắng: logo giản lược
Chữ hiệu gradient lỏng nhiều màu đứng yên chảy sáng, màn hình chớp trắng cháy sáng một nhịp, chữ hiệu phiên bản phẳng trên nền trắng mờ vào định hình — một lần chớp trắng hoàn tất bước giản lược chất liệu.

Chuyển cảnh quét hình học
Hai kiểu chuyển cảnh quét hình học — clock-wipe kim đồng hồ radar quét đổi trang và blinds-slice 12 dải dọc lật lệch nhịp thành sóng.

Chuyển cảnh giấu điểm cắt
Ba kiểu chuyển cảnh giấu điểm cắt — che khuất tiền cảnh cắt vô hình, đối đầu va chạm mở màn, và cháy sáng rò rỉ ánh sáng ấm; cắt cứng giấu trong 1-3 khung che khuất/va chạm/đỉnh sáng, khán giả không thấy kéo cắt.

Chuyển cảnh xuyên qua
Hai kiểu chuyển cảnh xuyên qua — trở về vị trí bằng phần tử chung và xuyên khoang chữ, máy quay khoan xuyên phần tử thực trong khung hình để hoàn tất đổi cảnh.