docs.unity3d.com
    Show / Hide Table of Contents

    Class SplineUtility

    A collection of methods for extracting information about Spline types.

    Inheritance
    Object
    SplineUtility
    Namespace: UnityEngine.Splines
    Syntax
    public static class SplineUtility

    Fields

    DrawResolutionDefault

    The default resolution used when unrolling a curve to draw a preview in the Scene View.

    Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.

    Declaration
    public const int DrawResolutionDefault = 10
    Field Value
    Type Description
    Int32

    PickResolutionDefault

    The default resolution used when unrolling a curve to hit test while picking (selecting a spline with a cursor).

    Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.

    Declaration
    public const int PickResolutionDefault = 4
    Field Value
    Type Description
    Int32

    PickResolutionMax

    The maximum resolution allowed when unrolling a curve to hit test while picking (selecting a spline with a cursor).

    Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.

    Declaration
    public const int PickResolutionMax = 64
    Field Value
    Type Description
    Int32

    PickResolutionMin

    The minimum resolution allowable when unrolling a curve to hit test while picking (selecting a spline with a cursor).

    Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.

    Declaration
    public const int PickResolutionMin = 2
    Field Value
    Type Description
    Int32

    Methods

    CalculateLength(Spline, float4x4)

    Calculate the length of a spline when transformed by a matrix.

    Declaration
    public static float CalculateLength(Spline spline, float4x4 transform)
    Parameters
    Type Name Description
    Spline spline
    float4x4 transform
    Returns
    Type Description
    Single

    CurveToSplineInterpolation<T>(T, Single)

    Given an interpolation value for a curve, calculate the relative normalized spline interpolation.

    Declaration
    public static float CurveToSplineInterpolation<T>(T spline, float curve)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The target spline.

    Single curve

    A curve index and normalized interpolation. The curve index is represented by the integer part of the float, and interpolation is the fractional part. This is the format used by Knot.

    Returns
    Type Description
    Single

    An interpolation value relative to normalized Spline length (0 to 1).

    Type Parameters
    Name Description
    T
    See Also
    SplineToCurveInterpolation<T>(T, Single, out Single)

    EvaluateDirection<T>(T, Single)

    Return an interpolated direction at ratio t.

    Declaration
    public static float3 EvaluateDirection<T>(this T spline, float t)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The spline to interpolate.

    Single t

    A value between 0 and 1 representing the ratio along the curve.

    Returns
    Type Description
    float3

    A direction on the spline.

    Type Parameters
    Name Description
    T

    EvaluatePosition<T>(T, Single)

    Return an interpolated position at ratio t.

    Declaration
    public static float3 EvaluatePosition<T>(this T spline, float t)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The spline to interpolate.

    Single t

    A value between 0 and 1 representing the ratio along the curve.

    Returns
    Type Description
    float3

    A position on the spline.

    Type Parameters
    Name Description
    T

    EvaluateUpVector<T>(T, Single)

    Evaluate an up vector of a spline at a specific t

    Declaration
    public static float3 EvaluateUpVector<T>(this T spline, float t)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The NativeSpline to evaluate.

    Single t

    A value between 0 and 1 representing a percentage of the curve.

    Returns
    Type Description
    float3

    An up vector

    Type Parameters
    Name Description
    T

    GetBounds<T>(T)

    Calculate the bounding box of a Spline.

    Declaration
    public static Bounds GetBounds<T>(T spline)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The spline for which to calculate bounds.

    Returns
    Type Description
    Bounds

    The bounds of a spline.

    Type Parameters
    Name Description
    T

    A type implementing ISpline.

    GetConvertedTime<T>(T, Single, PathIndexUnit, PathIndexUnit)

    Given a time value using a certain PathIndexUnit type, calculate the associated time value in another targetPathUnit regarding a specific spline.

    Declaration
    public static float GetConvertedTime<T>(T spline, float time, PathIndexUnit originalTimeUnit, PathIndexUnit targetPathUnit)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The Spline to use for the conversion, this is necessary to compute Normalized and Distance PathIndexUnits.

    Single time

    The splineData time in the original PathIndexUnit.

    PathIndexUnit originalTimeUnit

    The PathIndexUnit from the original time.

    PathIndexUnit targetPathUnit

    The PathIndexUnit in which time should be converted.

    Returns
    Type Description
    Single

    The time converted in the targetPathUnit.

    Type Parameters
    Name Description
    T

    GetNearestPoint(NativeSpline, Ray, out float3, out Single, Int32, Int32)

    Calculate the point on a spline nearest to a ray.

    Declaration
    public static float GetNearestPoint(NativeSpline spline, Ray ray, out float3 nearest, out float time, int resolution = 4, int iterations = 2)
    Parameters
    Type Name Description
    NativeSpline spline

    The input spline to search for nearest point.

    Ray ray

    The input ray to search against.

    float3 nearest

    The point on a spline nearest to the input ray. The accuracy of this value is affected by the resolution.

    Single time

    The normalized time value to the nearest point.

    Int32 resolution

    Affects how many segments to split a spline into when calculating the nearest point. Higher values mean smaller and more segments, which increases accuracy at the cost of processing time. The minimum resolution is defined by PickResolutionMin, and the maximum is defined by PickResolutionMax. In most cases, the default resolution is appropriate. Use with to fine tune point accuracy.

    Int32 iterations

    The nearest point is calculated by finding the nearest point on the entire length of the spline using to divide into equally spaced line segments. Successive iterations will then subdivide further the nearest segment, producing more accurate results. In most cases, the default value is sufficient, but if extreme accuracy is required this value can be increased to a maximum of PickResolutionMax.

    Returns
    Type Description
    Single

    The distance from ray to nearest point.

    GetNearestPoint<T>(T, float3, out float3, out Single, Int32, Int32)

    Calculate the point on a spline nearest to a point.

    Declaration
    public static float GetNearestPoint<T>(T spline, float3 point, out float3 nearest, out float time, int resolution = 4, int iterations = 2)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The input spline to search for nearest point.

    float3 point

    The input point to compare.

    float3 nearest

    The point on a spline nearest to the input point. The accuracy of this value is affected by the resolution.

    Single time

    The normalized time value to the nearest point.

    Int32 resolution

    Affects how many segments to split a spline into when calculating the nearest point. Higher values mean smaller and more segments, which increases accuracy at the cost of processing time. The minimum resolution is defined by PickResolutionMin, and the maximum is defined by PickResolutionMax. In most cases, the default resolution is appropriate. Use with to fine tune point accuracy.

    Int32 iterations

    The nearest point is calculated by finding the nearest point on the entire length of the spline using to divide into equally spaced line segments. Successive iterations will then subdivide further the nearest segment, producing more accurate results. In most cases, the default value is sufficient, but if extreme accuracy is required this value can be increased to a maximum of PickResolutionMax.

    Returns
    Type Description
    Single

    The distance from input point to nearest point on spline.

    Type Parameters
    Name Description
    T

    GetNormalizedTime<T>(T, Single, PathIndexUnit)

    Given a time value using a certain PathIndexUnit type, calculate the normalized time value regarding a specific spline.

    Declaration
    public static float GetNormalizedTime<T>(T spline, float time, PathIndexUnit originalTimeUnit)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The Spline to use for the conversion, this is necessary to compute Normalized and Distance PathIndexUnits.

    Single time

    The time to normalize in the original PathIndexUnit.

    PathIndexUnit originalTimeUnit

    The PathIndexUnit from the original time.

    Returns
    Type Description
    Single

    The normalized time.

    Type Parameters
    Name Description
    T

    GetSegmentCount(Single, Int32)

    Use this function to calculate the number of segments for a given spline length and resolution.

    Declaration
    public static int GetSegmentCount(float length, int resolution)
    Parameters
    Type Name Description
    Single length

    A distance value in PathIndexUnit.

    Int32 resolution

    A value used to calculate the number of segments for a length. This is calculated as max(MIN_SEGMENTS, min(MAX_SEGMENTS, sqrt(length) * resolution)).

    Returns
    Type Description
    Int32

    The number of segments as calculated for given length and resolution.

    SetPivot(SplineContainer, Vector3)

    Reset a transform position to a position while keeping knot positions in the same place. This modifies both knot positions and transform position.

    Declaration
    public static void SetPivot(SplineContainer container, Vector3 position)
    Parameters
    Type Name Description
    SplineContainer container

    The target spline.

    Vector3 position

    The

    SplineToCurveInterpolation<T>(T, Single, out Single)

    Given a normalized interpolation (t) for a spline, calculate the curve index and curve-relative normalized interpolation.

    Declaration
    public static int SplineToCurveInterpolation<T>(this T spline, float splineT, out float curveT)
        where T : ISpline
    Parameters
    Type Name Description
    T spline

    The target spline.

    Single splineT

    A normalized spline interpolation value to be converted into curve space.

    Single curveT

    A normalized curve interpolation value.

    Returns
    Type Description
    Int32

    The curve index.

    Type Parameters
    Name Description
    T
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023