How to save poses when using dials from different packages

This question is about how to save poses in a way that doesn't depend on a specific package of (purchased) pose morphs/dials.

When I use "native" pose controls dials, I've been using "Bake to Transforms" (and then save as Pose Preset), and it looks like it accomplishes the task of saving the pose with "zeroed" dials.

Then I've bought a different pose-control package (3DU Pose Architect), which has it's own "Extract Pose" script that does the same thing when using Pose Architect's pose dials.

However, the two don't seem to "understand" each other, i.e. "Back to Transforms" (when applied to Property Path: Pose Controls/3DU Pose Architect) can't save the exact pose created by the Pose Architect dial, and vice versa, Pose Architect's "Extract Pose" script can't save a pose created by a "native" Pose Control dial. In both case, they curiously save something resembling the "other's" pose, but not nearly close enough.

So, I'm confused about what the workflow is supposed to be if I have multiple pose manipulation packages each with their own set of dials, when the goal is to end up with a "pure" pose that's dial- and package- independent. Is it expected that each time I use a pose-dial from a particular package, I have to "bake" in the pose using that package's tools, before I can continue modifying a pose dial from another package? Or can that logic even change based on each specific package? That would seem incredibly inconvenient... Is there a way to just use pose dials from different packages in any sequence (as one would want), but thenstill  somehow save/bake/whatever the whole thing as a "pure" pose that can be used in the future by anybody (that doesn't have any packages)?

Overall, under the hood, it would seem like the final product (of various pose alterations) on some level should just be the combination of all "deltas" of all the bones of a given model... so there's got to be some simple way to save "all the deltas" as a new pose, no? If that's not so, I'm very curious as to why, as I clearly don't yet seem to understand the logic behind how morphs function.

Thank you!

Comments

  • Richard HaseltineRichard Haseltine Posts: 102,109

    Why are you wanting to do this? The basic idea is not to remove the dependencies, so that you can share them with others (now or at a future date when you have forgotten that they are not all your own work).

  • malswanskymalswansky Posts: 12
    edited January 26

    Well, a basic case would be where my PC breaks, I have saved the stuff I created, e.g. poses, but I don't remember which poses were created using which package. Why would I have to then install every possible package if I want to keep working on a pose that may not have used any of them (I just dont remember), especially since a pose is just a set of "deltas" of all the bones (or is it not?) -- why would it not be logical to have a way to save all those deltas?

    A second case might be that at some point I want declutter my workspace and delete/uninstall packages that I'm not working with... but if I uninstall Pose Architect without its poses baked in, as far I understand it means I can't use the pose any more without it being installed, which again is strange. Using a software development analogy it's somewhat like not being able to run a program without its original compiler installed, which makes no sense.

    FWIW, I have no interest in selling poses that were created with the help of a package, it's just strange if poses were "tied" to having specific packages installed if the final result (i.e. pose) logically no longer necessitates having that package that helped create it. Is it all because of commercial considerations, or is there an actual functional reason why the final pose (after whatever dials) can't be saved as something completely independent of the dials? Or it can, but one is simply discouraged/not allowed to (because it would violate licensing, etc)?

    Btw, the individual Pose Architect package that I've been using does seem to allow you to saved its poses "baked". So if each package allows this, whats the difference between let's say baking a pose using product A, then baking after using product B (e.g. working hands), vs. just being able to bake after using them together?

    Post edited by malswansky on
  • Richard HaseltineRichard Haseltine Posts: 102,109

    Content from the Daz Store, if you allow DS to go onlne to get your history you will get a prompt to install the missing files. I don't know Pose Architect so I am not at all sure why  it is behaving differently.

  • crosswindcrosswind Posts: 7,798
    edited 3:17AM

    malswansky said:

    This question is about how to save poses in a way that doesn't depend on a specific package of (purchased) pose morphs/dials.

    When I use "native" pose controls dials, I've been using "Bake to Transforms" (and then save as Pose Preset), and it looks like it accomplishes the task of saving the pose with "zeroed" dials.

    Then I've bought a different pose-control package (3DU Pose Architect), which has it's own "Extract Pose" script that does the same thing when using Pose Architect's pose dials.

    However, the two don't seem to "understand" each other, i.e. "Back to Transforms" (when applied to Property Path: Pose Controls/3DU Pose Architect) can't save the exact pose created by the Pose Architect dial, and vice versa, Pose Architect's "Extract Pose" script can't save a pose created by a "native" Pose Control dial. In both case, they curiously save something resembling the "other's" pose, but not nearly close enough.

    I couldn't reproduce the issues you mentioned. Though they use different techniques... but should give you the same result. In terms of "baking result", they both get values on Joint Rotations ERC Freezed by their Controllers, i.e. Pose Controls properties , zero Pose Controls, then write back the values to Joints Rotation properties. Difference is: Bake to Transforms mainly uses ERC Bake function while 3DU's script directly get non-default rotation values from root/child bones ~~

    So, I'm confused about what the workflow is supposed to be if I have multiple pose manipulation packages each with their own set of dials, when the goal is to end up with a "pure" pose that's dial- and package- independent. Is it expected that each time I use a pose-dial from a particular package, I have to "bake" in the pose using that package's tools, before I can continue modifying a pose dial from another package? Or can that logic even change based on each specific package? That would seem incredibly inconvenient... Is there a way to just use pose dials from different packages in any sequence (as one would want), but thenstill  somehow save/bake/whatever the whole thing as a "pure" pose that can be used in the future by anybody (that doesn't have any packages)?

    Still strongly suggest you use 3DU's Extract Pose script because it's much much faster than using Bake to Transforms ~~  and you shouldn't have to do any "sequential process" by using Pose Controls from whatever packages.

    Overall, under the hood, it would seem like the final product (of various pose alterations) on some level should just be the combination of all "deltas" of all the bones of a given model... so there's got to be some simple way to save "all the deltas" as a new pose, no? If that's not so, I'm very curious as to why, as I clearly don't yet seem to understand the logic behind how morphs function.

    Thank you!

    Edit: If you still get any issue, name the package / Pose Control properties you used that brought you unexpected / wrong results, we may help with checking.

    Post edited by crosswind at
  • crosswindcrosswind Posts: 7,798

    malswansky said:

    Well, a basic case would be where my PC breaks, I have saved the stuff I created, e.g. poses, but I don't remember which poses were created using which package. Why would I have to then install every possible package if I want to keep working on a pose that may not have used any of them (I just dont remember), especially since a pose is just a set of "deltas" of all the bones (or is it not?) -- why would it not be logical to have a way to save all those deltas?

    A second case might be that at some point I want declutter my workspace and delete/uninstall packages that I'm not working with... but if I uninstall Pose Architect without its poses baked in, as far I understand it means I can't use the pose any more without it being installed, which again is strange. Using a software development analogy it's somewhat like not being able to run a program without its original compiler installed, which makes no sense.

    I have to say it's not strange because that was by design ~~ Pose Architech product just gives users Pose Control properties (with ERC Freeze...) rather than Pose Presets (with Transforms only...) like other Poses products. Since Pose Controls and Pose Presets with Transforms Only are both features of DS, I don't think that makes no sense. 

    FWIW, I have no interest in selling poses that were created with the help of a package, it's just strange if poses were "tied" to having specific packages installed if the final result (i.e. pose) logically no longer necessitates having that package that helped create it. Is it all because of commercial considerations, or is there an actual functional reason why the final pose (after whatever dials) can't be saved as something completely independent of the dials? Or it can, but one is simply discouraged/not allowed to (because it would violate licensing, etc)?

    I'm not able to tell if it's because of commercial consideratijons.... still I could only say it's one of the ways of pose design ~~

    Btw, the individual Pose Architect package that I've been using does seem to allow you to saved its poses "baked". So if each package allows this, whats the difference between let's say baking a pose using product A, then baking after using product B (e.g. working hands), vs. just being able to bake after using them together?

    Ha ~ still, I've never had to do it in that way but, in general, "baking to transforms" by using whatever action / script should be the final step after you complete posing your figure... if you really need to save a Pose Preset with Transforms-Only.

     

     

  • malswanskymalswansky Posts: 12
    edited 6:39AM

    crosswind said:

    malswansky said:

    This question is about how to save poses in a way that doesn't depend on a specific package of (purchased) pose morphs/dials.

    When I use "native" pose controls dials, I've been using "Bake to Transforms" (and then save as Pose Preset), and it looks like it accomplishes the task of saving the pose with "zeroed" dials.

    Then I've bought a different pose-control package (3DU Pose Architect), which has it's own "Extract Pose" script that does the same thing when using Pose Architect's pose dials.

    However, the two don't seem to "understand" each other, i.e. "Back to Transforms" (when applied to Property Path: Pose Controls/3DU Pose Architect) can't save the exact pose created by the Pose Architect dial, and vice versa, Pose Architect's "Extract Pose" script can't save a pose created by a "native" Pose Control dial. In both case, they curiously save something resembling the "other's" pose, but not nearly close enough.

    I couldn't reproduce the issues you mentioned. Though they use different techniques... but should give you the same result. In terms of "baking result", they both get values on Joint Rotations ERC Freezed by their Controllers, i.e. Pose Controls properties , zero Pose Controls, then write back the values to Joints Rotation properties. Difference is: Bake to Transforms mainly uses ERC Bake function while 3DU's script directly get non-default rotation values from root/child bones ~~

    So, I'm confused about what the workflow is supposed to be if I have multiple pose manipulation packages each with their own set of dials, when the goal is to end up with a "pure" pose that's dial- and package- independent. Is it expected that each time I use a pose-dial from a particular package, I have to "bake" in the pose using that package's tools, before I can continue modifying a pose dial from another package? Or can that logic even change based on each specific package? That would seem incredibly inconvenient... Is there a way to just use pose dials from different packages in any sequence (as one would want), but thenstill  somehow save/bake/whatever the whole thing as a "pure" pose that can be used in the future by anybody (that doesn't have any packages)?

    Still strongly suggest you use 3DU's Extract Pose script because it's much much faster than using Bake to Transforms ~~  and you shouldn't have to do any "sequential process" by using Pose Controls from whatever packages.

    Overall, under the hood, it would seem like the final product (of various pose alterations) on some level should just be the combination of all "deltas" of all the bones of a given model... so there's got to be some simple way to save "all the deltas" as a new pose, no? If that's not so, I'm very curious as to why, as I clearly don't yet seem to understand the logic behind how morphs function.

    Thank you!

    Edit: If you still get any issue, name the package / Pose Control properties you used that brought you unexpected / wrong results, we may help with checking.

    First of all, I definitely appreciate your feedback, it helps a lot with getting a more complete picture of what's going on. 

    As for a specific use case, I did this --

    1. Start with Genesis 9 base figure 

    2. Apply: Pose Controls > Legs Spread dial (=10%; at this point when selecting Left Thigh body part directly, its Side-Side parameter has value = 9.0) 

    3. Run: Pose Architect/3DU Extract Pose script (hopefully this is the same 3DU's Extract Pose that you were referring to)

    The result (tested twice), in my case, is that the legs for some reason get spread further apart (Left Thigh's Side-Side value = 18.0), but the Legs Spread dial control value in Pose Controls is not zeroed out and remains at 10%. So the 3DU Extract Pose script is unable to properly bake in a change in a Pose Control dial -- not only does it get the wrong joint values, but also it doesn't reset the Pose Control dial itself. FWIW, I have DS 4.23.0.1, 3D Universe's Pose Architect for Genesis 9.

    Now, what I am able to do, is for example: 

    1-2. Same as above, i.e. apply a change via Pose Control dials to base Genesis 9 

    3. Bake in that change using DS's native "Bake To Transforms"

    4. Now apply another change via 3DU Pose Architect's dials 

    5. Bake that in using Pose Architect's own baking script, i.e. Extract Pose 

    6. Keep going 

    Interestingly, I've tried this with yet another product (V3Digitimes Ultimate Pose Mixer Pro), which has its own baking scripts (e.g. "Bake All Except Face"). Now this script does better, e.g. in the examples I tried, it can bake in the Pose Control dials properly, but it still doesn't quite work with the 3DU Pose Architect's dials (although it seems to set the joint values correctly, it doesn't zero out the dial itself).

    So basically my impression so far is that if one wants to end up with  transforms-only pose presets, then even though each product seems to provide this ability for its own dials, there's no universal way of baking them all. Which means that if one wants to use these different products (and Pose Controls too) together and still end up with a transforms-only pose preset, one has to follow a pretty tiresome routine -- i.e. after making any changes using a given product's dials, one has to immediately bake in these changes using this product's own Bake To Transforms equivalent, before making changes using any other product's dials (and then you have to use that product's own baking script, etc). Otherwise, if you ever use two different products' dials in succession, you're likely to end up with a "mixed" pose that no script can apparently bake in reliably. 

    Or, I guess one can forget this, just use dials, save pose presets with pose controls, but then to use these poses, one must always have installed all the packages whose dials were ever used, and they can never be saved as transforms-only.  

    However, could there be another alternative -- what if one exports a figure (after various dials are applied) as an .obj, then import it back, could one then somehow save that object-figure as a pure-transform morph of the original?

    Post edited by malswansky at
  • malswanskymalswansky Posts: 12
    edited 7:38AM

    Well, damn, I thought it worked for a moment -- I tried to use Morph Loader Pro for this to import a changed figure back as a morph (btw, I thought it was for official artists only, how do I have it?) following the advice in this thread: How to properly load a morph using only DAZ? : r/Daz3D 

    1. Applied a bunch of different dials from different products to change a base Genesis 9 to a new pose 

    2. Saved this pose as a regular pose preset, i.e. with dials (this is the step that I thought might allow to get around the problem).

    3. Saved the figure as .obj at base resolution 

    4. Imported the figure back using Morph Loader Pro => select the .obj from step 3, set Reverse Deformations to yes, then set the pose (suboption under Reverse Deformations) to the one in Step 2. My logic was that if DAZ is able to match a base figure to a morphed one using a pose as a guide, it might use that to calculate the transforms needed to match the two, and then that would be the answer.

    5. For a moment I thought the magic happened -- the morphed figure appeared perfectly. Unfortunately, when I went to check, it turned out that somehow all the changes were copied as dial control values, so I guess the Morph Loader saw the morph completely match a pose with dials, and decided "I'm done, no need to calculate any actual transform values, here are your dial values back" :) Or something like that. 

     

     

    Post edited by malswansky at
  • crosswindcrosswind Posts: 7,798
    edited 12:23PM

    @malswansky

    Ah ~~ Pose Architect for G9 ! I'm sorry that I tested with G8 version. I'm gonna check it later !

    Right~~ I could reproduce the issue.  I also found the culprit which is just the property names of the Daz3d official Pose Control properties... because G8 and G9 have different naming conventions in terms of Property Names.

    1) Check Property Name of 3DU's Pose Controls, you'll see pCTRL (ss1)... while the name of Daz3D official Pose Controls is body_ctrl (ss2)
    2) If you replace body_ctrl with pCTRL in those 3 Legs Spread properties (ss3), the script will work fine. (ss4)

    So it seems to be a coding issue in the Script. Better fill a ticket. I think it should be easy to fix.

    The script in V3Digitimes Ultimate Pose Mixer Pro also works for me. So that Script should have no issue.

    SNAG-2025-1-27-101.png
    2560 x 1392 - 534K
    SNAG-2025-1-27-102.png
    2560 x 1392 - 471K
    SNAG-2025-1-27-103.png
    2560 x 1392 - 471K
    SNAG-2025-1-27-104.png
    2560 x 1392 - 457K
    Post edited by crosswind at
  • crosswindcrosswind Posts: 7,798
    edited 1:17PM

    malswansky said:

    Well, damn, I thought it worked for a moment -- I tried to use Morph Loader Pro for this to import a changed figure back as a morph (btw, I thought it was for official artists only, how do I have it?) following the advice in this thread: How to properly load a morph using only DAZ? : r/Daz3D 

    1. Applied a bunch of different dials from different products to change a base Genesis 9 to a new pose 

    2. Saved this pose as a regular pose preset, i.e. with dials (this is the step that I thought might allow to get around the problem).

    3. Saved the figure as .obj at base resolution 

    4. Imported the figure back using Morph Loader Pro => select the .obj from step 3, set Reverse Deformations to yes, then set the pose (suboption under Reverse Deformations) to the one in Step 2. My logic was that if DAZ is able to match a base figure to a morphed one using a pose as a guide, it might use that to calculate the transforms needed to match the two, and then that would be the answer.

    5. For a moment I thought the magic happened -- the morphed figure appeared perfectly. Unfortunately, when I went to check, it turned out that somehow all the changes were copied as dial control values, so I guess the Morph Loader saw the morph completely match a pose with dials, and decided "I'm done, no need to calculate any actual transform values, here are your dial values back" :) Or something like that. 

     

    Oh, no ~~ Morph Load Pro just imports a Morph as a Modifier/Shape rather than a Pose as Modifier/Pose. A Morph leads to vertext positions change on a target mesh while a Pose leads to Transforms change on bones / joints of a figure. They handle different things~~

    Post edited by crosswind at
Sign In or Register to comment.