I’m not sure if anyone is still having issues with this, but I thought I would share what worked for me since the UE documentation was a bit confusing for me on this step.
In the character header file, I used:
UPROPERTY(VisibleAnywhere)
class UMotionControllerComponent* LVRController;
UPROPERTY(VisibleAnywhere)
class UMotionControllerComponent* RVRController;
And in the .cpp file, I used:
LVRController = CreateDefaultSubobject<UMotionControllerComponent>(TEXT("Left VR Controller"));
LVRController->SetupAttachment(VRRoot);
LVRController->MotionSource = TEXT("Left");
RVRController = CreateDefaultSubobject<UMotionControllerComponent>(TEXT("Right VR Controller"));
RVRController->SetupAttachment(VRRoot);
RVRController->MotionSource = TEXT("Right");
Then in BeginPlay, make sure to include:
LVRController->bDisplayDeviceModel = true;
RVRController->bDisplayDeviceModel = true;
The controllers just showed up as soon as I turned them on and moved around perfectly.
If you still can’t see it, then start the game, go to the editor, find the player’s character, go to the missing motion controller’s component, and make sure “Display Device Model” under “Visualization” is checked.
I hope this helps!