MRが楽しい

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

Blenderで利用可能なアニメーションのキーフレームの補間タイプを全て試す その2(ELASTIC(弾性)のパラメータ変更)

本日は Blender の小ネタ枠です。
Blenderで利用可能なアニメーションのキーフレームの補間タイプを試してみたの記事にします。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

ELASTIC(弾性)のパラメータ変更

補間タイプ:ELASTIC(弾性)では以下のパラメータで弾性のカーブ量を調整可能です。
・amplitude
・period
docs.blender.org

python スクリプトで試した結果を以下に示します。

amplitude:0.0, period:0.0


amplitude:1.0, period:1.0


amplitude:1.0, period:0.0


amplitude:0.0, period:1.0


amplitude:0.1, period:1.0


サンプルスクリプト

試験に利用したサンプルスクリプトを以下に添付します。
・Script_change_keyframe_interpolation_TypeTest_Bounce.py

# bpyインポート
import bpy

# アニメーションのキーフレームの補間タイプを変更する
def change_keyframe_interpolation(
    arg_actiondata:bpy.types.Action,
    arg_interpolationtype:str,
    arg_amplitude:float,
    arg_periodtime:float) -> bool:
    """アニメーションのキーフレームの補間タイプを変更する

    Keyword Arguments:
        arg_actiondata {bpy.types.Action} -- 指定アクションデータ
        arg_interpolationtype {str} -- 指定補間タイプ
        arg_amplitude {float} -- 弾性量
        arg_periodtime {float} -- 弾性時間

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

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

    # アクション内の全アクションカーブを走査する
    for fcurve in arg_actiondata.fcurves:
        # カーブ内の全キーポイントを走査する
        for keyframe_point in fcurve.keyframe_points:
            # キーフレームの補間タイプを変更する
            # Keyframeアクセスのマニュアル
            # (https://docs.blender.org/api/current/bpy.types.Keyframe.html)
            keyframe_point.interpolation = arg_interpolationtype
            keyframe_point.amplitude = arg_amplitude
            keyframe_point.period = arg_periodtime
        # 更新したキーフレームに合わせてカーブを更新する
        fcurve.update()

    return True

# 関数の実行例
actiondata = bpy.data.actions.get('Action')
interpolationtype = 'ELASTIC'
amplitude = 1.0
periodtime = 1.0
change_keyframe_interpolation(
    arg_actiondata=actiondata,
    arg_interpolationtype=interpolationtype,
    arg_amplitude=amplitude,
    arg_periodtime=periodtime)