はじめに
動画を作る事が多くなりました。
動画は基本的に Blender で作っています。
Blenderを使っていて、何度も繰り返し行うであろう操作がある事に気付く。
こういった事はスクリプト化しておけば作業が楽になるのでそれに挑戦した結果です。
やりたい事
動画を一時停止するような効果が欲しかった。
これを行うには Blender では下記の手順を踏む必要がある
- 停止したいところでホールドカットを入れる
- ホールドカットした右側の strip を停止したいだけ右にずらす
- ずらした strip の右側のハンドルをドラッグして、左側の strip まで伸ばす
この手順を自動化したくなった。
結果
前提条件
- 一時停止を挿入したいストリップを選択している事
- 一時停止を挿入したい箇所にプレイヘッドがある事
コード
import bpy
# 現在 playhead の位置を取得
current = bpy.context.scene.frame_current
# playhead の位置でホールドカット
bpy.ops.sequencer.cut(frame=current, type='HARD', side='RIGHT')
# context エラーが出ないようにする為のコード
for area in bpy.context.screen.areas:
if area.type == 'SEQUENCE_EDITOR':
context = bpy.context.copy()
context['area'] = area
for rgn in area.regions:
if rgn.type == 'WINDOW':
context['region'] = rgn
break
# 切った後の右側の Strip を48フレーム右へ移動
bpy.ops.transform.seq_slide(context, value=(48, 0))
# 選択中の strip を取得
strip = bpy.context.selected_sequences[0]
# 選択中の strip を48フレーム前に伸ばし、切った部分の停止画像を48フレーム分作る
strip.frame_final_start = strip.frame_final_start - 48
Code language: PHP (php)
最後に
伸ばした停止部分のみでカットしたかったけど、それでカットすると意図通りとはならなかったためそこは手動でやります。