Should allow a Scene to contain separate Animation for objects

Here are two topics in Blender Stackexchange where I’m considering if there are ways to include different animations in different Scenes, other than some workarounds with NLA and Scene timeline tricks.

For example, I’d like my “Walkthrough Camera” scene to have a door swing open as the camera approaches, but stay closed in another scene, that will instead vary the Sun and lights as the day unfolds. Another example would be a character that has a scene.walks and a scene.runs.

I should be able to assign different Actions, different Keying Sets and different animation keys to Scenes.

That Keying Sets are part of the Scene tab, yet do not relate to a Scene, is in itself confusing.

.

I tried exactly this the other day, hoping to come up with a way to create one entire sequence (shared objects, rigs, etc) in a single blend file, separating shots into scenes. Once you’ve got objects linked into all scenes though, there’s no way to override animation on a per-scene basis. I’m not sure what the workflow for this should be.

1 Like

Suggestion on workflow solutions that would not break compatibility.

In the Object menu either under Relations or Animation, add an item that would make object animation “Edit by Scene”, clear and make future animations owned by this scene.

An alternative or in addition, might be to have the Action Editor have a button that makes an Action “scene overlay”.

In 3ds Max for example, it is possible to split the actions into a Base and Per Scene (add or override), as shown in this cap from the 3ds Graph Editor (note that there are repeating Scene names that is some bug.

This would be a hierarchy of Base animation plus a per-scene animation (Override or Addition options). It is a parallel perhaps to the Animation Layers add-on.

I also think that Keying Sets should have a flag or checkbox that says whether this is universal to all Scenes or owned by this Scene.

1 Like

In my next posting below, I show that in 3ds Max, it is possible to split the actions into a Base and Per Scene (add or override).

Showing captures from commercial software is highly discouraged here (as legal caution). You should instead describe how this would work in Blender, without resorting to explaining how things work in other software.

(I am just paraphrasing what developers usually say when this comes up, it’s not my rule, not my words)

If you want to have different animation per scene, why not simply have different cameras?

A different camera won’t be useful in such a case.
The goal here is to keep everything the same, including the camera except for chosen objects.
Everything of these chosen objects should be the same in all scenes except for the animation.

Having per scene overrides for animations would be very useful imo. Or actually scene overrides in general.

My current workaround for this kind of thing is:

  • make linked copy of scene
  • “duplicate linked” the collection/s the relevant objects are in
  • unlink the original collection/s from this new scene
  • replace the actions of the objects in question

This does work but it is not very flexible. If you add some new object to the original collection you have to link the object to every duplicated collection as well.
This gets confusing really fast if you have several scenes with duplicated collections

1 Like

Ok. How would it be to have a single file with all the content of the scene in a collection? Then you could have a 2nd file that links that collection (multiple times even, across multiple scenes); that setup would allow you to have library overrides, and indeed have different overrides in different instances of the scene.

3 Likes

That’s a good idea. That’s basically what we do in Maya, I mean what we did before the advent of software like Katana, Gaffer and so on : one “set” file containing all environment and lighting data, and separate animation shot files that reference (=link) that set file. It does work. However, it feels like a missed opportunity to have this “scene” concept in Blender and not being able to use it for animation. All the rest works indeed : you can link objects and collections between scenes, override object transforms in each one, etc. and that’s useful for stills rendering -but not much for animation. I understand action datablocks are fundamentally tied to objects, and library overrides don’t apply there… but maybe it’s something to keep in mind for when deeper changes to the animation system are eventually made. It would be pretty close to a “take” system.

Yes, I do that sometimes and it works fine. I think overriding actions has been added in 3.0, right?
Sometimes it is more convenient to not use linked files, though, and here, scene overrides would be very welcome.

I have to admit, that I sometimes hesitate to use library overrides because I am unsure on how it impacts performance. Sorry if this is a bit off topic but if i override a linked collection doesn’t every object inside count as a single object again?

Would not a different camera simply give me a differing view on the same animations because I still cannot change the animation of Object.001 from scene to scene?

It is the clutter of files that I am trying to avoid. I have a character that I would like to “store” 40 separate animations. Why do I need to have 40 files to accomplish this?

Nah, you can link your character and then override the animation 40 times.

  • Make your character and create all your actions.
  • put Character in a collection and call it ColChar
  • Call Actions “Walk, Run, Grab, Duck…”
  • Save File
  • Make new file
  • Link ColChar
  • Link “Walk, Run, Grab, Duck”
  • Create Linked Duplicate of your scene
  • In scene 1 make a library override of ColChar
  • In Action Editor put “Walk” on character
  • Switch to scene 2
  • library override ColChar
  • In Action Editor put “Run” on character
  • and so on
1 Like

Thanks for the tip !

What I am uncertain of is performance.
Is a file or scene with 40 overriden characters similar to a scene/file with a single character or similar to a scene/file with 40 characters.

Does anybody know how to find out performance impacts of library overrides.

Well I guess we’ll have to try it. Otherwise @mont29 would have an idea, I suppose ?

1 Like

Alternatively, you could make a little add-on that has a panel somewhere, with a selector to select the “shots” you need. It could then loop over all objects and change Actions to whatever they need to be for that shot. The same add-on could loop over all objects, see which Actions are used by them, and record that as a new “shot” to add to the selector.

Sometimes, when you want to reduce clutter & repetitious work, a bit of scripting can go a long way.

1 Like

Besides potentially when opening (in in some extremely complex scene case, when saving) blend files, performances of liboverrides should be similar to those you would get with local data.

Technically, liboverrides are local data from the point of view of most of Blender.

3 Likes

Miss Daisey is driving me crazy! I finally got time to try this. This didn’t work for me, v3.0.0.:
“In scene 1 make a library override of ColChar”, also duplicated the override in the “Linked Copy” (there is no Linked Duplicate, only Linked Copy and Copy Settings, btw). So the char is then still tightly linked and so the Lib Override also appears in Scene.002 outliner. and so applying “Walk” in scene.001 also applies Walk in Scene.002, then applying Run in Scene.002 applies the same to scene.001.

I found my solution and share it here:

  • Link character from the definition file to your new action-scenes file, do not do a Library Override
  • Create a Parent Common collection for any other shared objects
  • Scenes: duplicate Linked Copy for N action scenes (Scene.Walk, Scene.Run, …)
  • In each Scene, create a new collection (will be independent to that scene, (like “Walk”, “Run”,…); this will not be available in the other scenes.
  • On character collection in Outliner, right-click: “Instance to scene” and move to the new character parent collection (“Walk”, “Run”,…)
  • for the scene instanced character, Object :: Apply :: Make Instances Real (meshes are still linked, saving space)
  • disable, hide, no render the original Linked char, in each scene
  • create all other common scene objects (with possible common animations)

This uses very little file space, and still has links to inherit all mesh or other changes in the linked character file.

2 Likes