本日は 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"))
・実行前
・実行後