Existing cameras have their filmback modified when DefaultFilmbackPreset is changed in DefaultEngine.ini

We ran into an issue on our show where our default filmback was requested to be changed in the middle of production. We edited the projects’ DefaultEngine.ini to include the updated DefaultFilmbackPreset parameter name, however when the artists reopen their project, all of their existing spawned cameras switched to the new default, instead of the filmback that was set previously. Should an existing camera not point to the filmback that is set, rather than what’s considered ‘default’? If a camera’s filmback was changed before we edited the DefaultEngine config, then it sticks. We assumed this new default would only affect newly made cameras.

We also noticed that if you switch the default filmback in the Project Settings while it is open, it doesn’t effect any of the already existing shots, but if you change it in the .ini file then it hijacks all the camera filmback settings of cameras left at default.

Wondering if this is intentional behavior, or a bug!

Repro steps:

  1. Create a project with two or more filmbacks to choose from.
  2. Spawn a camera and save out the level.
  3. Close the project.
  4. In the DefaultEngine.ini config, adjust DefaultFilmbackPreset to use the second filmback.
  5. Reopen the project.
  6. Open your level with the camera and you’ll notice the filmback is now using the new default, instead of it’s original value.

Hey there,

Yeah this is the default behavior of most properties in Unreal. If you create an object but do not modify a property, it can be modified by default values changes from ini’s because that object’s property setting is not serialized.

We also noticed that if you switch the default filmback in the Project Settings while it is open, it doesn’t effect any of the already existing shots, but if you change it in the .ini file then it hijacks all the camera filmback settings of cameras left at default.

This response is curious to me. Depending on what you mean, I wouldn’t expect an ini change to modify anything while the editor is open. These changes on happen on engine load.

There are few things you can do to mitigate the issue though.

  • You can key the value of your filmback setting parameters in your sequence file. This will turn it to “Custom” on engine reload if the default changes. You’ll know, conventionally, that it is the same as your previous default.
  • You can look into modify, UCineCameraComponent::SetFilmbackPresetByNameInternal, with a new scheme if you like.
  • If you’re using presets to define your film backs and they are standard, you could run through each of your level sequences with a Python script and change any of the film backs with the new settings to the old setting.

"We also noticed that if you switch the default filmback in the Project Settings while it is open, it doesn’t effect any of the already existing shots, but if you change it in the .ini file then it hijacks all the camera filmback settings of cameras left at default.

This response is curious to me. Depending on what you mean, I wouldn’t expect an ini change to modify anything while the editor is open. These changes on happen on engine load."

To clarify on this… if I change the .ini file and load the engine, all cameras using default filmback settings changed to the new default filmback choice. When I set everything back to it’s original state and opened the project and made the default filmback change in the Project Preferences settings, it did not effect any existing cameras but only effecting cameras created after that point (which is the behavior I was looking for.) Are you saying that if I left it that way, closed Unreal and relaunched, that those previously made cameras would switch to the new default filmback settings?

When I set everything back to it’s original state and opened the project and made the default filmback change in the Project Preferences settings, it did not effect any existing cameras but only effecting cameras created after that point (which is the behavior I was looking for.)

If I understand this statement correctly, the answer is slightly different. If you’ve made an edit to a property even after the default has changed, the edit becomes serialized. Then from there, it doesn’t matter what you do with the ini change. The primary thing here is that if a filmback has been modified and saved within the component, if you change the default in an ini, it will not change.

Right, I just ran a test and if you change the default settings when the engine is already open the camera film backs don’t seem to change. But if you close and reopen, they all change to the new default film back setting. Thank you for your response.