diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/ActorGroupBehavior.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/ActorGroupBehavior.cpp index a58c48f1ef..34cb6a36eb 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/ActorGroupBehavior.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/ActorGroupBehavior.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -172,10 +173,13 @@ namespace EMotionFX AZ::SceneAPI::Events::ProcessingResult ActorGroupBehavior::BuildDefault(AZ::SceneAPI::Containers::Scene& scene) const { - const bool hasBoneOrSkinData = AZ::SceneAPI::Utilities::DoesSceneGraphContainDataLike(scene, true) || - AZ::SceneAPI::Utilities::DoesSceneGraphContainDataLike(scene, true); - const bool hasAnimationData = AZ::SceneAPI::Utilities::DoesSceneGraphContainDataLike(scene, true); - if (SceneHasActorGroup(scene) || !hasBoneOrSkinData || hasAnimationData) + const bool hasBoneData = AZ::SceneAPI::Utilities::DoesSceneGraphContainDataLike(scene, true); + const bool hasSkinData = AZ::SceneAPI::Utilities::DoesSceneGraphContainDataLike(scene, true); + const bool hasBlendShapeData = AZ::SceneAPI::Utilities::DoesSceneGraphContainDataLike(scene, true); + // Skip building the default actor in case a valid actor group with overwritten settings exists, or + // in the most common case for animation files, that do contain an animated skeleton while not containing a skin or blend shapes. + if (SceneHasActorGroup(scene) || + (hasBoneData && (!hasSkinData && !hasBlendShapeData))) { return AZ::SceneAPI::Events::ProcessingResult::Ignored; }