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

・実行後
