There’s work being done on an importer/exporter for Valve’s SMD format.
Import Armature + Mesh: WORKING
Export Armature + Mesh: WORKING
Export Animation: WORKING
Import Animation: MASSIVE FAIL
The problem is: how to calculate the PoseBone.rotation_euler value? I can calculate the difference between the animation pose and rest pose in armature-space, but how does that translate into pose-space?