selecting in code This is how the code reasons about the creature. The code needs to deal with the variable results. This is hard. Code performs a context query, can return 0, 1, or many bodies.
moving Move bone #57 to (3.14, 2.72, 1.62). How do you punch something?
moving How do you punch something? Again, we require semantics, describe the intent. this is the frame of the movement. Move fist to the target, please.
moving - madlibs move grasper to same creatures mouth. move grasper to other creatures grasper. move mouth to external target. move slasher to position relative to ground. move slasher to absolute position.
moving - scaling Is a given movement big because the creature is big? the movement is inherently big? the target is far away? The animator needs to tell the system. (demo)
moving - frame This description of the movement specifies the frame in which it is recorded. Even for multiple bodies on the same creature.
moving - space Generalized recorded in the frame of the movement mode. all keys are in generalized space. Specialized projected onto a single body on a creature. multiple projections for multiple bodies.
the spore animation runtime loop for each creature, for each animation tick to time – interpolates generalized splines for each channel evaluate context query for each body specialize onto body compute gait and wiggles dump all goals into ik solver
gaits The game drives around an oriented particle. The gait system tries to keep up.
gaits cluster legs based on length move foot goals using parameters step height & length trigger & duty factor lots of other parameters toe curl, ankle angle hip rotation and translation (demo)
wiggles We want secondary animation tail bobbing, arm swaying, without manual keying.
wiggles Find wiggleable bodies that havent been selected. Add secondary with damped spring mass system. (demo)
the constant question: How well does an animation generalize across lots of creatures?
branching split up creature-space has feet has graspers upright spine
ik solver Decouple procedural systems from needing to think about creature topology. Just set goals on bodies.
ik solver Want it to be fast. accurate in workspace. fail gracefully if missing goal. decide not to hit goals for quality. path independent.
ik solver history 0.0 – linked rigid bodies, constraints, controllers slow, inaccurate, unstable, not posable 1.0 – multibranch 6DOF CCD complex, slow, more accurate, not tunable 2.0 – particle IK – control freak fast, accurate, more tunable, twitchy, fails poorly 2.5 – particle IK – laid back fast, accurate, tunable, smooth, fails better
useful takeaways? target relative curves ik solver experience semantics are valuable custom tool was worth it