MRが楽しい

MRやVRについて学習したことを書き残す

Blender3.0で利用可能なpythonスクリプトを作る その113(現在のフレームを指定のフレームに移動する)

本日は Blender の技術調査枠です。
Blender3.0で利用可能なpythonスクリプトを作ります。

現在のフレームを指定のフレームに移動する

プロジェクトにおける現在のフレーム番号は Scene 型が保持しています。
frame_current の値を直接変更することで現在のフレーム番号を変更できます。
docs.blender.org

ただし frame_current の変更は即時反映されないため、想定しない動作をする場合があります。
フレーム番号を即時変更したい場合は frame_set を実行してフレーム番号を変更します。
docs.blender.org

サンプルスクリプト

現在のシーンのフレーム番号を任意の番号に設定します。
・Script_control_keyframe.py

# bpyインポート
import bpy

# 現在のフレームナンバーを指定する
def set_currentframe(arg_framenumber:int) -> bool:
    """現在のフレームナンバーを指定する

    Keyword Arguments:
        arg_framenumber {int} -- 指定フレーム番号

    Returns:
        bool -- 実行成否
    """

    # 指定のフレーム番号を設定する
    bpy.context.scene.frame_current = arg_framenumber

    return True

# 関数の実行例
set_currentframe(arg_framenumber=10)

f:id:bluebirdofoz:20220317233343j:plain

frame_set で現在のシーンのフレーム番号を任意の番号に設定します。
・Script_control_keyframe_2.py

# bpyインポート
import bpy

# 現在のフレームナンバーを指定する
def set_currentframe(arg_framenumber:int) -> bool:
    """現在のフレームナンバーを指定する

    Keyword Arguments:
        arg_framenumber {int} -- 指定フレーム番号

    Returns:
        bool -- 実行成否
    """

    # 指定のフレーム番号を設定する(即時)
    bpy.context.scene.frame_set(arg_framenumber)

    return True

# 関数の実行例
set_currentframe(arg_framenumber=20)

f:id:bluebirdofoz:20220324234434j:plain