How do I combine fully body morphs in Poser 11?


  • Banned

    I have two custom made (GOZ) full body morphs on my V4 figure. How do I combine both fully body morphs into a single full body morph? I'm sure Poser 11 has a new feature or a recently designed script to do this yes?



  • @trepleen is Poser Pro 11 Figure>Spawn Full Body Morph... menu item what you're looking for? From the manual:

    The Figure > Create Full Body Morph command allows you to create a single master dial in the Body to drive morphs in several different body parts. Additionally, you can use Dependent Parameters to create master parameter dials that, in turn, create more realistic interactions between body parts and rotations.
    Spawning Morph Targets on Figures (Poser Pro only)
    The Figure > Spawn Full Body Morph command creates like-named morph targets on Poser Unimesh gures for all body parts, and then creates a matching master parameter. You can use this command to capture deformations that are created through simulations such as soft body dynamics or the Cloth Room.


  • Banned

    I was looking for a feature that lets you select two full body morphs, then you click "combine".

    V4 Body

    • FullBodyMorph1
    • FullBodyMorph2

    Combine FullBodyMorph1 & FullBodyMorph2 into a new morph called FullBodyMorphCombined



  • @trepleen nothing as specific as that exists yet, but if you have PPro11, the Wardrobe Wizard python suite has a Zero Figure option which zeroes more than just actor rotations. Using that as a starting point for the figure, use the Edit>Memorize>Figure, will record the zeroed states of all of the figure's morphs and actor rotations. Having then created multiple FBMs (which the memorised state will not record), you can use Edit>Restore>Figure to zero everything else and then just set both of the Body master dials for the new FBMs to 1 and use Figure>Spawn Full Body Morph to create a new combined FBM. You can subsequently delete the original FBMs.

    This is, admittedly, not as simple as the yet-to-be-created feature you describe, but it is straightforward and achievable with Poser Pro 11's existing feature set.

    [Edit...] On second thoughts, hold off on the Wardrobe Wizard Zero Figure while I check something. As I composed this reply, I executed it in my current scene, and it still has not completed, leaving Poser completely locked up with spinning beach-ball cursor. I have the latest SR 11.0.8.34764 and there are crashing problems when selecting the Universe actor, which I know Wardrobe Wizard uses to store editable settings (though just creating and modifying parameters probably still works. Just Universe selection crashes Poser).



  • @trepleen OK, Wardrobe Wizard doesn't zero everything you need it to, so Plan B:

    I have to head out for a couple of hours. I have a script in progress, but need to test that it doesn't override parameter initvalues that it shouldn't. It is helpful, when you work on a figure, to save a zero pose to the library, that you are confident zeroes just what you need it to. Including scales in such a pose is not a simple matter, unless you have the right script, or are prepared to edit CR2 files to extract the figure's default pose.

    Back soon.



  • Step 1: Work out what needs to be in your figure's zero pose.
    Lots of figures have value parameters containing a constant they use to calculate other things. The default value of such constants can be determined by incorporating an external AI* module into the script. Lots of parameters should be zero in the Zero Pose. Some, like scale parameters and perhaps deformerPropChannels, should be 1.0. Others, like joint origins and offsets have (usually, but not always) static values which may be anything.

    Run the attached script ListDefaults.py to determine which, if any parameters need their current values memorised.

    • Actual Intelligence.


  • Step 2: Save the pre-FBM zero pose to the library.

    If you found that there were no parameters whose memorised values differed from their expected defaults, you can just save the current pose to the library (assuming the figure is in a zero pose orientation). If the pose and all morphs are essentially zeroed, but there are some default value discrepancies listed by the ListDefaults script that you're happy to memorise, go ahead and use the Edit>Memorize>Figure menu option. That will allow you to restore all the values later.

    If your figure has some morphs which are applied by default, you can cancel their effect by spawning another morph target per body part actor, and setting its value to -1, which completely counteracts the effects of any morphs currently set. This works best when all deformer influences are eliminated, which is best done by setting the deformerPropChannels on affected actors to 0, rather than zeroing deformer parameters directly.

    URK! Poser's Python API has failed me again. I STILL can't find a way to initiate the delete morph function available from the parameters' individual hierarchy menu (It's not one of the poser.ProcessCommand() method menu items in PoserMac.xrc) from within Python. A python script to cancel all morph influence will either need to spawn cancellation morphs which it cannot subsequently delete, or else memorise and delete ALL ERC influence before zeroing morphs, to ensure that every vertex is in its default geometry position before spawning new combination FBMs, and then restore everything again. I have scripts which did this (memorise, remove and restore all value operations) before the Python UnaffectedValue() method was implemented, but it's an absolute PITA! to have to do, just to guarantee that a newly spawned morph has only the combined influence of the currently applied morphs.

    That individual Delete Morph item also fails to list morphs on certain types of actors, like Zones. [Yet another bu/feature/g to report...]



  • Plan C: As long as you have your figure in a zeroed state, where all joint rotations and scaling are reset, and morph and deformer influences (V4 has a Body:Deformers:Base:Strength parameter you set to -1 to turn off V4's deformers) are zeroed, you should just be able to dial in the two Full Body Morphs (there's no easier way than setting their Body master parameters to 1 - why rewrite an API that already exists?) to 1 and run the Spawn Full Body Morph command from the figure menu. Done. Save the figure to the library.

    Be aware that the built-in command will also blindly create FBmorphs on all the deformer props attached to your figure (Go figure :-/)


  • Poser Ambassadors

    @trepleen

    Combining morphs and FBM into a new morph dial: The correct procedure.

    Always start with a clean scene and a figure "as virgin" as possible.

    Step1 : Bring the obj back into its original state.
    In this order:

    • Manually zero out all existing morphs. Beware of hidden morph dials, and also check eventual dependencies.
      Some content creators are very "inventive", that's why I proposed to start with a figure as "morph virgin" as possible.
    • Remove all IK.
    • Click => Figure => Zero figure.

    Step2 : If you created new morphs, now is the time to load them up.
    => Set all the morphs and/or FBM dials that you want combined into the new FBM dial to their desired value.

    Step3 : Click on Figure => Spawn Full Body Morph, and give your new FBM a name => Click OK.

    Step4 : Check the result of the new dial and set the limits. (Click on the little arrow behind the dial => Settings.)

    Step5 : Delete the now obsolete leftovers if you don't need them any more.

    Optional : The Injection.
    If you want to be able to transfer this new FBM into other characters of the same figure?
    Click on => File => Export => Create Morph Injection => Select the FBM to inject => Give it a proper name => Create.

    Best regards, and have fun using the Poser tools. Tony



  • @vilters good catch on the IK removal, I rarely use it, so it didn't occur to mention it. The Figure>Zero figure can be problematic if the figure has been memorised since loading, or any other process which can modify morph InitValues from being zero.

    The big problem here for automation or scripting is that not all the steps can be done (deletion of redundant, temporary morphs) from Python, yet.


  • Banned

    @vilters Thx, this is very helpful!