Poser Binary Morph Data .pmd file format documentation



  • I have been hand editing Poser files in a text editor for so long (including algorithmically editing morph deltas, where necessary) that I feel really frustrated when morphs are locked up in a separate, impenetrably cryptic binary file. I know D3D has a commercial PMD editor script, but I wonder if that is merely based on Poser Python interface manipulations of the PMD or if he had acquired some insider knowledge of the file format. I have been unable to find any documentation on how the file is compressed, or its structure. I have looked at Nerd3D's tutorial back in the Poser 6 days on how to manually insert the binary morph injection commands into Poser files. And I think I'm ready to see what level of figure loading speed improvement binary morphs can deliver. Just not at the expense of visibility and maintainability of morph deltas.

    I have absolutely zero disposable income, so I can't invest anything except my time into developing my own tools to do the job. (Even purchasing and decompyling someone's python script is out of reach). Can anyone point me at relevant documentation? Even DAZ Studio seems to be able to load .pmd files referred to in .cr2 files, so the information must be available somewhere (unless, of course, it's licensed and commercial in confidence, or some such).



  • Yes, that annoyed me on several occasions too.

    However, as a stop-gap, try this:

    Load the scene which is using the .pmd files.

    Make sure that "Use external binary morph targets" is disabled in "General Preferences/Misc."

    Save the scene under a different name.

    Now all PMD data has been saved as "geomCustom" instead of referencing the PMD file.
    The geometry is in this "geomCustom" tag in the first part of the .pz3/.pz2/.pp2 files.

    Any morph data (if present) are in the "deltas" tag of the individual "targetGeom" entries in the second part of the file.

    You only have to extract the geometries to create an .obj file, and extract the morph data to create a morph injection.

    Et finis PMD :P

    Karina



  • Not sure, but would the free "Poser's Little Helper" tool help with this, at least in the way of helping to unveil certain mysteries?

    (Can't remember where it's hosted, atm. But, it's free. Last release that I have is Beta6.)



  • @morkonan It's over at DAZ3D, since it was an Esha/RuntimeDNA product, and it's still free.



  • OK, I'm going to need some help here. The search function at DAZ appears to be deliberately borking any attempt to use variants of the word 'poser' in it's search engine. I noticed while looking at youtube tutorials on Poser Little Helper that the spelling was 'Pozer'. Typing variants of that into DAZ gives things like 'poker' and 'power', completely foiling any attempt. This seems utterly childish and petty behaviour to me, so maybe I've got it wrong and am misinterpreting what's going on, but it does not seem beyond the realms of possibility that, with the exception of content, utilities related to Poser have been purged from the DAZ stable of RuntimeDNA products.

    Please confirm my paranoia, or put me out of my misery with a link. I even looked at a German website where it seems Esha is a moderator, but my Ancient Phoenician is better than my German, so I'm stumbling blind.



  • @morkonan do you see any documentation in the PLH Beta? Is the product a standalone Windows .exe (which I will be unable to make use of) or python scripts?



  • PLH doesn't deal at all with pmd files. Only plain files.



  • Blender can convert pmd. Maybe you can find infos in source codes

    https://www.daz3d.com/forums/discussion/38151/convert-mmd-pmd-freebie-models-to-obj-for-daz-poser

    You even have the name of the python file on the picture.

    I've done the job i think :
    https://pypi.python.org/pypi/pymeshio/

    If i'm not wrong the PMD Format used by Poser is MikuMikuDance pmd format

    :) :)



  • @barnardino is right, Pozer's Little Helper doesn't handle PMD files as far as I can tell. It was originally made by Staale Loseth who doesn't seem to be around any more. His site has been down for a couple of years, but you can still download via the Wayback Machine:

    https://web.archive.org/web/20151030211110/http://home.online.no/~kjellil/Index-AllStuff.htm (some NSFW stuff further down that page!)

    I have no recollection of it going the RDNA > DAZ route, but that doesn't mean it's not true. ;)



  • @barnardino Ah! that common extention and acronym is entirely coincidental, I believe. I don't think they are the same format at all. I did look at pymeshio and the online MMD PMD Format definition and it is definitely NOT the same as what poser uses. Poser's .pmd files begin with 'PZMD' and MMD/PMD .pmd files begin with 'Pmd' and a 4-byte float version number. I think it quite likely that the files (apart from a header, which seems to have human readable strings containing the UUID, really looks like a binary dump of memory arrays. I could probably decode it with a lot of experiment, but why waste time if documentation already exists. Hence my question.

    I was hoping I could find a MacOS Sierra version of ResEdit, to see if that could open Poser .pmd files, as the Mac origins of Poser may have contributed to the development tools the devs were using (.pmd has been around since Poser 6, at least, according to Nerd3D's tutorial)



  • @englishbob LOL, Life of Brian quotes too!! Thanks for that link. Again an .exe file I can't use directly (with old 32 bit windows plugins required too), but the doco definitely doesn't seem to refer to Poser .pmd files at all. Nerd3D's tutorial on .pmd binary morphs implies that a lot of people were afraid to use the format due to the number of bugs during development, though I never found the bugs to be an issue for me. It was more the obfuscation factor that frustrated me. Coming from a programming background, bugs in other people's software simply meant do-it-yourself, or do without.



  • @anomalaus As far as I know, the things that PLH used to help with can now be done more easily within Poser itself; it's not an area that I get involved with very much.

    I don't know if PMD morphs definitely gave me any trouble, but I felt I had enough anecdotal evidence to feel safer if I removed them from library items that used that format. I don't bother going that far any more, but I still run Poser 11 with binary morphs disabled, and the same with compressed file formats. I prefer files that I can hack in a text editor or spreadsheet. :)



  • @anomalaus
    I made a Python lib some years ago to read/write and deal with Poser PMD-files. Round about 1000 Lines and very little description :)

    Needs some more testing and description to become useful for others. If you are interested to do this, I can send you a copy.



  • @adp Absolutely!^! Send away! 8-D <Graham's number> Thanks!



  • @anomalaus
    What about an email address I can send this file to?



  • @anomalaus
    I made an upload to sharecg.
    https://www.sharecg.com/pf/full_uploads.php?pf_user_name=adp__

    Look at the end of the script (locate: if name == "main"), change the pathes/filenames to your needs and give it a try.

    For any questions, email to: os-coder@mailbox.org



  • @adp Cheers! I'm about to crash and burn, but I'll email you when I've had a chance to trawl through the python library. Excellent work on this from a single quick scan!



  • @englishbob said in Poser Binary Morph Data .pmd file format documentation:
    ...

    I have no recollection of it going the RDNA > DAZ route, but that doesn't mean it's not true. ;)

    IRRC, a version was available on RDNA. But, it was updated to Beta6 (I think that's the version I tracked down) by the creator and was hosted at a different site, for awhile. Previously hosted versions on other sites, again IIRC, weren't updated to the latest version.



  • As far as I'm aware the .pmd format is just the morph data extracted from the cr2 as standard text and then encoded by i think 'gzip' and placed in the .pmd file to make it more compact - the encoding is why we can't read it but the file needs to be decoded back to plane text to make any sense - it's just a list of morph data though similar to that created by Pozers little helper or one of the many other binary injection utilities



  • @adi
    No. PMD-Files do not contain just compressed text. It's a binary representation of morphdata in a special file-structure.