本日は Blender の技術調査枠です。
Blender3.0で利用可能なpythonスクリプトを作ります。
アニメーションのキーフレームの補間タイプを変更する
補間タイプの情報はカーブデータの各キーフレームに保持されています。
保持しているキーフレームから次のキーフレームまでのカーブの補間方法を示します。
docs.blender.org
以下の13種類の補間タイプが指定可能です。
定義 | 説明 |
---|---|
CONSTANT(定数) | 補間なし、A の値は B が検出されるまで保持されます。 |
LINEAR(線形) | A と B の間の直線補間。 |
BEZIER(ベジェ) | A と B の間の滑らかな補間。曲線形状を制御します。 |
SINE(正弦波) | 正弦波緩和(最も弱いほぼ直線的なわずかな曲率)。 |
QUAD | 2 次イージング。 |
CUBIC | キュービックイージング。 |
QUART | クォーティックイージング。 |
QUINT | クインティックイージング。 |
EXPO(指数関数的) | 指数緩和。 |
CIRC(円形) | 円形のイージング (最も強く最もダイナミック)。 |
BACK(戻る) | オーバーシュートとセトリングを伴う立方体の緩和。 |
BOUNCE(バウンス) | オブジェクトが衝突したときのように、指数関数的に減衰する放物線バウンス。 |
ELASTIC(弾性) | 弾性バンドのように指数関数的に減衰する正弦波。 |
各補間タイプの実行例は以下の記事を参照ください。
bluebirdofoz.hatenablog.com
サンプルスクリプト
スクリプトを実行すると指定したアクションの全キーフレームの補間タイプが LINEAR(線形) に変更されます。
・Script_change_keyframe_interpolation.py
# bpyインポート import bpy # アニメーションのキーフレームの補間タイプを変更する def change_keyframe_interpolation(arg_actiondata:bpy.types.Action, arg_interpolationtype:str) -> bool: """アニメーションのキーフレームの補間タイプを変更する Keyword Arguments: arg_actiondata {bpy.types.Action} -- 指定アクションデータ arg_interpolationtype {str} -- 指定補間タイプ 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 # 更新したキーフレームに合わせてカーブを更新する fcurve.update() return True # 関数の実行例 actiondata = bpy.data.actions.get('Action') interpolationtype = 'LINEAR' change_keyframe_interpolation( arg_actiondata=actiondata, arg_interpolationtype=interpolationtype)
・実行前
・実行後