Core
SceneStageとSceneLayerで、ひとつのカメラトラックに追従するレイヤーと画面に固定するレイヤーを組み立てます。
SceneStage
コンポジションの表示範囲を作り、必要に応じてカメラトラックを受け取ります。画面をクリップするため、通常はAbsoluteFillで外側から包む必要はありません。
<SceneStage camera={camera}>{/* SceneLayerを配置 */}</SceneStage>
カメラを使わない場合はcameraを省略できます。複数カメラを切り替えるコンポーネントではなく、このStage内のレイヤーが共有するひとつのカメラです。
SceneLayer
SceneStageの中に置く全画面レイヤーです。followsCamera
でカメラに追従するか、画面に固定するかを選びます。後に書いたレイヤーほど手前に重なります。
| 設定 | 動作 | よく使うもの |
|---|---|---|
followsCamera |
カメラに追従する | 背景、前景、人物、カメラに合わせて動く装飾 |
followsCamera={false} |
画面に固定する | 歌詞、字幕、画面端のラベル、画面固定オーバーレイ |
depth={0.7} |
カメラ移動を弱める | 遠景のパララックス |
depth={1} |
カメラ移動をそのまま適用する(既定値) | 通常の画像レイヤー |
depth={1.2} |
カメラ移動を強める | 手前に見せる前景レイヤー |
depthはfollowsCamera={true}
のときだけ有効です。背景と人物を分けていない一枚絵でも、背景画像をひとつの
SceneLayerに入れて使えます。
<SceneStage camera={camera}>
<SceneLayer followsCamera depth={0.8}>
<Background />
</SceneLayer>
<SceneLayer followsCamera depth={1.15}>
<ForegroundCharacter />
</SceneLayer>
<SceneLayer followsCamera={false}>
<Lyrics />
</SceneLayer>
</SceneStage>
secondsToFrameRange
開始秒、終了秒、fpsを指定すると、Framooのカメラの動きに使うフレーム範囲を作れます。返り値にはfromとdurationInFramesが含まれます。
moveTo({
...secondsToFrameRange(0, 4, fps),
to: { x: 0.54, y: 0.46, zoom: 1.12 },
})