Remotion LabRemotion Lab
返回模板庫

墨水暈染轉場

一個模糊的黑色圓形在場景中央膨脹擴散再消退,覆蓋 Scene A 的同時讓 Scene B 在暈染後浮現,呈現水墨潑灑的詩意感。

轉場墨水暈染
提示詞(可直接修改內容)
import { AbsoluteFill, interpolate, useCurrentFrame } from "remotion";
import React from "react";

const SceneA: React.FC = () => (
  <AbsoluteFill
    style={{
      background: "linear-gradient(135deg, #1e3a5f 0%, #0f172a 100%)",
      justifyContent: "center",
      alignItems: "center",
    }}
  >
    <div
      style={{
        fontSize: 96,
        fontWeight: 700,
        color: "#ffffff",
        fontFamily: "sans-serif",
        letterSpacing: 8,
        textShadow: "0 4px 32px rgba(59,130,246,0.5)",
      }}
    >
      Scene A
    </div>
  </AbsoluteFill>
);

const SceneB: React.FC = () => (
  <AbsoluteFill
    style={{
      background: "linear-gradient(135deg, #1a0533 0%, #0f0a1a 100%)",
      justifyContent: "center",
      alignItems: "center",
    }}
  >
    <div
      style={{
        fontSize: 96,
        fontWeight: 700,
        color: "#ffffff",
        fontFamily: "sans-serif",
        letterSpacing: 8,
        textShadow: "0 4px 32px rgba(168,85,247,0.5)",
      }}
    >
      Scene B
    </div>
  </AbsoluteFill>
);

export const InkSpreadTransition: React.FC = () => {
  const frame = useCurrentFrame();

  const inkScale = interpolate(frame, [15, 50, 75], [0, 3, 0], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  const bOpacity = interpolate(frame, [50, 75], [0, 1], {
    extrapolateLeft: "clamp",
    extrapolateRight: "clamp",
  });

  return (
    <AbsoluteFill>
      <SceneA />
      <AbsoluteFill style={{ opacity: bOpacity }}>
        <SceneB />
      </AbsoluteFill>
      <AbsoluteFill
        style={{
          justifyContent: "center",
          alignItems: "center",
          pointerEvents: "none",
        }}
      >
        <div
          style={{
            width: 1920,
            height: 1920,
            borderRadius: "50%",
            backgroundColor: "#000000",
            transform: `scale(${inkScale})`,
            filter: "blur(30px)",
          }}
        />
      </AbsoluteFill>
    </AbsoluteFill>
  );
};

登入後查看完整程式碼