Hello,
We’ve been struggling to get the CineCameraAttachMount working with Replaceable bindings in sequencer with Take Recorder. Selecting one of the actors with a Replaceable binding, the mount moves correctly until either the cursor is moved before the start of the play range or we start a recording session with Take recorder, then the constraint stops working and the Target Actor reference has a warning that it is no longer valid.
Doing my own investigation, the CineCameraAttachMount works fine if using Possessable bindings, but as soon as it is changed to spawnable/replaceable then it stops working. The assumption is that the Spawn system used creates a new actor which breaks the reference to it.
Is this a known issue, and is there a work around? We have to use replaceable bindings as the actors for the sequence will be created at runtime and the cinematics team need to preview them in order capture the scenes.
Thanks
Hi Jiten,
Sorry about the delay. I’m looking into this now and should get back to you soon.
Best regards,
Vitor
Hi Jiten,
I was able to reproduce the behavior you described. After investigating the source code, I came to the conclusion that actor ACineCameraAttachMount does not currently support having its “Target Actor” assigned to a Spawnable or Replaceable from Sequencer. This is because it creates an internal constraint that is always static and does not include Sequencer BindingID information.
The good news is that you can manually create constraints of the same type used by ACineCameraAttachMount, and these should be correctly integrated with sequencer bindings. First, make sure that “Target Actor” is cleared on the Details Panel of the ACineCameraAttachMount in your scene. Then, perform the following steps:
- Open the Level Sequence that contains your CineCameraAttachMount and the Replaceable intended to be its “Target Actor”.
- Switch the Editor from the default “Selection Mode” to the “Animation Mode” by pressing Shift+8 or choosing it from the mode selector dropdown in the toolbar.
- Select your CineCameraAttachMount.
- In the “Animation” tab, on the “Constraints” section down below, click the “Add Constraint” (+) icon. Select the “Parent” constraint type. Then, in the viewport, pick the desired actor with Replaceable binding.
If you do step 4 above while your Level Sequence is open and your CineCameraAttachMount is selected, this should correctly create a constraint that keeps CineCameraAttachMount positioned as if it were a child attached to the actor bound to the selected Replaceable binding. The constraint will be visible on the “Animation” tab if you need to delete it later.
Please let me know if this workaround helps you achieve your desired behavior. Meanwhile, I have also filed an internal bug report about ACineCameraAttachMount’s lack of compatibility with sequencer Spawnables and Replaceables. Here’s the bug tracker link for it: UE-312651. It should become available once the engine devs mark it as public.
Best regards,
Vitor
Hi Victor,
Thank you for your reply and the work around. I have just tested it and it does work, the ACineCameraAttachMount moves with the actor in the sequence.
We have run into another issue though, which is after using the VCam UI to attach it to the camera mount. Initially it works fine but as soon as we start recording a take it loses the attachment it had on the ACineCameraAttachMount actor.
I have tried the same work around on the VCam by adding an animation parent constraint, but this obviously causes the VCam to get added to the sequence and that is not what we want. Also it causes the original constraint on the ACineCameraAttachMount to break for some reason.
Do you have any solutions to get the VCam attachment working?
Hi Jiten,
I am trying to repro this other issue, but so far without success. In my tests, the VCamActor attachment to the parent selected in the listbox on the upper right corner of the viewport does not seem to break when I start recording a take.
Note that attaching the VCam through its on-viewport GUI simply creates a regular actor-actor attachment, the same that you can obtain by dragging the VCamActor over another parent actor in the Outliner. Also note that, if you create a new parent constraint through the Animation tab while no Sequencer is open, the resulting constraint will be a static one, so the VCam does not need to get added to a sequence.
If the notes above aren’t helpful and you are still struggling with this issue, could you please provide, in as much detail as possible, the steps to repro the problem from a blank project?
Hi Victor,
Sorry for the late response. I’ve been using the drop down on the VCamActor UI to parent the VCamActor to the camera mount. Doing it this way does cause the VCamActor to detach when we start recording. I’ve tested it again, changing the order of operations between attaching the VCamActor to the ACineCameraAttachMount, and setting up the parent constraint on the ACineCameraAttachMount to the moving actor but for us the VCamActor gets left behind.
Using the method of creating the constraint between the ACineCameraAttachMount and the VCamActor before opening sequencer does work, but it stops us from being able to use a game controller to preposition the camera, we can shift the transforms on the ACineCameaAttachMount and that does roughly want we need.
Hmmm ok. Since I can’t seem to repro here, let’s try to find out what is causing the detachment. Can you please run inside a debugger and, right before starting recording, place a breakpoint on file [Engine\Source\Runtime\Engine\Private\Components\SceneComponent.cpp], line 2364, at the start of function USceneComponent::DetachFromComponent()? The detachment operation should go through there, so when execution breaks, please copy the call stack and paste it here so that I can take a look.
Note that, if you are running the engine from the launcher, you will have to make sure that “debug symbols” are installed on the installation options. Also, if you don’t have C++ in your project, you will need to create an empty C++ class so that a C++ project/solution is created.
Thanks Victor for all the help. I have tried testing this using unreal 5.5.4 with the launcher and it works like you described.
This narrows it down to a probable change that is in our codebase.
No problem, I’m glad you are being able to track down the problem. Feel free to continue this topic or open a new one if you need further assistance down the road.
Best regards,
Vitor