fixed bug

This commit is contained in:
Perfare 2019-04-18 13:58:06 +08:00
parent f76d3d8fcd
commit a2be5ebdac
2 changed files with 22 additions and 17 deletions

View File

@ -250,6 +250,7 @@ namespace AssetStudioGUI
var item = tempDic[m_Mesh]; var item = tempDic[m_Mesh];
item.TreeNode = currentNode; item.TreeNode = currentNode;
} }
tempDic[m_GameObject.m_MeshFilter].TreeNode = currentNode;
} }
if (m_GameObject.m_SkinnedMeshRenderer != null) if (m_GameObject.m_SkinnedMeshRenderer != null)
@ -259,6 +260,7 @@ namespace AssetStudioGUI
var item = tempDic[m_Mesh]; var item = tempDic[m_Mesh];
item.TreeNode = currentNode; item.TreeNode = currentNode;
} }
tempDic[m_GameObject.m_SkinnedMeshRenderer].TreeNode = currentNode;
} }
var parentNode = fileNode; var parentNode = fileNode;

View File

@ -380,7 +380,9 @@ namespace AssetStudio
} }
} }
} }
else if (mesh.m_BindPose.Length > 0 && mesh.m_BoneNameHashes?.Length > 0) if (iMesh.BoneList?.Count == 0)
{
if (mesh.m_BindPose.Length > 0 && mesh.m_BoneNameHashes?.Length > 0)
{ {
var boneMax = Math.Min(mesh.m_BindPose.Length, mesh.m_BoneNameHashes.Length); var boneMax = Math.Min(mesh.m_BindPose.Length, mesh.m_BoneNameHashes.Length);
iMesh.BoneList = new List<ImportedBone>(boneMax); iMesh.BoneList = new List<ImportedBone>(boneMax);
@ -398,6 +400,7 @@ namespace AssetStudio
} }
} }
} }
}
//Morphs //Morphs
if (mesh.m_Shapes?.shapes != null) if (mesh.m_Shapes?.shapes != null)
@ -697,7 +700,7 @@ namespace AssetStudio
{ {
foreach (var m_CompressedRotationCurve in animationClip.m_CompressedRotationCurves) foreach (var m_CompressedRotationCurve in animationClip.m_CompressedRotationCurves)
{ {
var track = iAnim.FindTrack(m_CompressedRotationCurve.m_Path); var track = iAnim.FindTrack(FixBonePath(m_CompressedRotationCurve.m_Path));
var numKeys = m_CompressedRotationCurve.m_Times.m_NumItems; var numKeys = m_CompressedRotationCurve.m_Times.m_NumItems;
var data = m_CompressedRotationCurve.m_Times.UnpackInts(); var data = m_CompressedRotationCurve.m_Times.UnpackInts();
@ -719,7 +722,7 @@ namespace AssetStudio
} }
foreach (var m_RotationCurve in animationClip.m_RotationCurves) foreach (var m_RotationCurve in animationClip.m_RotationCurves)
{ {
var track = iAnim.FindTrack(m_RotationCurve.path); var track = iAnim.FindTrack(FixBonePath(m_RotationCurve.path));
foreach (var m_Curve in m_RotationCurve.curve.m_Curve) foreach (var m_Curve in m_RotationCurve.curve.m_Curve)
{ {
var value = Fbx.QuaternionToEuler(new Quaternion(m_Curve.value.X, -m_Curve.value.Y, -m_Curve.value.Z, m_Curve.value.W)); var value = Fbx.QuaternionToEuler(new Quaternion(m_Curve.value.X, -m_Curve.value.Y, -m_Curve.value.Z, m_Curve.value.W));
@ -728,7 +731,7 @@ namespace AssetStudio
} }
foreach (var m_PositionCurve in animationClip.m_PositionCurves) foreach (var m_PositionCurve in animationClip.m_PositionCurves)
{ {
var track = iAnim.FindTrack(m_PositionCurve.path); var track = iAnim.FindTrack(FixBonePath(m_PositionCurve.path));
foreach (var m_Curve in m_PositionCurve.curve.m_Curve) foreach (var m_Curve in m_PositionCurve.curve.m_Curve)
{ {
track.Translations.Add(new ImportedKeyframe<Vector3>(m_Curve.time, new Vector3(-m_Curve.value.X, m_Curve.value.Y, m_Curve.value.Z))); track.Translations.Add(new ImportedKeyframe<Vector3>(m_Curve.time, new Vector3(-m_Curve.value.X, m_Curve.value.Y, m_Curve.value.Z)));
@ -736,7 +739,7 @@ namespace AssetStudio
} }
foreach (var m_ScaleCurve in animationClip.m_ScaleCurves) foreach (var m_ScaleCurve in animationClip.m_ScaleCurves)
{ {
var track = iAnim.FindTrack(m_ScaleCurve.path); var track = iAnim.FindTrack(FixBonePath(m_ScaleCurve.path));
foreach (var m_Curve in m_ScaleCurve.curve.m_Curve) foreach (var m_Curve in m_ScaleCurve.curve.m_Curve)
{ {
track.Scalings.Add(new ImportedKeyframe<Vector3>(m_Curve.time, new Vector3(m_Curve.value.X, m_Curve.value.Y, m_Curve.value.Z))); track.Scalings.Add(new ImportedKeyframe<Vector3>(m_Curve.time, new Vector3(m_Curve.value.X, m_Curve.value.Y, m_Curve.value.Z)));
@ -746,7 +749,7 @@ namespace AssetStudio
{ {
foreach (var m_EulerCurve in animationClip.m_EulerCurves) foreach (var m_EulerCurve in animationClip.m_EulerCurves)
{ {
var track = iAnim.FindTrack(m_EulerCurve.path); var track = iAnim.FindTrack(FixBonePath(m_EulerCurve.path));
foreach (var m_Curve in m_EulerCurve.curve.m_Curve) foreach (var m_Curve in m_EulerCurve.curve.m_Curve)
{ {
track.Rotations.Add(new ImportedKeyframe<Vector3>(m_Curve.time, new Vector3(m_Curve.value.X, -m_Curve.value.Y, -m_Curve.value.Z))); track.Rotations.Add(new ImportedKeyframe<Vector3>(m_Curve.time, new Vector3(m_Curve.value.X, -m_Curve.value.Y, -m_Curve.value.Z)));