mcpField
R
rendiv-video

rendiv-video

github.com/thecodacusクリエイティブ・メディア158128 回インストール6 週間前に更新
リポジトリ

rendiv-video について

Rendiv Video Skillsは、Rendivで動画を開発するためのスキルガイドで、Reactコンポジション、フレーム駆動アニメーション、メディア、レンダリングを扱います。Rendivのコードを書く開発者向けで、現在のフレームから視覚要素を決める設計が特徴です。

主な機能

  1. 01useFrameによるフレーム単位のアニメーション
  2. 02interpolateとspringによる変化の制御
  3. 03コンポジションとメディア関連のパッケージ
  4. 04字幕・アニメーションテキスト・視覚効果
  5. 05CLIレンダリングとStudioツール

活用シーン

  1. 01フレーム番号に基づくコンポジションの作成
  2. 02動画への字幕やアニメーションテキストの追加
  3. 03シェイプやパス、エフェクトによる画面構築
  4. 04CLIまたはRendererでの出力レンダリング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/thecodacus/rendiv --skill rendiv-video

インストール後、Claude Code で/rendiv-videoを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
animated-bar-chart.tsx
text-reveal.tsx
rules/
animation.md
captions.md
cli-and-studio.md
composition-setup.md
gif.md
lottie.md
media-components.md
procedural-effects.md
render-lifecycle.md
sequencing-and-timing.md
shapes-and-paths.md
text-animation.md
three.md
timeline-overrides.md
transitions.md
typography.md
visual-effects.md

詳細

Rendiv Video Skills

Rendiv のコードを扱う際は、コンポジションの作成、要素のアニメーション、メディアの埋め込み、出力のレンダリングなど、常にこれらのスキルを活用してください。

コアとなる考え方

Rendiv は、動画をフレーム番号の純粋関数として扱います。位置、透明度、色、スケールなど、すべての視覚プロパティは useFrame() を介して現在のフレームから導き出されます。タイムラインのステートマシンや命令型のキーフレーム API はありません。フレームを受け取り JSX を返す React コンポーネントを作成すれば、あとは rendiv が処理します。

import { useFrame, interpolate } from '@rendiv/core';

export const FadeIn: React.FC = () => {
  const frame = useFrame();
  const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: 'clamp' });
  return <div style={{ opacity }}>Hello rendiv</div>;
};
主な原則
  • すべてのアニメーションは useFrame() によって制御する必要があります。CSS アニメーションとトランジションは禁止です。これらは実時間に基づいて動作するため、フレームごとのレンダリング中に同期がずれます。
  • 線形マッピングには interpolate() を、物理ベースの動きには spring() を使用します。
  • ネイティブ HTML 要素の代わりに、@rendiv/core の <Img>、<Video>、<Audio>、<AnimatedImage> を使用してください。これらは holdRender を介してレンダリングのライフサイクルに統合されます。
  • コンポジションは <Composition> と <Still> を介して宣言的に登録します。これらは null をレンダリングし、フレームワークにメタデータのみを提供します。

クイックスタート

最小限の rendiv プロジェクトのエントリーポイント:

// FadeIn.tsx — composition component
import { useFrame, interpolate, CanvasElement } from '@rendiv/core';

export const FadeIn: React.FC = () => {
  const frame = useFrame();
  const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: 'clamp' });
  return (
    <CanvasElement id="FadeIn">
      <div style={{ opacity }}>Hello rendiv</div>
    </CanvasElement>
  );
};
// index.tsx — entry point
import { setRootComponent, Composition } from '@rendiv/core';
import { FadeIn } from './FadeIn';

const Root: React.FC = () => (
  <>
    <Composition
      id="FadeIn"
      component={FadeIn}
      durationInFrames={90}
      fps={30}
      width={1920}
      height={1080}
    />
  </>
);

setRootComponent(Root);

MP4 にレンダリングするには、rendiv render src/index.tsx FadeIn out/fade-in.mp4 を実行します。

トピックガイド

作業内容に応じて、該当するルールファイルを参照してください。

作業ルールファイル
interpolate、spring、Easing、blendColors を使ったアニメーションanimation.md
コンポジション、スティル、フォルダー、エントリーポイントの設定composition-setup.md
Sequence、Series、Loop、Freeze による時間のシフトsequencing-and-timing.md
z オーダーとタイムラインのオーバーライドの制御timeline-overrides.md
画像、動画、音声、GIF、iframe の埋め込みmedia-components.md
再生制御付きのアニメーション GIF のレンダリングgif.md
字幕、SRT の解析、単語のハイライトの追加captions.md
holdRender、環境モード、レンダリングパイプラインの理解render-lifecycle.md
TransitionSeries を使ったシーン間のアニメーションtransitions.md
SVG シェイプの生成、またはパスの操作shapes-and-paths.md
ノイズ駆動の動きやモーションブラーの追加procedural-effects.md
文字、単語、行ごとのテキストアニメーションtext-animation.md
視覚効果と CSS フィルターの適用visual-effects.md
Google Fonts またはローカルフォントファイルの読み込みtypography.md
Lottie アニメーションの埋め込みlottie.md
Three.js / R3F による 3D シーンの追加three.md
CLI、Studio、Player の使用cli-and-studio.md

重要な制約

  1. CSS アニメーションやトランジションは使用しないでください。 すべて useFrame() によるフレーム駆動にする必要があります。
  2. rendiv のメディアコンポーネント(<Img>、<Video>、<Audio>、<AnimatedImage>)を使用し、ネイティブ HTML 要素は使用しないでください。これらのコンポーネントは holdRender を自動的に管理します。
  3. コンポジションのコンテンツは必ず <CanvasElement id="..."> で囲んでください。 これによりコンポジションが自己完結し、別のコンポジション内にネストされた場合もタイムラインのオーバーライドが正しく機能します。id は <Composition> の id と一致させる必要があります。
  4. <Composition> は null をレンダリングします。 <Composition> はメタデータを登録するだけです。実際のコンポーネントをレンダリングするのは Player、Studio、Renderer であり、<Composition> 自体ではありません。
  5. setRootComponent は一度だけ呼び出せます。 これは、すべてのコンポジションを定義するルートを登録します。
  6. interpolate() と blendColors() の inputRange は単調非減少でなければなりません。 どちらの範囲も長さが等しく、2 つ以上の要素を含む必要があります。
  7. <Series.Sequence> は <Series> の直接の子でなければなりません。 <Series> の親要素の外でレンダリングすると、エラーが発生します。
  8. morphPath ではセグメントを一致させる必要があります。 2 つのパスは、セグメント数とコマンドの種類が一致していなければなりません。

パッケージ

パッケージ用途
@rendiv/coreフック、コンポーネント、アニメーション、コンテキスト
@rendiv/playerブラウザー用 <Player> コンポーネント
@rendiv/rendererPlaywright + FFmpeg によるレンダリング
@rendiv/bundlerVite ベースのプロジェクトバンドラー
@rendiv/cliCLI:render、still、compositions、studio
@rendiv/studioレンダリングキューを備えた Studio 開発サーバー
@rendiv/transitionsフェード、スライド、ワイプ、フリップ、clockWipe を備えた TransitionSeries
@rendiv/shapesSVG シェイプジェネレーター(円、長方形、星、多角形など)
@rendiv/pathsSVG パスの解析、測定、モーフィング、ストロークの表示
@rendiv/noiseSimplex ノイズ(2D、3D、4D)
@rendiv/fontsholdRender によるローカルフォントの読み込み
@rendiv/google-fontsholdRender による Google Fonts の読み込み
@rendiv/motion-blurMotionTrail および ShutterBlur コンポーネント
@rendiv/gif速度制御とフィットモードに対応したアニメーション GIF の再生
@rendiv/captionsSRT/Whisper の解析、単語ごとのハイライト、キャプションのオーバーレイ
@rendiv/textアニメーションテキスト:文字・単語・行ごとの分割、スタッガー、プリセット
@rendiv/effectsビジュアルエフェクト:組み合わせ可能な CSS フィルター、グロー、グリッチ、ビネット
@rendiv/lottielottie-web によるフレーム精度の Lottie アニメーション
@rendiv/threeコンテキストブリッジングを使用した React Three Fiber による 3D シーン

アセットの例

コメント