From 1b2a0e98d3d5b17418dea17b8645e9d1a3979fd0 Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Sun, 23 Nov 2025 18:13:58 +0100 Subject: [PATCH] Added design ramblings. --- doc/design.md | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 doc/design.md diff --git a/doc/design.md b/doc/design.md new file mode 100644 index 0000000..679d2de --- /dev/null +++ b/doc/design.md @@ -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?