Coder Social home page Coder Social logo

`modeldecompile` documentation required (Old issue title: `modeldecompile` doesn't decompile completely and correctly the player model animations) about darkplaces HOT 1 CLOSED

darkplacesengine avatar darkplacesengine commented on August 11, 2024
`modeldecompile` documentation required (Old issue title: `modeldecompile` doesn't decompile completely and correctly the player model animations)

from darkplaces.

Comments (1)

LegendaryGuard avatar LegendaryGuard commented on August 11, 2024

modeldecompile is a powerful tool, decompiles any model format (DPM, IQM, MD3, ...).

There's a lack of documentation on this robust "model disassembler" tool.

I discovered something magical, if you put the .dpm file and .dpm.framegroups file (also, .iqm, .iqm.framegroups, md3...) 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, ...).

model_decompile_okrobot1_xon


After that, go to the data directory where the files were decompiled.
Use the SMD files to import into Blender using Blender Source Tools 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.

Anyway, I'm gonna to close the issue, I should have renamed to "modeldecompile tool isn't documented" :P

from darkplaces.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.