docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class KeyframeUtility

    A helper function for interpolating AnimationCurves together. In general, curves can not be directly blended because they will have keypoints at different places. InterpAnimationCurve traverses through the keypoints. If both curves have a keypoint at the same time, they keypoints are trivially lerped together. However if one curve has a keypoint at a time that is missing in the other curve (which is the most common case), InterpAnimationCurve calculates a synthetic keypoint at that time based on value and derivative, and interpolates the resulting keys. Note that this function should only be called by internal rendering code. It creates a small pool of animation curves and reuses them to avoid creating garbage. The number of curves needed is quite small, since curves only need to be used when interpolating multiple volumes together with different curve parameters. The underlying interp function isn't allowed to fail, so in the case where we run out of memory we fall back to returning a single keyframe.

    Inheritance
    object
    KeyframeUtility
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: UnityEngine.Rendering
    Assembly: Unity.RenderPipelines.Core.Runtime.dll
    Syntax
    public class KeyframeUtility
    Examples
    {
        AnimationCurve curve0 = new AnimationCurve();
        curve0.AddKey(new Keyframe(0.0f, 3.0f));
        curve0.AddKey(new Keyframe(4.0f, 2.0f));
    
        AnimationCurve curve1 = new AnimationCurve();
        curve1.AddKey(new Keyframe(0.0f, 0.0f));
        curve1.AddKey(new Keyframe(2.0f, 1.0f));
        curve1.AddKey(new Keyframe(4.0f, 4.0f));
    
        float t = 0.5f;
        KeyframeUtility.InterpAnimationCurve(curve0, curve1, t);
    
        // curve0 now stores the resulting interpolated curve
    }

    Methods

    InterpAnimationCurve(ref AnimationCurve, AnimationCurve, float)

    Interpolates two AnimationCurves. Since both curves likely have control points at different places in the curve, this method will create a new curve from the union of times between both curves. However, to avoid creating garbage, this function will always replace the keys of lhsAndResultCurve with the final result, and return lhsAndResultCurve.

    Declaration
    public static void InterpAnimationCurve(ref AnimationCurve lhsAndResultCurve, AnimationCurve rhsCurve, float t)
    Parameters
    Type Name Description
    AnimationCurve lhsAndResultCurve

    The start value. Additionaly, this instance will be reused and returned as the result.

    AnimationCurve rhsCurve

    The end value.

    float t

    The interpolation factor in range [0,1].

    ResetAnimationCurve(AnimationCurve)

    Helper function to remove all control points for an animation curve. Since animation curves are reused in a pool, this function clears existing keys so the curve is ready for reuse.

    Declaration
    public static void ResetAnimationCurve(AnimationCurve curve)
    Parameters
    Type Name Description
    AnimationCurve curve

    The curve to reset.

    Extension Methods

    ReflectionUtils.GetField(object, string)
    ReflectionUtils.GetFields(object)
    ReflectionUtils.Invoke(object, string, params object[])
    ReflectionUtils.SetField(object, string, object)
    AnalyticsUtils.ToNestedColumnWithDefault<T>(T, T, bool)
    AnalyticsUtils.ToNestedColumn<T>(T, bool)
    AnalyticsUtils.ToNestedColumn<T>(T, T)
    In This Article
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)