MRが楽しい

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

Blender3.0で利用可能なpythonスクリプトを作る その120(アクションデータ内のスケールに関するデータパスを削除する)

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

アクションデータ内のデータパスをする

アクションデータにはアクションの動きを示すカーブデータが含まれています。
カーブデータはデータパス名とインデックスごとに保持されています。
docs.blender.org

スケールに関するデータはデータパス名が ***.scale となっているので、これに一致するデータパスを削除します。
文字列の後方一致には endswith() 関数が利用できます。
note.nkmk.me

サンプルスクリプト

スクリプトを実行すると指定したアクション内に含まれるスケールに関するカーブデータが削除されます。
・Script_delete_action_datapath.py

# bpyインポート
import bpy

# 指定アクションに含まれるスケールに関するデータパスを削除する
def delete_action_datapath_scale(arg_actiondata:bpy.types.Action) -> bool:
    """指定アクションに含まれるスケールに関するデータパスを削除する

    Keyword Arguments:
        arg_actiondata {bpy.types.Action} -- 指定アクションデータ

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

    # 引数をチェックする  
    if arg_actiondata == None:
        return False

    # アクション内の全アクションカーブを走査する
    # データ削除のため、リストは逆順(reversed)で回す
    for fcurve in reversed(arg_actiondata.fcurves):
        # アクションカーブのデータパス名がスケール名と後方一致するか
        # Fcurveアクセスのマニュアル
        # (https://docs.blender.org/api/current/bpy.types.FCurve.html)
        if fcurve.data_path.endswith('.scale'):
            # スケールに関するアクションカーブであれば削除する
            arg_actiondata.fcurves.remove(fcurve)

    return True

# 関数の実行例
delete_action_datapath_scale(bpy.data.actions.get("Action_Wait"))

・実行前

・実行後