Integrating with Montage

If you are using a Montage and want to add a camera accompanying this Montage animation clip, the best practice is to create a new AnimNotifyState and expose several variables that can be called for each instance.

  1. Right click on Content Browser -> select "Blueprint Class" -> Search for "AnimNotifyState" -> click "Select".

  2. On the "Variables" section, add variables. For example, here I add a ClassClass, a CameraLocation, a CameraRotation, a BlendIn and a BlendOut variable.

  3. Implement the Received_NotifyBegin function, which is called when this Montage has triggered the notify. The most important thing you should do is to specify the CallCamera node and pass in (optional) the follow target and aim target. These parameter values specifically conform to the case in which you call this camera. Below is an exemplary implementation. You can have your own implementation.

  4. Like Received_NotifyBegin, implement the Received_NotifyEnd function, which is called when this Montage has completed the notify. Sometimes you should add a temporary actor variable to record the original view target. When Montage finishes, the view target can be able to restore from the Montage camera.

  5. Back to the Montage where you intend to call camera. On the timeline create a new Notify track and add a new notify state of the type you just created. Place it anywhere you want to enable this camera.

  6. Click the notify state and set its variables on the Details panel.

You should be very careful about the interruptability of the Montage you are using. If this Montage can be interrupted by other Montages or character actions, you should not call camera through notify because when Montage gets interrupted the Received_NotifyEnd function will never have a chance to be called. Then the Montage camera will never end (unless you specify a life time). A feasible workaround to call cameras for interruptable Montages is to use the PlayMontage node (or the PlayMontageAndWaitForEvent node if you are using GAS) and implement the OnInterrupted pin.

Last updated