Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
193 stars 9 forks source link

Additional Shaping Nodes #2521

Open ProbablePrime opened 3 years ago

ProbablePrime commented 3 years ago

Is your feature request related to a problem? Please describe.

I've been playing around with the Shaping nodes in Math-> Shaping and they're great!

In learning how they worked, I found: https://easings.net/ which features a lot of common easing and shaping functions and their JavaScript definitions.

The easing names featured are somewhat standardized across software development in a lot of libraries.

Describe the solution you'd like

Could we implement some/all of these in Neos? There are a ton here and so i'm not sure we need them all.

Describe alternatives you've considered

Some of these can be composed using standard maths nodes or by combining existing shaping nodes but its gets quite complicated fast.

I've worked with some users on writing some of them as more of a hobby project and the maths gets really unwieldy in logix sometimes.

Dirko3000 commented 3 years ago

This may or may not warrant a second github issue, but after looking at those easings, having a bunch of those as Curve Presets for the Tween node would be sick. That'd allow for much more lively animations on things.

shadowpanther commented 3 years ago

Maybe a unified way - one "Easing" node that accepts the same enum type as Tween, and then add more curves?

ProbablePrime commented 3 years ago

Ryuvi opened an issue here: https://github.com/Neos-Metaverse/NeosPublic/issues/2707

With a good proposal about how these nodes could be implemented. I'm not entirely sure which setup would be best.

I will speak to Frooxius when he's free to see what he thinks.

shiftyscales commented 3 years ago

Ryuvi opened an issue here: #2707

With a good proposal about how these nodes could be implemented. I'm not entirely sure which setup would be best.

I will speak to Frooxius when he's free to see what he thinks.

Having the "InterpolationType" proposed in #2707 could also be potentially beneficial for other issues such as #2672 requesting a way to choose between various preset curves for the Set User Scale node.

irdyn commented 3 years ago

I agree with this proposal. It would be extremely useful to have non-linear curve functions, especially for UI projects. For example, an elastic ease-in is far more noticeable than a linear ease-in, which for applications like notifications, would be obviously beneficial.

I don't personally think that all of them are useful, but they're not terribly difficult to implement in C#. See: C# implementation thereof

ProbablePrime commented 2 years ago

DMX, Erin and I spoke about this in-game.

They'd like an Enum for a set of curves and then a "Strength" or power for those curves.

This can probably be handled to some other components that have a "Power" field which control how drastic of a change things are.

ProbablePrime commented 2 years ago

Dropping this in here because I lost it: http://sol.gfxile.net/interpolation/index.html