private int GetKeyframeCount(List <VMDFormat.Motion> mlist, int type, int interpolationQuality) { int num = 0; for (int i = 0; i < mlist.Count; i++) { if (i > 0 && !VMDHSConverter.IsLinear(mlist[i].interpolation, type)) { num += interpolationQuality; } else { num++; } } return(num); }
public static void AddBezierKeyframes(byte[] interpolation, int type, VMDHSConverter.FloatKeyframe prev_keyframe, VMDHSConverter.FloatKeyframe cur_keyframe, int interpolationQuality, ref List <VMDHSConverter.FloatKeyframe> keyframes, ref int index) { if (prev_keyframe == null || VMDHSConverter.IsLinear(interpolation, type)) { keyframes.Add(cur_keyframe); index = keyframes.Count <VMDHSConverter.FloatKeyframe>(); return; } Vector2 bezierHandle = VMDHSConverter.GetBezierHandle(interpolation, type, 0); Vector2 bezierHandle2 = VMDHSConverter.GetBezierHandle(interpolation, type, 1); for (int i = 0; i < interpolationQuality; i++) { float t = (float)(i + 1) / (float)interpolationQuality; Vector2 t2 = VMDHSConverter.SampleBezier(bezierHandle, bezierHandle2, t); keyframes.Add(VMDHSConverter.FloatKeyframe.Lerp(prev_keyframe, cur_keyframe, t2)); index = keyframes.Count <VMDHSConverter.FloatKeyframe>(); } }
public static void AddBezierKeyframes(byte[] interpolation, int type, VMDHSConverter.QuaternionKeyframe prev_keyframe, VMDHSConverter.QuaternionKeyframe cur_keyframe, int interpolationQuality, ref VMDHSConverter.QuaternionKeyframe[] keyframes, ref int index) { if (prev_keyframe == null || VMDHSConverter.IsLinear(interpolation, type)) { VMDHSConverter.QuaternionKeyframe[] array = keyframes; int num = index; index = num + 1; array[num] = cur_keyframe; return; } Vector2 bezierHandle = VMDHSConverter.GetBezierHandle(interpolation, type, 0); Vector2 bezierHandle2 = VMDHSConverter.GetBezierHandle(interpolation, type, 1); for (int i = 0; i < interpolationQuality; i++) { float t = (float)(i + 1) / (float)interpolationQuality; Vector2 t2 = VMDHSConverter.SampleBezier(bezierHandle, bezierHandle2, t); VMDHSConverter.QuaternionKeyframe[] array2 = keyframes; int num = index; index = num + 1; array2[num] = VMDHSConverter.QuaternionKeyframe.Lerp(prev_keyframe, cur_keyframe, t2); } }