Ich habe eine Skala F-Kurve eines Objekts und was ich brauche Ist seine Interpolation als CUBIC zum Beispiel zu setzen.Wie kann ich die Interpolation einer F-Kurve über Python einstellen? (Blender)
Was ist der einfachste und schnellste Weg?
Ich habe eine Skala F-Kurve eines Objekts und was ich brauche Ist seine Interpolation als CUBIC zum Beispiel zu setzen.Wie kann ich die Interpolation einer F-Kurve über Python einstellen? (Blender)
Was ist der einfachste und schnellste Weg?
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'
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()
dies ist ein allgemeiner Code, tut mir leid. –
Es ist sehr kompliziert, gibt es nicht einen einfachsten Weg, es zu tun? –
Und wenn ich die Interpolation nur zwischen zwei Keyframes einstellen möchte? –
'wenn k [0] == 24 oder k [0] == 25: k.Interpolation = 'CUBIC' – sambler