`modeldecompile` is a powerful command, decompiles any model format (DPM, MDL, IQM, MD3, BSP, ...).
[**LegendGuard**](https://gitlab.com/LegendaryGuard) discovered something magical, if you put the .dpm file and .dpm.framegroups file (also .iqm, .iqm.framegroups, ...) in
(`darkplaces_game` can be `xonotic`, `quake`, `wrath` or any DarkPlaces game)
- Windows: `%USERPROFILE%\Saved Games\darkplaces_game\data\`
- Linux: `~/.darkplaces_game`
- Mac: `~/Library/Application Support/darkplaces_game`
- Or in `darkplaces_game-data.pk3dir` directory.
the tool decompiles the mesh and the animations of a model in one action (the animations aren't distributed per actions).
No matter if the model is a weapon, a player or any object/entity.
An example of a .framegroups file from a player model (`okrobot1.dpm.framegroups`):
```
1 41 30 0 // okrobot1 die1
67 56 30 0 // okrobot1 die2
133 11 15 1 // okrobot1 draw
144 6 10 1 // okrobot1 duck
150 17 15 1 // okrobot1 duckwalk
167 31 40 0 // okrobot1 duckjump
198 1 10 1 // okrobot1 duckidle
199 101 15 1 // okrobot1 idle
300 17 20 1 // okrobot1 jump
317 6 10 0 // okrobot1 pain1
323 6 10 0 // okrobot1 pain2
329 6 30 0 // okrobot1 shoot
335 17 15 1 // okrobot1 taunt
352 17 30 1 // okrobot1 run
369 17 30 1 // okrobot1 runbackwards
386 17 30 1 // okrobot1 strafeleft
403 17 30 1 // okrobot1 straferight
41 1 10 0 // okrobot4 dead1
122 1 10 0 // okrobot4 dead2
424 17 30 1 // okrobot1 forwardright
441 17 30 1 // okrobot1 forwardleft
458 17 30 1 // okrobot1 backright
475 17 30 1 // okrobot1 backleft
492 21 15 1 // okrobot1 melee
```
The hacky way to obtain all animations of a model is setting the last keyframe in an exaggerated value (don't care if the fps have that value or aren't loopable) of the .framegroups file, the file must contain ONLY **one line**:
```
1 9999 30 0 // LegendGuard's legendary method
```
What that legendary method does is setting the initial keyframe to `1` and `9999` the last keyframe, we can know `9999` doesn't exist but reaches into a limit. (ignore `30` (means fps) and `0` (means nonloop, if `1` means loopable)).
In the game, execute `modeldecompile any_model.dpm` (any_model.iqm, any_model.md3, any_model.mdl, ...).
After that, go to the data directory where the files were decompiled.
Use the SMD files to import into [Blender](https://www.blender.org/) using [Blender Source Tools](http://steamreview.org/BlenderSourceTools/) addon.
First, import the mesh (`ref1.smd`) with the Bone Append Mode set to "Make New Armature" and "Import Animations" option disabled.
After, select the armature of the imported model (orange highlighted) and import other SMD file (`groupified_0_anim.smd`), before that, set the Bone Append Mode to "Validate Against Target" and enable "Import Animations" option. The animations in one action are applied to the armature.
Result (video): https://streamable.com/1egthv
The actions can be created with the imported one to separate the keyframes of every animation.