Hi, sorry for the delay getting back to you on this. Our offices have been closed for the last couple of weeks so we’re in the process of catching up now.
Thanks for reporting this issue. We found it recently and have implemented a fix that’ll go into the 5.8.2 hotfix release. If you’re able to integrate source changes, the modification was to FControlRigParameterTrackEditor::AddControlRigFromComponent so that the function changes from:
void FControlRigParameterTrackEditor::AddControlRigFromComponent(FGuid InGuid)
{
const TSharedPtr<ISequencer> Sequencer = GetSequencer();
UObject* BoundObject = Sequencer ? Sequencer->FindSpawnedObjectOrTemplate(InGuid) : nullptr;
if (AActor* BoundActor = Cast<AActor>(BoundObject))
{
TArray<UControlRigComponent*> ControlRigComponents;
BoundActor->GetComponents(ControlRigComponents);
for (UControlRigComponent* ControlRigComponent : ControlRigComponents)
{
if (UControlRig* CR = ControlRigComponent->GetControlRig())
{
AddControlRig(CR->GetClass(), BoundActor, InGuid, CR);
}
}
}
}
to:
void FControlRigParameterTrackEditor::AddControlRigFromComponent(FGuid InGuid)
{
const TSharedPtr<ISequencer> Sequencer = GetSequencer();
UObject* BoundObject = Sequencer ? Sequencer->FindSpawnedObjectOrTemplate(InGuid) : nullptr;
if (AActor* BoundActor = Cast<AActor>(BoundObject))
{
TArray<UControlRigComponent*> ControlRigComponents;
BoundActor->GetComponents(ControlRigComponents);
for (UControlRigComponent* ControlRigComponent : ControlRigComponents)
{
if (UControlRig* CR = ControlRigComponent->GetControlRig())
{
AddControlRig(CR->GetAssetReference(), BoundActor, InGuid, CR);
}
}
}
}
This passes the new control rig asset reference, which is populated after upgrading to 5.8, to the sequencer track rather than the class, since the class no longer contains any information about the specific rig following the refactor.
For the second issue that you mentioned, it’s by design that the properties within the control rig asset reference structs aren’t exposed to blueprint so you don’t have to worry about whether you’re using a new asset or a legacy one. Instead, you should be able to create a variable of that type on your blueprint, which you should be able to populate with rigs that were created either before or after the refactor.
[Image Removed]If that doesn’t give you what you need, let me know.
In terms of the reason for the refactor, it was around performance. We regularly see teams running into issues with performance of control rig, particularly the initialization overhead, so there has been a focus recently on making improvements. This was part of that work - removing the overhead associated with blueprint-based assets.
[Attachment Removed]