Sequencer doesn't show all control rigs sections within control rig track

Hi
I have the hierarchy thumb1->thumb2->thumb3 Everything is working good from controls perspective. But when I move the Control rig to the Viewport and the Control Rig is opened within the Sequencer in Animation Mode, there is no thumb2 section. What could be wrong?

Perhaps you have the filter that only shows selected controls and have not selected thumb2, you accidentaly changed the thumb2 animation type to animation channel or any other thing that could go wrong. You should probably add more details and screenshots so folks can help you better.

I hoped it might be just some configuration issue like visibility which could be missed. So far, I’ve figured out that if I change the name of that Control Rig, it appears in the Sequencer. Have a look at the screenshot below. Control thumbT3_dynamic_l_ctrl . When I renamed it back to thumb3_dynamic_l_ctrl, it disapperas.

What else I noticed. At first I had same issue with both thumb2 and thumb3. I recreated controls for both of them and it helped to fix that issue for thumb2, but not thumb3.

I tend to think there is a issue with my blueprint code(General BP, Animation BP, Control Rig BP). Probably need to debug my BP again…

After a few hours of debug of C++ code I’ve managed to resolve that issue. But it is still hard for me to explain the concept of what I’ve found out. If I didn’t have programming skills, I wouldn’t resolve that issue I believe.
There is peace of C++ code which is running when Level Sequence is created and populated with Tracks and Sections. The idea is that every control has stored previous name. If previous name of a Control matches with the name of another Control, then the name of another Control will be replaced with the previous name of the first Control. Another Control will be recognized as already is in the list and ignored.

I just deleted and created again the control, whoes previous name matches with another Control.

The C++ code where it mostly happens is below. Method RenameParameterName will compare previous name.

void UMovieSceneControlRigParameterSection::RecreateWithThisControlRig(UControlRig* InControlRig, bool bSetDefault)
{
	...

	for (FRigControlElement* ControlElement : SortedControls)
	{
		...

		FName PreviousName = ControlRig->GetHierarchy()->GetPreviousName(ControlElement->GetKey());
		if (PreviousName != NAME_None && PreviousName != ControlElement->GetKey().Name)
		{
			RenameParameterName(PreviousName, ControlElement->GetKey().Name);
		}

		if (const FName* OldCurveControlName = CurveControlNameRemapping.Find(ControlElement->GetName()))
		{
			RenameParameterName(*OldCurveControlName, ControlElement->GetKey().Name);
		}
		
		switch (ControlElement->Settings.ControlType)
		{
		...
		case ERigControlType::Transform:
		{
			...
			AddTransformParameter(ControlElement->GetName(), DefaultValue, false);
			break;
		}

		default:
			break;
		}
	}
	ReconstructChannelProxy();
}

wow good on you to report back here and explain how you solved it! I’m sure people from the future will appreciate it if they catch the same issue. How did it lead up to this anyway? You made that code yourself right?

I did Control Rig, BP, Animation on my own. But C++ which I debugged is Unreal’s Out of the box. Actually, this little issue consumed a lot of time :grinning: The debugging was last stage for me, because I was out of ideas what else could be wrong…

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.