2016-05-22 2 views

Antwort

1

Es ist eine lange, gewundene Pfad zu den fcurves;), aber sobald man dort es schnell zu arbeiten.

mit dem aktiven Objekt starten, möchten Sie

fc = bpy.context.active_object.animation_data.action.fcurves 

Andere fcurves kann es

fc = mat.node_tree.animation_data.action.fcurves 

fcurves in ähnlichen Bahnen zB für Material Knoten zu finden ist der fcurves zu gehen, ist eine Liste der Bei allen Kurven ist es normalerweise am einfachsten, find zu verwenden, um die gewünschte Kurve zu erhalten (die Indexwerte 0,1,2 stimmen mit x, y, z überein), es sei denn, Sie möchten sie durchlaufen und alle ändern.

loc_x_curve = fc.find('scale', index=0) 

Dann wird jede Kurve ist eine Liste von keyframe Elemente, die ihre eigene Interpolation Einstellung haben.

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' 
+0

Und wenn ich die Interpolation nur zwischen zwei Keyframes einstellen möchte? –

+0

'wenn k [0] == 24 oder k [0] == 25: k.Interpolation = 'CUBIC' – sambler

0

Versuchen SciPy, zum Beispiel unter Verwendung der folgenden funktionieren würde:

>>> 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() 
+0

dies ist ein allgemeiner Code, tut mir leid. –

+0

Es ist sehr kompliziert, gibt es nicht einen einfachsten Weg, es zu tun? –

Verwandte Themen