Add more conditions for skeleton import and add blendshapes for prefab recognition

This commit is contained in:
alsed
2025-09-07 13:45:21 -03:00
parent 9a363e2882
commit a8768f918e
4 changed files with 5 additions and 5 deletions

View File

@@ -339,7 +339,7 @@ CreateAssetResult ImportModel::Import(CreateAssetContext& context)
splitOptions.Type = ModelTool::ModelType::Model;
// Search for Skinned Model
if (group.First()->BlendShapes.HasItems())
if (group.First()->BlendWeights.HasItems() || group.First()->BlendShapes.HasItems() )
{
LOG(Info, "Mesh {0} is Skinned", prefabObject.Name);
splitOptions.Type = ModelTool::ModelType::SkinnedModel;

View File

@@ -765,7 +765,7 @@ bool ModelTool::ImportDataAssimp(const String& path, ModelData& data, Options& o
}
// Import skeleton
if (EnumHasAnyFlags(options.ImportTypes, ImportDataTypes::Skeleton))
if (EnumHasAnyFlags(options.ImportTypes, ImportDataTypes::Skeleton) && context.Bones.HasItems())
{
data.Skeleton.Nodes.Resize(context.Nodes.Count(), false);
for (int32 i = 0; i < context.Nodes.Count(); i++)

View File

@@ -1404,7 +1404,7 @@ bool ModelTool::ImportDataOpenFBX(const String& path, ModelData& data, Options&
}
// Import skeleton
if (EnumHasAnyFlags(options.ImportTypes, ImportDataTypes::Skeleton))
if (EnumHasAnyFlags(options.ImportTypes, ImportDataTypes::Skeleton) && context.Bones.HasItems())
{
data.Skeleton.Nodes.Resize(context.Nodes.Count(), false);
for (int32 i = 0; i < context.Nodes.Count(); i++)

View File

@@ -1184,7 +1184,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& data, Options& option
}
}
}
if (EnumHasAnyFlags(options.ImportTypes, ImportDataTypes::Skeleton))
if (EnumHasAnyFlags(options.ImportTypes, ImportDataTypes::Skeleton) && data.Skeleton.Bones.HasItems())
{
LOG(Info, "Imported skeleton has {0} bones and {1} nodes", data.Skeleton.Bones.Count(), data.Nodes.Count());
@@ -1324,7 +1324,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& data, Options& option
for (int32 i = 0; i < meshesCount; i++)
{
const auto mesh = data.LODs[0].Meshes[i];
if (mesh->BlendIndices.IsEmpty() || mesh->BlendWeights.IsEmpty())
if ((mesh->BlendIndices.IsEmpty() || mesh->BlendWeights.IsEmpty()) && data.Skeleton.Bones.HasItems())
{
auto indices = Int4::Zero;
auto weights = Float4::UnitX;