Added design ramblings.

This commit is contained in:
Martin Felis 2025-11-23 18:13:58 +01:00
parent 6f8a580e26
commit 1b2a0e98d3

73
doc/design.md Normal file
View File

@ -0,0 +1,73 @@
## Graph
### 1. Generalized data connections / Support of math nodes (or non-AnimNodes in general)
Use case:
* Enables animators to add custom math for blend inputs or to adjust other inputs (e.g. LookAt or IK
targets).
Effects on the graph topology?
* Need to generalize Output Sockets to different types instead of only "Animation Data".
* How to evaluate? Two types of subgraphs:
a) Instant inputs (needed for blend node inputs) that have to be evaluated before
UpdateConnections. Maybe restrict to data that is not animation data dependent?
b) Processing nodes, e.g. for extracted bones.
### 2. Support of multiple output sockets
Use case:
* E.g. extract Bone transform and use in pose modifying nodes.
* Chain IK.
Effects on graph topology?
* Increases Node complexity:
* AnimOutput
* AnimOutput + Data
* Data
(Data = bool, float, vec3, quat or ...)
**Open Issues**
1. Unclear when this is actually needed. Using more specific nodes that perform the desired logic
may be better (
c.f. https://dev.epicgames.com/documentation/en-us/unreal-engine/animation-blueprint-bone-driven-controller-in-unreal-engine).
Likely this is not crucial so should be avoided for now.
### 3. Multi-skeleton evaluation
Use case: riding on a horse, interaction between two characters.
### 4. Output re-use
Description:
Output of a single node may be used as input of two or more other nodes.
Use case:
* (Related to 1.) an input that does some computation gets reused in two separate subtrees.
### 5. Inputs into Subgraphs
Description:
An embedded blend tree can receive inputs of the surrounding blend tree. Inputs are animations or - depending on 1. - also general input values.
Use case:
* Reuse of some blend logic or to move logic of a part of a blend tree into its own node.
Effects on graph topology:
* Great flexibility and possibly reusability.
* Improves logical block building.
* Probably only of bigger use with 1.
Open issues:
* Inputs to embedded state machines?