|
Hi guys,
I’ve a quick question:
How can I copy over keys from one object(e.g. FBModel-type) to another?
I manually can copy keys from one source object to another by selecting the keys in the FCurve editor and paste them onto the destination model.
What are my options here to do that with python?
Does anybody have any experiences with that?
My own suggestions:
1.) I’m saving out every key on each FCurve(T/R/S) with its time and value and reapply it to the FCurves of the destination object. Good ol’ way, but how fast is it?
2.) I’m basically creating a constraint(point/parent->zero) to get the right keys anyway, plot it down and delete it.
3.) This is the way that intrigues me the most. Is it possible to assign the animation-nodes of one object to another so they actually share the same data?
What do you think?
Cheers,
Chris
|
|
|
|
Hi guys,
I’ve found the answer to my question as I was suggesting different approaches. ;)
It is possible to assign the FCurves of a certain model to another one in a very easy way.
Here’s the example code:
from pyfbsdk import *
mySource = FBFindModelByName("cube_source") myDestination = FBFindModelByName("cube_destination")
print mySource.Name,myDestination.Name
myDestination.Translation.GetAnimationNode().Nodes[0].FCurve = mySource.Translation.GetAnimationNode().Nodes[0].FCurve
myDestination.Translation.GetAnimationNode().Nodes[1].FCurve = mySource.Translation.GetAnimationNode().Nodes[1].FCurve
myDestination.Translation.GetAnimationNode().Nodes[2].FCurve = mySource.Translation.GetAnimationNode().Nodes[2].FCurve
This is just the test environment and nothing special. A loop inside a copy function will be much nicer that’s for sure. ;)
I really hoped it works out this way instead of copying over every keyframe in a big loop.
Phew, lucky me. :)
By the way:
Besides my suggestion that both models will share the same FCurve data, actually they don’t. Each FCurve is on its own after copying over. Nothing is referenced. :)
|
|
|