Float curve node, especially: factor

It looks like i still have no idea how the float curve is working.

so i made this very simple node setup here:

so it plays an animation from 0 to 1 (z-height) from frame 1 to 30 (and not to 10) because factor is 1

so my wrong thought was: ok, the 1 is the strength of clamping.

because if i change the factor to 0, the cube rises up to 10 (full input value from map node)

so far so good…

but 0.5 is 5.5 → not was i expected, so i AM wrong

but if i change the factor to 2 → the cube fell to -8
factor 3 → -17
factor 4 → -26

can somebody explain me, what the mathematical formula for the output value is?

so f(factor, value, x,y) = output?

I also ever wondered about the Factor of the Float Curve node… the docu says:

Factor

Controls the amount of influence the node exerts on the output value.

…so i also assumed it would be the mathematical expression * factor to be able to “scale” the value for example by half ( * 0.5 ) or double it ( * 2.0 )…

( And also wonder why to put this into the node because a Math node with multiply would do this… and also i used exactly this for “scaling” the float curve output… or a Map Range node )

So i had a look at the range… to use some “proper integer values” for the input i choosed the start to end frame 0 and 10 to have 5 in the middle. So now if you also use a the same values for min and max in the Map Range node so that it doesn’t change anything (which could be checked when muting it) you get (with decimal values of 2):

→ the frame number “plus” .00

But (yes) when using the “factor” everthing runs haywire…

Also:
When using an RGB curve then the factor seems to have no influence at all…

(I did this with 3.6 because the computer i watch BA now can’t handle 4.xy )

I understand it, when factor is 0 or 1 …everything else is a mystery :wink:

Factor is the amount of influence, yes.

  • if Factor = 0: the float curve is ignored completely;
  • if Factor = 1: the float curve output is used;
  • if Factor = 0.5, the output value is in the middle between the original input and the full output of the curve.

The Float Curve works in [0, 1] range.
So if you have 10 as input, the result of Float Curve will be 1.
If the Factor is 0.5, the result will be between 10 and 1, which is 5.5

That’t the reason why hit Ctrl-H after connecting the Value slots and selecting the Float Curve node… no irritating “other things” :wink:

The float curve is assumed to work in or operate on a 0…1 range
Using values that are outside leads to lets say unintended calculatory results.

Beside that its: out = factor * f(value) + (1-factor)*value

Like others said, the issue is that the float curve operates on 0…1 range. If you want to draw a curve that affects the range 0…10, you need to remap to 0…1 first, and remap to 0…10 after the float curve.

@Debug @Hadriscus

If it is supposed to work only for 0 to 1, why are the soft limits of that field not 0 and 1 but you can enter anything you want, if it doesn’t make sense?
I think/hope the developers had thought about that and gave them soft limits because they make sense…although i don’t understand it.

Though it’s odd that it doesn’t just say so in the docs.

I think one of the float curves in some editor could be extended beyond this range… at some point in time. Can’t find it anymore :thinking:

@stray @Blender_Fun1

Just had a look. And no there is more or less standing nothing in the manual about it at all. But the fcurve field itself is clamped with all its values into a 2 dimensional 0…1 area and also the extrapolation doesnt work outside that range. But if for whatever reason someone just wants to add its curves out to whatever input then it might turn out to be benefitial that is unclamped. But honestly I dont see much sense lying in there. So yeah. Could be clamped or the float curve could be expanded to relate to a to be specified value range.

Maybe you just think of the extrapolation in the top drop down box?

I tried out your formula, which works for 0 and 1, but for 0.5 i got a little difference…but i might have made something wrong or misunderstood you:

I am away for an hour. I’ll have a look later.

Your f(value) should be equal “1”, if we’re looking at input = 10. I think?

depends on the frame, i think. I was on frame 15…i think i am totally confused now…sorry

well, it’s above the range anyway, so it’s clamped to 1

thats for sure!

if anybody wants to play around with the values…here the blend file

float curve play around.blend (641.0 KB)

Ohh yes… the [0,1] intervall… but then the factor does not change anything ???

Yeah stray is right. If you leave the curve linear as is, you can change your test like this.

That’s probably because you already remapped your values with Map Range to [0, 1], so your Float Curve have no meaningful influence regardless of the factor.