コード例 #1
0
            public void Bake_LinearCurve_IsAccurate(AnimationCurveBake.InterpolationMode mode)
            {
                float frameRate  = 7;
                float sampleRate = 30;

                var sourceCurve = AnimationCurve.Linear(0, 0, 5, 5);
                var curveKeys   = sourceCurve.keys;
                var destCurve   = new AnimationCurve(curveKeys);

                float start    = KeyframeUtilities.StartTime(curveKeys);
                float end      = KeyframeUtilities.EndTime(curveKeys);
                float duration = end - start;

                AnimationCurveBake.Bake(destCurve, frameRate, mode);


                float delta      = (end - start) / sampleRate;
                int   numSamples = (int)math.ceil(duration * frameRate) + 1;

                for (int i = 0; i <= numSamples; i++)
                {
                    float time     = math.clamp(start + i * delta, start, end);
                    float expected = sourceCurve.Evaluate(time);
                    float actual   = destCurve.Evaluate(time);
                }
            }