Is it possible to “put” a Bezier curve in an F-Curve?
I want to render the Bezier curve and I need it to move/animate an object.
It sounds like you want an object or bone to follow a bezier curve. If that is what you want can’t you just use a path constraint?
I don’t want my object to follow a path.
I would like to represent the movements of an object (animated by the F-curve) by a kind of trace like with an oscilloscope, hence the Bezier.
I would like to be able to render the F-curve… in a way.
I am not certain there is an easy way to do that.
You could use a particle system to leave a trail of dots hanging in the air. If you up the particle count this will eventually look like a line/trail.The particle age can be used to fade it out and dictate the length of the trail.
You can probably also do it with animation nodes but I don’t have much experience with them.
Depending on the length and complexity of the movement you may also be able to fake it by drawing a path of the motion (as far as I know you can’t convert motion trails to editable splines in blender) and then using pathdeform on a cylinder.
You can get it with a bit of indirection. Not any arbitrary bezier-- what the hell would a bezier circle indicate? Or any other bezier that wasn’t really a function? But basically, for any reasonable use, you can do it.
Make a heavily subdivided plane, curve deform it from your bezier, set your bezier to stretch + bounds clamp, shrinkwrap/project a bone to the plane, read the appropriate local transform channel (shrinkwrapped axis) of that bone as a driver, keyframe bone location at frame 0 and 1 with linear extrapolation (you’re mapping time to space, so if 1 unit = 30 frames, keyframe it at 0,1 units at frames 0, 30.)
Not sure about ideal optimization, I imagine there’s probably some way to get it working without the mesh object.
bezierF.blend (846.2 KB)
Thanks for the replies,
The last response seems promising but how do I “read the appropriate local transform channel (shrinkwrapped axis) of that bone as a driver” ?
I’m a pure noob with bones.
That file has a driver editor viewport open IIRC. If you select the Suzanne, you’ll see the driver settings for Suzanne’s Z channel. They’re set to read the local Y translation, of the bone, of the armature; you can see or edit these settings by selecting the driven channel and looking on sidebar/driver in the driver editor. Why Y axis? Because the bone is set to shrinkwrap/project to the curve-deformed mesh in its Y axis, as seen on the bone constraints tab. To create a new driver for a channel, you just right click in a field and select “add new driver”. Which field? Whichever field you want to use a bezier curve f-curve in.
Thanks for this quick and understandable reply.