私はオブジェクトのスケールFカーブを持っています。その補間を例えばCUBICと設定します。Pythonを介してFカーブの補間を設定するにはどうすればよいですか? (Blender)
これを行う最も簡単で最速の方法は何ですか?
私はオブジェクトのスケールFカーブを持っています。その補間を例えばCUBICと設定します。Pythonを介してFカーブの補間を設定するにはどうすればよいですか? (Blender)
これを行う最も簡単で最速の方法は何ですか?
それはfcurvesに長く曲がりくねった道です;)、しかし、あなたがそこに得れば、で動作するように速いです。その他fcurvesは、材料ノードに対して例えば同様のパスで見つけることができ
fc = bpy.context.active_object.animation_data.action.fcurves
アクティブなオブジェクトを皮切り
は、あなたがfcurvesに行きたい、それは
fc = mat.node_tree.animation_data.action.fcurves
fcurvesあるのリストですすべてのカーブを表示するには、findを使用して、ループしてすべてを変更しない限り、必要なカーブ(インデックス値0,1,2はx、y、zに一致します)を取得するのが最も簡単です。
loc_x_curve = fc.find('scale', index=0)
次に、各曲線は、独自の補間の設定を持っているkeyframe項目のリストです。
for k in loc_x_curve.keyframe_points:
# k.co[0] is the frame number
# k.co[1] is the keyed value
k.interpolation = 'CUBIC'
k.easing = 'EASE_IN'
は、例えばscipyのダウンロード、 を使用してみてください、次のように動作します:
>>> from scipy.interpolate import interp1d
>>> x = np.linspace(0, 10, num=11, endpoint=True)
>>> y = np.cos(-x**2/9.0)
>>> f = interp1d(x, y)
>>> f2 = interp1d(x, y, kind='cubic')
>>> xnew = np.linspace(0, 10, num=41, endpoint=True)
>>> import matplotlib.pyplot as plt
>>> plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')
>>> plt.legend(['data', 'linear', 'cubic'], loc='best')
>>> plt.show()
これは一般的なコードです。申し訳ありません。 –
非常に複雑ですが、それを行う最も簡単な方法はありませんか? –
そして、2つのキーフレーム間でのみ補間を設定したいのですか? –
'k [0] == 24かk [0] == 25の場合:k.interpolation = 'CUBIC' – sambler