[Blender][スクリプト]選択中のキーを1Fズラす(240924修正)
実行するとグラフエディタとドープシートのキーメニューに「Move +1F」「Move -1F」が追加されるので、それをアドオン化したうえでショートカットに割り当てると便利です。
(240924修正)移動するとハンドルが置いていかれるのを修正しました(AIが)。
import bpy
# 通常のアクションとグリースペンシルのキーフレームを1フレーム後に移動
def move_keys_plus1f(context):
# ドープシートの場合は「時間移動」モードを使用
if context.space_data.type == 'DOPESHEET_EDITOR':
bpy.ops.transform.transform(mode='TIME_TRANSLATE', value=(1, 0, 0, 0))
# グラフエディタの場合は通常のtranslateを使用
elif context.space_data.type == 'GRAPH_EDITOR':
bpy.ops.transform.translate(value=(1, 0, 0))
# 通常のアクションとグリースペンシルのキーフレームを1フレーム前に移動
def move_keys_minus1f(context):
# ドープシートの場合は「時間移動」モードを使用
if context.space_data.type == 'DOPESHEET_EDITOR':
bpy.ops.transform.transform(mode='TIME_TRANSLATE', value=(-1, 0, 0, 0))
# グラフエディタの場合は通常のtranslateを使用
elif context.space_data.type == 'GRAPH_EDITOR':
bpy.ops.transform.translate(value=(-1, 0, 0))
# メニューにコマンドを追加
def menu_func(self, context):
self.layout.operator("anim.move_keys_plus1f", text="Move +1F")
self.layout.operator("anim.move_keys_minus1f", text="Move -1F")
# オペレーター定義
class ANIM_OT_move_keys_plus1f(bpy.types.Operator):
bl_idname = "anim.move_keys_plus1f"
bl_label = "Move +1F"
def execute(self, context):
move_keys_plus1f(context)
return {'FINISHED'}
class ANIM_OT_move_keys_minus1f(bpy.types.Operator):
bl_idname = "anim.move_keys_minus1f"
bl_label = "Move -1F"
def execute(self, context):
move_keys_minus1f(context)
return {'FINISHED'}
# クラス登録とメニュー追加
def register():
bpy.utils.register_class(ANIM_OT_move_keys_plus1f)
bpy.utils.register_class(ANIM_OT_move_keys_minus1f)
bpy.types.DOPESHEET_MT_key.append(menu_func)
bpy.types.GRAPH_MT_key.append(menu_func)
def unregister():
bpy.utils.unregister_class(ANIM_OT_move_keys_plus1f)
bpy.utils.unregister_class(ANIM_OT_move_keys_minus1f)
bpy.types.DOPESHEET_MT_key.remove(menu_func)
bpy.types.GRAPH_MT_key.remove(menu_func)
if __name__ == "__main__":
register()