# NOTES Workshop 2024
## Workshop Part 1:
Brainstorm/identify use cases, applications, and corresponding workflows.
Nathan made already a document with use cases, workflow and potential solutions.
This can be added later to the notes.
Sybren has an extra use case:
Using a walkcycle and creating an offset on a separate layer.
Rik mentioned that some of the proposed use cases by Nathan might be unrealistic, but that's for later.
First we try to figure out the wide view of what is possible with Layered actions, rather than narrowing down the actual use cases.
Another use case that Lucas brought up is the use of layers with a physics simulation. On top of the simulation being able to adjust keys with a new layer for example.
**the current categories:**
- Creating animation
- Adjusting animation
- Organizing animation
Physics feels like a seperate category on top of the notes from Nathan.
Other software examples have been brought up by Marianne:
Motionbuilder is a great example of the use of layered animation.
The NLA currently is terrible and is taking too much hassle to actually use it for layered animation.
Nathan suggests to keep that conversation for later.
Example from Pierrick:
With game animation you want to preview your blending between seperate motions. Unreal does this rather well.
I used NLA tracks for games for that purpose, its hard to get the same behaviour in blender as in Unreal.
I'm running fast and do a slash, i want to quickly preview it in Blender rather than see it in Unreal.
It would be great to preview mixing different actions like, slashing, running, rotating the torso.
Sybren made a seperate list of use cases on his
Nika: What if it could use Grease pencil and use layers as a nondistructive workflow to sculpt on top of your drawings.
Stacking it. Falk says its possible. It would be nice if we had a system that we could animate shapekeys.
Storing offsets of a restpose
What if layers could have constraints?
Animation level constraints as strips (sybren).
Sybren: the datamodel is there for the NLA, to make instancing strips more sensible.
Marianne: What can i get out of it out of blender? FBX export, are we able to export actions or can we export selection of layers?
Nathan, its not just an export feature, it can be tools being able to organize and automatically export separate layers by managing it with proper tools.
Organizing export is added to the category.
First design having able to group layers (Falk and nathan).
WHat should we focus on for the initial version of layers?
Having autokeying included in layers, which layers gets keys? (thought from Sybren)
Sybren: one thing to forgot to mention: Overrides, there is a desire of arbitrary overriding of anything.
The bigger question: you want to change something you cant change, could it be done with layers?
We put a pin in it, we will have non-keyable animation not be included for todays meeting. it will be stacked for later.
-----------------------
Nika: Simulations as readonly layer
Falk: **Procedural layers**, e.g. FCurve modifiers or node groups on a layer/strip
Nathan + Brad: NO ONE USES THE NLA
Brad: **Multi layered puppeteering recording.**
Marion: Puppeteering for grease pencil
Brad: possible tangent, pose retiming. Retime Layer? Brads example is destructive
Nathan: Could be a **retiming layer**
Sybren: Should be two features. Retime Layer explcitly. Second - add on layers. Layers types specified by an addon? Addon actually defines the behavior of the layer. -> But maybe should be a strip because those define the type.
Sybren: **IO Importing USD cache as a layer**
----
**General discussion if layers should have types**
Nika: Layers should have types because it will simplify things for UI/UX
Falk: Thinks we don't need layer types. Prefers general system that doesn't need to know the type.
Nathan: Layer types can benefit modifier strips. If a layer can only have a single type it's a lot simpler to define. You know what is below.
// Topic stacked
---
Discussion about file formats which can hold animation data
FBX glTF USD
Sybren: work group exists that tries to have all FBX features in glTF.
### Going into workflows
Which workflows do we aim for?
Start by looking at vague workflows already listed.
Nika: What features do layers need to do for each workflow?
e.g. toggleable
Nathan: Intermix exploring workflows with exploring features.
Quick roundtable of what people think layers are. How do you expect it from a user perspective
- Layers are Groups of keys
- **have a name**
- **can be toggled, muted and soloed**
- **can be blended, modes: override or multiply or add**
- are a modifier and storage of data
- non-destructive way of animating on top of other data
- Iterations, adressing notes, versions
- animating influence of a layer
- layering mocap motion details on top of existing anim
- high frequency filter
- group layers into hierarchies (e.g. face and body separate, but themselves contain a bunch of layers)
- data can be extracted and moved to other layers
- baking down data into an existing. Layers can be a tool for destructive editing
- Layers need colors
- Top layers override lower layers, order is important
- Layers can be dragged around to reorder
- Layer evaluation order independent from order (Brad), could be a separate view. Could make sense in game animation.
- Layers can be an input to a node system.
- Layers are not part of the existing animation UI (asterisk)
- Layers can be retimed
- **can be deleted**
- can be duplicated, merged and split
- have an association between animatable things and layers
- The color of a layer can be displayed in the viewport (e.g. bones get the layer color by which they are animated)
- in general are in control of time related data, not only fcurves.
- layers can emit events, e.g. for use in physics system
- layer can control time independent of scene time (or keep it in the sequencer)
- **layers can be locked**
- Base layer is always there (based on experience with animation bleeding) or has a rest pose for this animation.
- layers can be frozen in time, e.g. to disable root motion in a walk cycle
- layers can be active and selected
Putting checkboxes in front of things and starting to uncheck them.
Which workflow is going to be the main one for a MVP?
Sybren: we should have a specific task for this discussion. What is the goal, then what is the MVP for that task.
discussion about layers and modifiers
should a layer have modifiers or IS it a modifier
conclusion is that this is not important for the first MVP (not going to have modifiers anyway)
blend mode discussion
we need that for the MVP but not all modes.
should layers combine things on a per FCurve basis or e.g. do things like quaternions together
// stacked for after lunch
Can layers be associated with bones/objects/channels?
- Sybren: leave for later.
- Nathan: depends on what we mean. For determining where keys go is a separate feature in a sense.
- Decided to leave both out for the MVP.
Muting behavior:
- Nika: should have pause behavior.
- Christoph & Sybren: for adjustment layers you don't want pause behavior.
- Sybren: gotta have muting behavior at least.
- Nathan: let's leave off pause behavior for MVP even though it's useful.
- Ray: even with muting, what if it just left the channels alone, like muting fcurves.
- Marion: what does other software do?
Bottom "rest pose" layer:
- Christoph: users can always just key everything on the bottom layer to get the same effect. So maybe not for the MVP.
- Nathan: also, if it's not required, then we have to answer the question of what to do when it's not there anyway. And if it is required, that raises even more questions.
Sybren: Let's break into groups to discuss more specific topics.
- Where do keys go.
- How does blending work.
- UI... nevermind, that can be done later.
- Nika: could have zooming interface.
## Where do keys go?
See https://hackmd.io/@anim-rigging/SJkRgQSlkl
## How does blending work?
- What do the blend modes mean?
- Replace:
- Like alpha over.
- "Combine" (or whatever we call it) (How to do multi-value blending (transforms, colours, other stuff))
- Add for most channels.
- Multiply for scale.
- Apply rotation for quternion.
- Mathematical add/sub/mul/div are just confusing, and probably not useful for the large majority of people.
- Let's leave other blend modes for the future, based on people having actual use cases.
- Brad & Ray: never seen people use other blend modes than replace and combine, even in other software.
- What happens when there is no underlying layer?
- Rik: Is it even blendable?
- Brad: just blend to the "zero" value. We have rest poses for armatures, and delta values for objects.
- Nathan: gut feeling is there is no good behavior here. So instead let's do the simple thing that's predictable. So agree with Brad.
- Rik: if it blends at all, I'd expect it to blend to the values at that frame. But maybe just not blend at all, and give full influence.
- Nathan: both behaviours are stupid (blend to zero vs don't blend), but blend to zero is less "discontinuous".
- Brad: both stupid except if you have set up specific rest pose / delta transform to be useful, in which case blend to zero is better.
- What happens when you mute?
- Behaves as if you has removed the layer entirely.
- Matches behavior of disabling a channel.
- Specifically different from setting influence to zero (which blends to zero).
- The use cases are different: influence is for defining the animation, muting is for temporarily disabling a component of the animation.
- Maybe "disable" is a better term than "mute".
- Editing keys on middle layers
- Determine the values to key by inverting the effects of the other layers so that the final evaluated animation gives the same pose in the viewport.
- Rik: like crazy space in mesh edit mode. It's what you want almost all the time. But also it should be optional.
- Nathan: to get the non-crazy-space behavior, you mute the other layers (or solo the one you're working on).
- What about non-invertable situations:
- Brad: do what I would do anyway, and just create a new layer on top and key it there. Or just keys the values on the layer anyway, despite non-invertibility.
- Nathan: I would prefer to fail keying the properties that can't be keyed, and show the user an error/warning.
- Brad: this is probably something we need to figure out with experience of what feels/works best in practice. So let's start with the fail and warn approach for now, and then experiment with other things.
- Brad: it can be useful to key specific values, regardless of layer influence.
- Nathan: different keying mode, perhaps, that doesn't do the crazy space.
- We could also have the properties (e.g. in properties panel, n-panel) show the values for the current layer, including the values that would be keyed for the current pose.
- Brad: btw, being able to bake to a replace vs combine layer is useful.
- Brad: what about overdriving the influence (great than 1, less than 0).
## The groups join again
Nathan presented (How does blending work), no objections to their plan.
Sybren presented.
Rik question: confused by "layer already animating". has to uncheck the available checkbox for adding keys to a layer that doesn't yet have that bone.
"Available checkbox" should not be a user preference. Probably needs to be toggled a lot.
Nika: Some user preferences can be exposed in the UI directly.
Nathan: does it matter if the checkbox is a global thing vs per action thing.
Artists prefer either per scene property or preference. Don't want to think about it all the time.
Rik: the one setting with which I roll all my life.
Nathan is happy with checkbox, smart.
Appending or linking a layer. Would that be a new layer
Can only link the action, not a layer.
Have to link the action, then use the futuristic action reference layer
Rik: question regarding locked layers? active layer is locked?
A: not possible to key -> error
Rik: hypothetical question
Selecting bones, how do I know in which layers they exist.
A: dot in layers that have the selected things as an indicator
Nathan: would be handy to see all layers in dope sheet, graph editor
A: that is a visibility toggle
Brad: would be nice to have stacked view in graph editor to see things above each other in context.
Nika: lib overrides with layered actions. Would be best to be able to create a new layer on the lib override.
Sybren: agrees