]> de.git.xonotic.org Git - xonotic/xonotic.wiki.git/commitdiff
Create modeldecompile tool page
authorLegendaryGuard <rootuser999@gmail.com>
Sun, 11 Dec 2022 23:10:30 +0000 (23:10 +0000)
committerLegendaryGuard <rootuser999@gmail.com>
Sun, 11 Dec 2022 23:10:30 +0000 (23:10 +0000)
modeldecompile-tool.md [new file with mode: 0644]

diff --git a/modeldecompile-tool.md b/modeldecompile-tool.md
new file mode 100644 (file)
index 0000000..cc7f8b1
--- /dev/null
@@ -0,0 +1,63 @@
+`modeldecompile` is a powerful command, decompiles any model format (DPM, IQM, MD3, ...).
+
+[LegendGuard](https://gitlab.com/LegendaryGuard) discovered something magical, if you put the .dpm file and .dpm.framegroups file (also, .iqm, .iqm.framegroups, md3...) in 
+<br/> (`darkplaces_game` can be `xonotic`, `quake`, `wrath` or any DarkPlaces game)
+- Windows: `%USERPROFILE%\Saved Games\darkplaces_game\data\` <br/> 
+- Linux: `~/.darkplaces_game` <br/>
+- 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, ...).
+
+<img src="uploads/6140abcafb7b60cb154b43ce5e835105/image.png" alt="model_decompile_okrobot1_xon" width=760 />
+<br/>
+
+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.
+<br/>
\ No newline at end of file