Tối ưu chuỗi clip - Xóa các khung liên tục giống nhau

Trong phần mềm này, chúng tôi cung cấp một công cụ để kiểm tra và xóa các khung (frames) liên tục giống nhau trong một chuỗi clip. Yêu cầu chính là xác định các khung không thay đổi và bỏ qua chúng để giảm thiểu kích thước clip而不影响 animation效果.

Code Example

<strong>Code Example 1</strong>

Khởi tạo và kiểm tra các khung liên tục giống nhau

Input: Chuỗi frames [1, 2, 3, 4, 5] với các khung có giá trị không thay đổi. Output: Xóa các khung không quan trọng từ frames.

Functionality

  • Check All No Change Frames: Kiểm tra và lưu trữ các đoạn frames không thay đổi.
  • Clear All No Change: Xóa các đoạn frames không quan trọng từ curves.
  • Update Curve Binding: Cập nhật curves tương ứng với các khung được giữ nguyên.

Code Example 2

<strong>Code Example 2</strong>

Xử lý curves và khung với các tham số mới

Input: Chuỗi frames [A, B, C, D, E] với các khung có giá trị thay đổi. Output: Giữ nguyên các khung thay đổi và xóa các khung không thay đổi.

Codes

<strong>Codes</strong>

Utility Class

<strong>Utility Class</strong>

TrimFloat2:

                public static float TrimFloat2(float f1)
                {
                    int i = (int)(f1 * 100);
                    float result = i / 100.0f;
                    return result;
                }
            

TrimFloat4:

                public static float TrimFloat4(float f1)
                {
                    int i = (int)(f1 * 10000);
                    float result = i / 10000.0f;
                    return result;
                }
            

IsFrameNoChange:

                public static bool IsFrameNoChange(Keyframe kf1, Keyframe kf2)
                {
                    if (Utils.IsFloatEquals(kf1.value, kf2.value))
                    {
                        if (kf1.outTangent == 0 && kf2.inTangent == 0)
                        {
                            return true;
                        }
                        if (float.IsInfinity(kf1.outTangent) || float.IsInfinity(kf2.inTangent))
                        {
                            return true;
                        }
                    }
                    return false;
                }
            

CheckNoChangeFrames:

                public static void CheckNoChangeFrames(AnimationCurve curve, EditorCurveBinding binding, List<int> outList)
                {
                    int index1 = -1;

                    var keys = curve.keys;
                    for (int i = 0; i < keys.Length - 1; ++i)
                    {
                        var kf1 = keys[i];
                        var kf2 = keys[i + 1];
                        if (-1 == index1)
                        {
                            if (IsFrameNoChange(kf1, kf2))
                            {
                                index1 = i;
                            }
                        }
                        else
                        {
                            if (!IsFrameNoChange(kf1, kf2))
                            {
                                int deltaFrame = i - index1;
                                if (deltaFrame <= 1)
                                {
                                    // adjacent frames are ignored
                                }
                                else
                                {
                                    outList.Add(index1);
                                    outList.Add(i);
                                }
                                index1 = -1;
                            }
                        }
                    }

                    if (-1 != index1)
                    {
                        outList.Add(index1);
                        outList.Add(keys.Length - 1);
                    }
                }
            

References

  • Utility Class: Cung cấp các hàm hỗ trợ để kiểm tra và xử lý các khung frames.
  • Animation Curve: Sử dụng để xử lý curves trong animation.
  • Edit Curve Binding: Xử lý các kết nối curves với các khung frames.

About This Article

Tóm tắt: Trình bày một công cụ mới được cung cấp để kiểm tra và xóa các khung frames không thay đổi trong một chuỗi clip. Yêu cầu chính là xác định và xóa các đoạn frames không quan trọng để giảm kích thước clip而又 không ảnh hưởng đến animation. Baøi toøn: Yêu cầu chính laøi b»i大家都在 daily work, but it's essential to have efficient tools to manage and optimize animation data.

Thẻ: tag1 tag2 tag3

Đăng vào ngày 7 tháng 8 lúc 08:32