Motion · Transition

White flash: logo simplifies

A colorful liquid-gradient wordmark holds with flowing light, then the frame flashes white and overexposes; a flat wordmark fades in on white and settles — one flash completes the downgrade to simplicity.

1920×108016:930 fps4.1s · 123 framesremotionLicense: Apache-2.0#shotcraft#remotion#transition

Source: video-shotcraft (Vincent Wei) ↗ · Apache-2.0 · Remotion composition (React/TSX) — preview video, no in-browser player

When to use

A brand passage's closing beat (ornate performance → clean formal identity); a transition beat where the mood shifts from showy flair to a formal statement

Intention

First give it full ornateness (a six-color liquid gradient flowing across the letterforms, soft light sweeping across), then a single white flash "purifies" it into a flat, three-color wordmark — the viewer reads "the performance is over, this is its formal identity." The downgrade is rhetorical: cutting from a sensory texture to a rational identity.

Duration & energy

  • Duration: ~3.6s (108f@30fps; flowing light hold 0–1.2s · white flash 1.2–1.5s · flat settle 1.7–2.7s)
  • Energy: Medium-high (one pulse-like accent, quiet on both sides)

Shot recipe (original Chinese — timing, easing, parameter table, known pitfalls)

意图

先给足华丽(六色液态渐变在字面上流动、柔光扫掠),再用一次白闪把它"净化"成扁平三色字标——观众读到的是"演出结束,这就是它的正式形象"。降维是修辞:从感性质感切到理性识别。

动效核心

  • 液态层:六色渐变 background-size:320%,backgroundPosition = t*100% 全程缓慢流动;一块 220×120 径向柔光(blur 6px + screen 混合)随 t 横移 ±30px 做高光扫掠
  • 冲白 t=0.34–0.42(inQuad 加速冲入)白层盖满;同窗口给液态层一个 sin(π) 脉冲:blur 0→5px + brightness 1→2.2——"过曝烧穿"的一帧
  • 白层冲入后保持不退,后半场全程白底
  • 扁平字标 t=0.48–0.74 淡入 + scale 0.96→1(outCubic),字色是三段线性渐变(GRAD_A/B/C 常量,可按项目替换)
  • 柔光层随冲白同步熄灭(1-flashK),不残留在白底上

参数表

| 参数 | 典型值 | 调节手感 | |------|--------|----------| | 冲白窗口 | 0.34–0.42(inQuad) | 换算 0.29s@3.6s——冲白必须"快进慢不退";用 outQuad 会显得白光是飘进来的 | | 过曝脉冲 | blur 5px + brightness ×2.2,sin 包络 | 砍掉脉冲则冲白像纯剪辑;>8px blur 液态字彻底糊掉反而看不出"是它在烧" | | 扁平入场 | 0.48–0.74,scale 0.96→1 | 与冲白间隔 0.06 的白屏静默是呼吸位;缩太短观众来不及"清屏" | | 液态流速 | backgroundPosition t*100% | 拉长 dur 时流速自动变慢,静置段够 1s 以上流动感才可读 | | 字标字号 | 液态 62px / 扁平 58px | 扁平版略小一号是"落定收束"暗示;同号会读作换皮不换人 | | 渐变常量 | GRAD_A/B/C(块顶定义) | 换成项目品牌三色即完成收编;液态层六色一般保留(它是"演出"不是品牌) |

已知坑

  • 白层是"冲入后保持",不是闪一下回黑——后半场底色即白色,若下一镜是暗场需另接转场,或复用本卡结尾白底直切
  • WORDMARK 常量是占位字标(5 字母),换长词需同步缩字号与 letter-spacing,两层(液态/扁平)都要改
  • 冲白配 SFX 是必选项(impact/whoosh-bright 类),无声的白闪读作素材丢帧
  • mix-blend-mode:screen 的柔光层在白底上不可见属预期,别在冲白后调它

参考实现

demos/transition/white-flash-logo-simplify-cut/ (WhiteFlashLogoSimplifyCut.tsx)

Reference implementation (Remotion)

  • demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx

The component imports shared fixtures from demos/_fixtures and helpers from assets/lib in the repo; SKILL.md there documents the render workflow.

Everything on this page is also machine-readable. Point your agent at the JSON, or add the gimgs MCP server and ask it to search motion templates.

  1. Fetch the JSON — it holds the shot recipe (timing, easing, parameter table, pitfalls) and the full TSX source.
  2. Clone the video-shotcraft repo; the component imports shared fixtures from demos/_fixtures and helpers from assets/lib.
  3. Register the component as a <Composition> in a Remotion project and render with `npx remotion render`, or re-implement the recipe in your own engine.
curl -s https://gimgs.net/motion/white-flash-logo-simplify-cut.json
git clone https://github.com/Vincentwei1021/video-shotcraft
# component: demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx
npx remotion render <CompositionId> out.mp4
claude mcp add --transport http gimgs https://gimgs.net/mcp
# then: search_motion_templates / get_motion_template("white-flash-logo-simplify-cut")

Prompt

Use the video-shotcraft shot recipe "White flash: logo simplifies" (Remotion composition, Apache-2.0) published on gimgs.net.
Recipe JSON (prompt = timing/easing/parameter table/pitfalls, files = TSX source): https://gimgs.net/motion/white-flash-logo-simplify-cut.json
Raw TSX: https://gimgs.net/motion/white-flash-logo-simplify-cut/template.html
Repository: https://github.com/Vincentwei1021/video-shotcraft  (component: demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx; imports demos/_fixtures and assets/lib)
Spec: 1920x1080, 30 fps, 4.1s

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).

JSON · Markdown · llms.txt

3,511 chars · Apache-2.0Open raw template ↗
// ===== demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx =====
// white-flash-logo-simplify-cut — White Flash Simplify 冲白降维切换
// (motion-lab 定稿转原生 Remotion)
// 彩色液态质感词标(占位字标)静置后画面 0.2s 冲白(冲白瞬间叠一帧轻微
// blur 做过曝感),紧接扁平渐变版字标从白底淡入 + scale 0.96→1 定格。
// 一次闪白完成"液态质感→扁平字标"的降维切换。
// 设计坐标 480×270(DesignStage 等比放大),参数表数值以此坐标系标定。
import React from 'react';
import { DesignStage, E, lerp, seg, useT } from '../../_fixtures/Motion';

export const WHITE_FLASH_LOGO_SIMPLIFY_CUT_DURATION = 108; // 3600ms @30fps

// 该效果依赖的文件级共享量(扁平字标渐变三色 + 占位词标)
const GRAD_A = '#7b3df0';
const GRAD_B = '#5a6cf5';
const GRAD_C = '#22c4e8';
const WORDMARK = 'BRAND';

export const WhiteFlashLogoSimplifyCut: React.FC = () => {
  const t = useT();
  // 液态层:静置期缓慢流动的渐变 + 高光微移
  const flow = t * 100;
  // 冲白瞬间给彩色层一帧过曝 blur
  const flashK = seg(t, 0.34, 0.42, E.inQuad);
  const blurPulse = Math.sin(seg(t, 0.34, 0.46) * Math.PI);
  // 扁平 logo:opacity 0→1 + scale 0.96→1,cubic ease-out
  const lk = seg(t, 0.48, 0.74, E.outCubic);
  return (
    <DesignStage bg="#08070c">
      <div style={{ position: 'absolute', inset: 0, background: '#08070c', overflow: 'hidden' }}>
        {/* 彩色液态词层 */}
        <div
          style={{
            position: 'absolute',
            inset: 0,
            display: 'flex',
            alignItems: 'center',
            justifyContent: 'center',
            font: `900 62px/1 -apple-system,'Helvetica Neue',sans-serif`,
            letterSpacing: 6,
            background: 'linear-gradient(105deg,#ff5fa2 0%,#ff9d4d 22%,#ffe45c 38%,#4de3c1 58%,#4d9bff 76%,#a05cff 100%)',
            backgroundSize: '320% 100%',
            WebkitBackgroundClip: 'text',
            backgroundClip: 'text',
            color: 'transparent',
            textShadow: 'none',
            backgroundPosition: `${flow}% 0`,
            filter: `blur(${blurPulse * 5}px) brightness(${1 + blurPulse * 1.2})`,
          }}
        >
          {WORDMARK}
        </div>
        {/* 液态高光扫层(贴在字上方的柔光条) */}
        <div
          style={{
            position: 'absolute',
            left: '50%',
            top: '50%',
            width: 220,
            height: 120,
            margin: '-60px 0 0 -110px',
            background: 'radial-gradient(closest-side,rgba(255,255,255,.28),transparent 70%)',
            filter: 'blur(6px)',
            mixBlendMode: 'screen',
            pointerEvents: 'none',
            transform: `translateX(${lerp(t, -30, 30)}px)`,
            opacity: 1 - flashK,
          }}
        />
        {/* 白色全屏层:easeIn 冲入后保持 */}
        <div style={{ position: 'absolute', inset: 0, background: '#fff', opacity: flashK }} />
        {/* 扁平渐变字标层(渐变色见顶部 GRAD_*) */}
        <div
          style={{
            position: 'absolute',
            inset: 0,
            display: 'flex',
            flexDirection: 'column',
            alignItems: 'center',
            justifyContent: 'center',
            opacity: lk,
            transform: `scale(${lerp(lk, 0.96, 1)})`,
          }}
        >
          <div
            style={{
              font: `800 58px/1 -apple-system,'Helvetica Neue',sans-serif`,
              letterSpacing: 8,
              background: `linear-gradient(92deg,${GRAD_A} 0%,${GRAD_B} 45%,${GRAD_C} 100%)`,
              WebkitBackgroundClip: 'text',
              backgroundClip: 'text',
              color: 'transparent',
            }}
          >
            {WORDMARK}
          </div>
        </div>
      </div>
    </DesignStage>
  );
};


  1. Read the recipe
    Prompt = when to use, intention, parameter table with typical values and how each one feels, known pitfalls. Treat values as calibrated starting points.
  2. Get the code
    tool: git
    git clone https://github.com/Vincentwei1021/video-shotcraft && cd video-shotcraft && npm install
  3. Register + render
    tool: remotion
    npx remotion render <CompositionId> out.mp4 # component: demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx
  4. Or re-implement
    Port the timing/easing from the recipe to HTML + WAAPI (gimgs motion contract) or any engine; keep the same segment windows and easing.
paramtypedefaultdescription
—

More in this category