Poser Binary Morph Data .pmd file format documentation



  • I completely forgot..

    I have Binarymorpheditor and have used it a bit. I'm having issues with it with Poser 11, though. I probably need to update it or something. (Won't write the poses appropriately, but I haven't fully figured out the problem yet. Not permissions, though.)

    Anyway, it's pretty nice and has some nice features. Not sure if that helps, but it's pretty informative and easy to use. (It's an external package. It'll read pmd files directly.)



  • After losing several projects to damaged PMD files, including situations when you copy or rename your PZZ/PZ3 files, I just gave up on them completely several years ago.

    So I just never, never, never, ever, in no situation, no matter what soothing things anyone can say, not in dream or in heaven, no shape or form, not by accident or forgetfulness, I'll just never use any PMD, nor will I ever buy any product that uses PMD.

    I lost more work due to PMDs than to computer viruses, so PMDs are worse than virus to me. And just to be safe, every 15 days or so I double-check to see if poser re-enabled PMDs while I was sleeping.

    No PMDs ever!



  • @adp I finally found the time to delve into your PMD python library. Brilliant stuff! Thank you!!

    Good to have exposure to others' styles of coding and use of language features I've not previously dealt with (had to look up @ decorators, heh).

    Successful test-run importing the module into a custom main replacement script to match my path structure (once I had all the module name prefixes on the library methods sorted). Yay!

    Now to boldly PMD where NVIATWAS has never PMD'd before! X-D



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

    @adp I finally found the time to delve into your PMD python library. Brilliant stuff! Thank you!!

    You are welcome. Nice to hear that it works for you.

    Good to have exposure to others' styles of coding and use of language features I've not previously dealt with (had to look up @ decorators, heh).

    If something is unclear to you, I'll be happy to answer your questions. Yes, my coding-style is very pythonic ;)

    Successful test-run importing the module into a custom main replacement script to match my path structure (once I had all the module name prefixes on the library methods sorted). Yay!

    Maybe some extensions could make handling easier for others. Any ideas?



  • @adp I'll send you a modified version with my comments when I get my thoughts in order.

    Here's my addition to the comment block: [AAARRRGGGHH, I can't stand these single punctuation character style formatters this %$#@ forum uses. Go away!][... Clicks on COMPOSE? ... With this blasted Markdown, I can't even see. How am I supposed to format? ...Use the backticks, Luke!]

    # v1.0  20170814     LIB_poser_pmd.py Initial version supplied by ADP
    # v1.1  20170826     Corrected afterBlend keyword to afterBend
    #                    Reduced list indent level in write() method
    #                    Removed extraneous newline following PoserObject and 
    #                    DELTA blocks.
    #############################################################################
    
    version = '1.1'
    

    So, as you see, I've just corrected the afterBlend => afterBend keyword typo (immediately after blendType, so understandable) and tidied the write() method to my OCD satisfaction ;-) (removing excessive indenting and extraneous newlines) so the output matches Poser's own formatting.

    I had a thought of making the written options conform to the supported features of whichever version of Poser the script is run under (since I was testing in PPro2014 while P11 was rendering), since I was running up against version feature discrepancies in another project, but that can get really onerous when trying to decide how many versions to support and how little detail there is in some of the release notes about newly implemented features. It's not like you can 'diff' the manuals, though maybe a 'diff' of a sorted 'strings' output from the applications themselves would be more helpful in determining new keywords each revision supports.



  • @anomalaus Thanks.

    Does Poser not ignore unknown keywords? So, parameters set and known only by version 11 should be ignored by Poser 9?



  • @adp Poser certainly ignores them. Poser 11 would also ignore a misspelt (No, forum compositor, that is not a typo!) keyword that it otherwise could support. The "feature discrepancies" only cause a problem for python scripts running under different versions of Poser, not files written to the library that will be loaded directly by Poser. Though newer version numbers can throw up warnings when loaded in older Poser versions.



  • @anomalaus Ah, yes, you are right. I'll try to support versions. May last a couple of days.