Blendorphin: Blender Endorphin compatibility
π BEP-XXXX: Physics-Driven Procedural Character Animation (Blendorphin)
| BEP | XXXX |
|---|---|
| Title | Physics-Driven Procedural Character Animation in Blender |
| Author(s) | Cooper |
| Status | Draft |
| Date | 2025-06-25 |
| Blender Version | 4.x+ |
| Target | Animation, Physics, Simulation Nodes |
π§ Abstract
This proposal introduces a native, physics-driven procedural animation system for rigged characters in Blender. Inspired by legacy tools such as NaturalMotion Endorphin and modern equivalents like Euphoria , this system allows characters to dynamically respond to physical forces, collisions, and scripted behaviors in real time.
The goal is to enable realistic ragdoll behaviors, stunts, physical falls, impacts, and recovery motions β all without manual keyframing β while remaining fully integrated with Blender's animation pipeline.
π₯ Motivation
Blender currently lacks native tools for procedural character dynamics beyond passive ragdoll simulations. Other 3D tools either rely on outdated software (e.g., Endorphin) or expensive proprietary middleware (e.g., Euphoria used by Rockstar Games).
Animators frequently rely on inefficient workflows:
- Export rigs to game engines like Unity/Unreal just to simulate ragdoll or physics-driven reactions
- Hack together rigid body simulations with constraints that donβt map cleanly to character rigs
- Manually keyframe stunts, impacts, and recoveries, wasting time for effects that physics could compute
π₯ This BEP seeks to:
- Enable Blender to handle procedural, dynamic animation for rigged characters
- Reduce dependence on third-party tools for physics-based motion
- Allow artists to simulate collapses, stumbles, hits, explosions, weight shifts, balances, and recoveries natively in Blender
ποΈ Proposal
βοΈ Key Features:
- Physics-Driven Animation System for Rigs
- Fully integrated with the Blender timeline, allowing playback, tweaking, and baking to keyframes
- Behavior-driven control: switch between states like stand, stumble, fall, recover, brace, flop
- Direct user control over bone mass, joint types (hinge, ball-socket, swing-twist, etc.), stiffness, and damping
- Ability to apply forces (impulses, torque, explosions) to trigger physical reactions in real time
- Bake simulated motion into Blenderβs native animation data
π― Functional Specification
βοΈ UI Layout
- Sidebar Panel: Physics β Procedural Character Dynamics
-
Tabs:
- Rig Setup: Define physics bodies per bone (mass, collision shape)
- Joint Constraints: Configure joint limits (hinge, ball, swing, twist)
- Behavior FSM: Create states like Stand, Brace, Collapse, Recover
- Force Controller: Apply impulses, explosions, wind, torque
- Bake Panel: Convert simulation into animation keyframes
βοΈ Technical Design Overview
[Armature]
β
[Rig Parser β Bones become rigid bodies]
β
[Joint Solver β Handles constraints between bones]
β
[Behavior FSM β Controls constraint strengths over time]
β
[Physics Loop β Apply gravity, forces, collisions]
β
[Bone Transforms β Update per frame]
β
[Bake to Keyframes β Save motion as animation]
βοΈ Core Components
| Component | Description |
|---|---|
| Rig Physics Parser | Converts armature bones to rigid bodies |
| Constraint Solver | Manages joint constraints (hinge, cone twist, etc.) |
| Behavior FSM | State machine that modulates constraint strength, muscle stiffness, or ragdoll activation |
| Force System | Lets users apply dynamic forces like impacts, wind, or torque |
| Animation Baker | Converts physics-driven motion into traditional animation keyframes |
π§ Technical Considerations
βοΈ Solver Options:
- Use Bullet Physics (already integrated in Blender) for initial rigid body and constraint solving
- Longer-term: integrate with Simulation Nodes for node-based physics control
βοΈ Bone β Rigid Body Mapping:
- Automatic or manual mapping from armature bones to rigid bodies
- Support for capsule, box, or convex hull colliders per bone
βοΈ PD Controllers for Muscles:
- Implement muscle behavior via position-based controllers:
F = kp * (target_pos - current_pos) + kd * (target_vel - current_vel)
β Allows for stabilization, partial ragdoll, and recoverable behaviors
π§ User Workflow Example:
- Select rig β Enable Procedural Physics
- Define bone masses and colliders
- Set joint constraints (e.g., shoulder is ball-socket with 45-degree limits)
-
Add behavior states:
- Stand β stiff joints
- Fall β loosened joints
- Recover β stiffness ramps back up
- Apply forces (like a slap or explosion)
- Hit Simulate β Blender runs the physics-driven animation in real-time
- Hit Bake β Generates keyframes on the timeline
π₯ Why This Is Not Just Another Ragdoll
β Not just falling. Itβs
controlled procedural motion.
β You can do:
- Bracing for impacts
- Controlled collapsing
- Getting back up animations
- Impacts with partial stiffness (floppy arms, stiff torso)
- Stunt choreography driven by physics
β Benefits
- Native Blender solution
- No need for external physics engines or exports
- Fully bakeable to Blender animation
- Huge time saver for VFX, game cinematics, stunts, and crowd animation
- Completely open-source β first of its kind in a major 3D suite
π οΈ Backward Compatibility
β Fully backward-compatible β this is an additive feature with no disruption to existing workflows.
βοΈ Implementation Roadmap
| Phase | Goal |
|---|---|
| Phase 1 | Skeleton-to-rigid-body mapper + basic joint constraints |
| Phase 2 | Behavior FSM with simple on/off ragdoll toggle |
| Phase 3 | Full force/impulse system with baking |
| Phase 4 | UI refinement, animation-layer integration |
| Phase 5 | Optional: Simulation Nodes integration for node-based behavior trees |
π References
- NaturalMotion Endorphin (archived, no longer sold)
- MuJoCo: Physics engine for robotics simulation
- Bullet Physics (Blenderβs internal engine)
- Open Dynamics Engine (ODE)
- Academic papers on PD Controllers, constraint stabilization, and biomechanics
βοΈ Copyright
This document is placed in the public domain. All contributions to this proposal will be open-source under Blenderβs GPL license.
0 Comments