From e62b6c3d778a160283ee2b55a28d0b98904ca6a4 Mon Sep 17 00:00:00 2001 From: Perfare Date: Mon, 29 Jul 2019 00:31:43 +0800 Subject: [PATCH] improved --- AssetStudioUtility/ModelConverter.cs | 94 ++++++++++++++-------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/AssetStudioUtility/ModelConverter.cs b/AssetStudioUtility/ModelConverter.cs index 67711a0..151d306 100644 --- a/AssetStudioUtility/ModelConverter.cs +++ b/AssetStudioUtility/ModelConverter.cs @@ -874,56 +874,56 @@ namespace AssetStudio bTrack.BlendShape = new ImportedBlendShape(); bTrack.BlendShape.ChannelName = channelName; bTrack.BlendShape.Keyframes.Add(new ImportedKeyframe(time, data[curveIndex++ + offset])); - return; } - if (binding.path == 0) + else if (binding.typeID == ClassIDType.Transform) + { + var path = FixBonePath(GetPathFromHash(binding.path)); + var track = iAnim.FindTrack(path); + + switch (binding.attribute) + { + case 1: + track.Translations.Add(new ImportedKeyframe(time, new Vector3 + ( + -data[curveIndex++ + offset], + data[curveIndex++ + offset], + data[curveIndex++ + offset] + ))); + break; + case 2: + var value = Fbx.QuaternionToEuler(new Quaternion + ( + data[curveIndex++ + offset], + -data[curveIndex++ + offset], + -data[curveIndex++ + offset], + data[curveIndex++ + offset] + )); + track.Rotations.Add(new ImportedKeyframe(time, value)); + break; + case 3: + track.Scalings.Add(new ImportedKeyframe(time, new Vector3 + ( + data[curveIndex++ + offset], + data[curveIndex++ + offset], + data[curveIndex++ + offset] + ))); + break; + case 4: + track.Rotations.Add(new ImportedKeyframe(time, new Vector3 + ( + data[curveIndex++ + offset], + -data[curveIndex++ + offset], + -data[curveIndex++ + offset] + ))); + break; + default: + curveIndex++; + break; + } + } + else { curveIndex++; - return; - } - - var path = FixBonePath(GetPathFromHash(binding.path)); - var track = iAnim.FindTrack(path); - - switch (binding.attribute) - { - case 1: - track.Translations.Add(new ImportedKeyframe(time, new Vector3 - ( - -data[curveIndex++ + offset], - data[curveIndex++ + offset], - data[curveIndex++ + offset] - ))); - break; - case 2: - var value = Fbx.QuaternionToEuler(new Quaternion - ( - data[curveIndex++ + offset], - -data[curveIndex++ + offset], - -data[curveIndex++ + offset], - data[curveIndex++ + offset] - )); - track.Rotations.Add(new ImportedKeyframe(time, value)); - break; - case 3: - track.Scalings.Add(new ImportedKeyframe(time, new Vector3 - ( - data[curveIndex++ + offset], - data[curveIndex++ + offset], - data[curveIndex++ + offset] - ))); - break; - case 4: - track.Rotations.Add(new ImportedKeyframe(time, new Vector3 - ( - data[curveIndex++ + offset], - -data[curveIndex++ + offset], - -data[curveIndex++ + offset] - ))); - break; - default: - curveIndex++; - break; } }