Remotionで“見た瞬間に止まる”モーションを作る理由
今回作ったもの
今回は、Remotionで16:9の高速タイポグラフィモーションを作りました。
ただ文字をフェードインさせるだけではなく、白フラッシュ、高速カット、巨大タイポ、分割パネル、疑似グリッチ、画面揺れ、最後の急停止を組み合わせています。
目的は、実用的なテンプレを作ることではありません。
まずは、XやYouTubeで見た瞬間に「え、これRemotionで作ったの?」と思ってもらえるような、見せるためのモーションを作ることです。
完成イメージとしては、冒頭0.3秒で画面が白く光り、巨大な英単語が高速で切り替わり、背景が揺れながらズームし、最後にタイトルが強く着地するような映像です。
After Effectsのテンプレサイトでよく見るような、スポーツ、音楽、プロモーション動画向けの強いオープナーに近いカテゴリです。ただし、既存テンプレのデザインや動き、レイアウトをコピーしているわけではありません。参考にしたのは、あくまで「高速タイポ」「ショック系オープナー」「グリッチ」「強い導入」というカテゴリや用途です。
今回のポイントは、Remotionでこうした演出をReactコンポーネントとして作れることです。
なぜRemotionで作るのか
Remotionは、Reactで動画を作るためのフレームワークです。
通常の動画編集ソフトでは、タイムライン上でキーフレームを打って動きを作ります。一方Remotionでは、現在のフレーム番号を使って、文字の位置、透明度、拡大率、回転、色、揺れなどをコードで制御します。
たとえば、0フレーム目から10フレーム目までは白フラッシュ、10フレーム目から40フレーム目までは高速カット、60フレーム目以降はタイトルを急停止させる、というように、時間ごとの動きをコードで決められます。
これがテンプレ制作と相性が良い理由です。
一度コード化しておけば、次からは title、subtitle、themeColor、speed などのpropsを変えるだけで、別の作品として使い回せます。
今回のような派手なモーションは、最初は少し難しく見えるかもしれません。でも中身を分解すると、やっていることは意外とシンプルです。
- フレーム番号を取得する
- そのフレームに応じて数値を変える
- 数値をCSSのtransformやopacityに渡す
- 最後にCompositionとして登録して書き出す
この流れが分かると、Remotionで作れる動画の幅がかなり広がります。
今回のモーションの使い道
今回のモーションは、実用性よりもインパクト重視です。
使い道としては、次のようなものが考えられます。
- YouTube動画の冒頭オープナー
- AI動画作品のタイトル
- 音楽系、スポーツ系、プロモーション系の導入
- Remotionで作れる表現を見せるポートフォリオ
- note販売前の反応確認用プロトタイプ
初投稿のように、まず認知を取りたい場面では、便利さよりも「画面が止まるか」が大事です。
そのため今回は、読みやすさだけを優先するのではなく、動きの大胆さ、速さ、緩急を優先しました。
既存テンプレを丸パクリしない考え方
プロ向けのAfter Effectsテンプレサイトを見ると、魅力的なタイトルアニメーションやオープナーがたくさんあります。
ただし、既存商品のデザイン、動き、レイアウトをそのまま真似するのは避けるべきです。
参考にしてよいのは、以下のような部分です。
- どんなカテゴリの商品があるか
- どんな用途で使われているか
- 何を差し替えられるようにしているか
- 何本セットの商品構成になっているか
- プレビュー動画でどう見せているか
- 販売ページでどんな導線を作っているか
今回のRemotion作品も、カテゴリとしては「高速タイポグラフィ」「ショック系オープナー」を参考にしています。
しかし、見た目、構図、動き、タイミングはRemotion向けにオリジナルで再構築しています。
ここはテンプレ販売を考えるうえでも重要です。参考にするのは市場の作り方であって、完成品そのものではありません。
Remotionで高速タイポグラフィを作る手順
全体構成を決める
今回のCompositionは、16:9の横長動画です。
設定は以下です。
<Composition
id="WowKineticOpenerWide"
component={WowKineticOpener}
durationInFrames={120}
fps={30}
width={1920}
height={1080}
defaultProps={{
title: 'REMOTION HITS HARD',
subtitle: 'Fast cuts, giant type, flash frames, and code-built motion.',
accentText: 'CODE-BUILT MOTION / FIRST DROP',
themeColor: '#ff2d55',
backgroundColor: '#050509',
durationFrames: 120,
speed: 1,
}}
/>
120フレーム、30fpsなので、動画の長さは4秒です。
4秒という短い尺の中で、次のように動きを分けています。
- 0から10フレーム: 白フラッシュと巨大文字
- 10から38フレーム: 高速カットと分割パネル
- 38から76フレーム: ズーム、回転、破片のような短冊
- 76から120フレーム: 急停止してタイトルを見せる
初心者がRemotionでモーションを作るときは、いきなりコードを書き始めるより、先に「何フレーム目で何を起こすか」を決めると作りやすくなります。
今回のプロンプトも、見た目だけでなく時間ごとの動きを指定しています。
Remotionで16:9の短尺モーションを作ってください。 目的は、X投稿の冒頭で目を止めることです。 実用性よりも「魅せる」ことを優先してください。 要件: - 1920x1080 - 30fps - 4秒 - 冒頭0.3秒で白フラッシュ - 高速カット - 巨大タイポグラフィ - 分割パネル - 疑似グリッチ - 画面揺れ - 最後は急停止してタイトルを残す - useCurrentFrame / interpolate / spring / AbsoluteFill を使う - title, subtitle, themeColor, speed をprops化する
このように「どんな雰囲気にしたいか」だけでなく、「いつ、何が、どう動くか」まで書くと、Remotion向けの指示としてかなり具体的になります。
useCurrentFrameで時間を扱う
Remotionの基本は、現在のフレーム番号を取得することです。
const frame = useCurrentFrame();
const {fps} = useVideoConfig();
const f = frame * Math.max(speed, 0.2);
useCurrentFrame() は、今が何フレーム目かを返します。
useVideoConfig() は、fpsや画面サイズなど、Compositionの設定を取得できます。
ここでは speed というpropsも使っています。speed を変えると、同じモーションでも速くしたり遅くしたりできます。
const f = frame * Math.max(speed, 0.2);
このようにしておくと、販売テンプレ化するときに「速度を変えられるテンプレ」として見せやすくなります。
Remotionテンプレを作るなら、文字や色だけでなく、速度も差し替え可能にしておくと便利です。
interpolateでフラッシュ、ズーム、揺れを作る
Remotionで一番よく使う関数のひとつが interpolate() です。
これは、フレーム番号をもとに数値を変換するための関数です。
今回の白フラッシュは、次のように作っています。
const flashOpacity = interpolate( f, [0, 4, 10, 18], [1, 0.15, 0.85, 0], clamp );
0フレーム目では透明度1、4フレーム目で少し弱まり、10フレーム目でもう一度光り、18フレーム目で消えます。
これにより、ただ一回光るだけではなく、冒頭に「バチッ」としたリズムが出ます。
背景のズームや回転も同じ考え方です。
const bgZoom = interpolate(f, [0, durationFrames], [1.15, 1.35], clamp); const bgRotate = interpolate(f, [0, 72, durationFrames], [-4, 6, 0], clamp);
背景を少し拡大しながら回転させることで、画面全体に動きが出ます。
さらに、画面揺れは Math.sin() と Math.cos() を組み合わせています。
const cameraShake = interpolate(f, [0, 65, 92], [1, 1, 0], clamp) * Math.sin(f * 2.8) * 13;
この揺れは、最後に向かってだんだん弱くなります。
つまり、前半は荒く揺れて、後半はピタッと止まる構成です。
これが「緩急」の正体です。
ただ速く動かすだけだと、見ている人は疲れます。速く動かしたあとに止めることで、最後のタイトルが強く見えます。
springで最後の急停止を作る
Remotionでは、spring() を使うと自然な勢いのある動きを作れます。
今回の最終タイトルは、spring() で着地させています。
const finalIn = spring({
frame: f - 58,
fps,
config: {
damping: 10,
stiffness: 170,
mass: 0.75,
},
});
frame: f – 58 としているので、58フレーム目あたりから最終タイトルが出始めます。
この finalIn を使って、タイトルの拡大率や回転を変えています。
const impactScale = interpolate( finalIn, [0, 0.7, 1], [2.8, 0.92, 1] );
最初は2.8倍の大きさで入り、少し小さくなり、最後に1倍へ戻ります。
この動きがあると、タイトルが画面に叩きつけられたように見えます。
初心者がよくやりがちなのは、すべての動きを interpolate() だけで直線的に作ってしまうことです。
もちろんそれでも動きますが、少し機械的に見えます。
タイトルの登場やパネルの着地など、気持ちよく止めたい部分には spring() を使うと、かなり映像らしくなります。
propsで文字と色を差し替えられるようにする
今回のコンポーネントは、以下のpropsを受け取ります。
export type WowKineticOpenerProps = {
title: string;
subtitle?: string;
accentText?: string;
themeColor?: string;
backgroundColor?: string;
speed?: number;
durationFrames?: number;
};
最低限、title を変えれば別の作品として使えます。
themeColor を変えれば、赤系、青系、黄色系など、かなり印象を変えられます。
speed を変えれば、もっと激しい演出にも、少し落ち着いた演出にもできます。
Remotionでテンプレを作るときは、最初からすべてを完璧にprops化する必要はありません。
まずは以下だけでも十分です。
- title
- subtitle
- accentText
- themeColor
- backgroundColor
- speed
これだけ差し替えられれば、ブログ解説、X投稿、note販売、メンバーシップ配布へ広げやすくなります。
Studioで確認してCLIで書き出す
Remotion Studioで確認するには、次のコマンドを使います。
npm run studio
今回のCompositionは、以下のURLで確認できます。
動画として書き出す場合は、次のコマンドです。
npm run render:wow:wide
直接Remotion CLIで書き出すなら、次のように指定します。
npx remotion render src/index.ts WowKineticOpenerWide out/wow-kinetic-opener-wide.mp4
Remotionでは、Studioで確認しながら調整し、最後にCLIで書き出す流れが基本です。
今回のような高速モーションは、静止画だけでは良し悪しが分かりません。必ず再生して、速さ、止まり方、読みやすさを確認します。
特に見るべきポイントは次の5つです。
- 冒頭1秒で目が止まるか
- タイトルが読めるか
- フラッシュが強すぎないか
- 最後の停止が気持ちいいか
- XやYouTubeに載せたときに小さくても伝わるか
まとめ
Remotionを使うと、Reactコードでモーショングラフィックスを作れます。
今回のような高速タイポグラフィモーションも、分解すれば難しいことばかりではありません。
やっていることは、現在のフレームを取得し、interpolate() で数値を変え、spring() で気持ちよく着地させ、CSSのtransformやopacityへ渡しているだけです。
大事なのは、最初から実用性だけを考えすぎないことです。
初投稿やポートフォリオ用の作品なら、まずは「見た瞬間に止まるか」を優先しても良いと思います。
白フラッシュ、高速カット、巨大タイポ、画面揺れ、急停止。
こうした強い演出をRemotionでコード化できると、AI動画素材や画像生成AIで作った背景にも、作品としての見せ場を加えられます。
今後このテンプレを本制作に進めるなら、日本語タイトル対応、音ハメ、縦型版、色違いvariant、背景差し替え対応を追加していく予定です。
まずはRemotion Studioで動きを見ながら、title と themeColor を変えて試してみてください。
「Reactで動画を作る」という感覚がつかめると、Remotionはかなり面白くなります。
