Morph Loader Pro! (Call it what you want, I wants this tool)

HTStudiosHTStudios Posts: 41
edited July 2020 in Product Suggestions

Perhaps this isn't a new product and there is a workflow I am missing that will solve my problem, I would love to hear any ideas.

Problem: The more products I buy that have morphs, the longer charcter loading takes. I just reinstalled and tested character loading times with and without my full morph library.  With the basic morphs and only a few characters, my actor only took about 4 seconds to load, once I added my full library it takes 3 to 5 times longer. Jay Versluis explains better here - https://www.versluis.com/2020/05/why-do-daz-characters-take-so-long-to-load/.

Additonally, the morph options and redundencies are unweildly. I like lots of morph options, but don't need or want every option for every character. Ex. Aging and musclegroup morphs are only needed for 1 or 2 of my characters.

Tool's Solution:  The tool changes the way characters load.  The morphs or morph sets that are loaded (even if they are loaded at 0%) on all characters are customizable by the user.  This would speed loading times and keep the most useful morphs at the ready. Additional installed morphs or morph groups can be added ala carte after character loading, letting the user still take advantage of their full library.

Thanks for reading, cheers!

Post edited by HTStudios on

Comments

  • bshugs@hotmail.com[email protected] Posts: 176
    edited July 2020

    Holy @#$%, I just came here looking to make a similar suggestion.  Perhaps 'Morph Manager" or something.  My models take way too long long to load, though I suspect part of that is due to the 3rd party products.  I've run similar test to you and found that with fewer morphs available the figures load faster.

    One problem I have is that I might pick up a character like Elsie for Genesis 8 Female.  Perfectly good character with decent textures, but I don't use her very often.  Yet every time I load any Genesis 8 Female, every one of Elsie's morphs has to load... and Rochelle, and Catgirl, and Centaur, and Growing Up, and...well you get the idea.  It's literally THOUSANDS of small files, each being loaded, opened, examined and forgotten.  I could uninstall the packages, but then I'm likely to forget I even have them until I open a file that needs them, or worse never use them.  Now, I understand some of the underlying problem.  Daz can't display a slider -- make it available to us -- without checking to see what's available, but there has to be a better way.

    Just wish I was smart enough to figure it out.

     

    ---Edit---

    I actually have a thought about this, though I don't know enough about c++ or the Daz Studio SDK to make a plugin.  I do know some C# and since Daz Studio files are nothing but .zip or .json, I might try to work on an external tool.  The odds of me getting it right are a million-to-one, but it just might work.

    So here's the basic layout in case anyone else wants to work on or expand it.  The first thing is to create a folder outside of your Library to store every morph file you've got.  This would be mainly for the Genesis figures as most other objects don't attract morphs like they do.  We copy all the morphs with their directory trees into this location.  Next we clear out all the Genesis morphs in our Library, perhaps keeping a thousand or so basic ones like Genesis 8 Essentials, some expressions and characters we know we use a lot.  This would drastically cut our load times, but would make all those other morphs unavailable.  Last we make a Temporary Library that gets wiped every time we start Daz Studio.

    Here's where the plug-in/tool comes in.  A plug-in would be best, but again that's beyond my hobbiest skill level.  When you load a figure from your library (and remember removing morph files did not uninstall the content in our Smart Content/Content Library), the plug-in would grab the associated morphs for that product and copy them into the Temporary Library before the figure is loaded.  This way when the figure comes in, the morphs are there.  For existing files it would do something similar, scanning the file before loading to copy any needed morphs.  While this would require an additional set of steps, the tool would only be loading and processing one file instead of thousands.  The copies probably wouldn't take long compared to the rest, and for multiple characters the copy isn't needed.

    One problem is that once a figure is loaded, Daz Studio never looks at the morph folder again.  This means if you loaded a base figure and then loaded a mophed figure, the first base figure would not have any of those morphs available.  I don't know any way around this short of re-loading the first figure.

    A nice addition would be to tie into the PostgreSQL database to copy over whole products.  The folder structure does a good job of grouping morphs and would provide a fallback for products without Smart Content, but I think the extra information in the metadata might be useful.

    Rather than wiping the Temporary Library every reboot, perhaps keep files in there for a while.  If the plug-in can tell how long the file has been there, it might leave something there for a boot or two after it was last used to reduce copying.  It might even suggest moving commonly used files be moved over to the main Library.

    Anyone got any thoughts on this? Obviously a 'built-in' solution would be better, but until Daz figures out how to know all the sliders without loading them that won't happen.  (On that score, perhaps having Daz Studio or Install Manger scan the Morph directories and create a single, large meta-file with slider info; an Index of sorts.  The morph data would then be loaded if/when the slider is adjusted.  A single large file is faster to load then thousands of smaller ones.)

    Post edited by [email protected] on
  • barbultbarbult Posts: 24,240
    edited July 2020

    Morph Loader Pro is a tool already built into Daz Studio. It does something entirely different than what you are requesting, so Morph Manager, as suggested by Windamyre would be a better title for your request.

    Post edited by barbult on
  • PerttiAPerttiA Posts: 10,024
    Windamyre said:

    Holy @#$%, I just came here looking to make a similar suggestion.  Perhaps 'Morph Manager" or something.  My models take way too long long to load, though I suspect part of that is due to the 3rd party products.  I've run similar test to you and found that with fewer morphs available the figures load faster.

    One problem I have is that I might pick up a character like Elsie for Genesis 8 Female.  Perfectly good character with decent textures, but I don't use her very often.  Yet every time I load any Genesis 8 Female, every one of Elsie's morphs has to load... and Rochelle, and Catgirl, and Centaur, and Growing Up, and...well you get the idea.  It's literally THOUSANDS of small files, each being loaded, opened, examined and forgotten.  I could uninstall the packages, but then I'm likely to forget I even have them until I open a file that needs them, or worse never use them.  Now, I understand some of the underlying problem.  Daz can't display a slider -- make it available to us -- without checking to see what's available, but there has to be a better way.

    Just wish I was smart enough to figure it out.

     

    ---Edit---

    I actually have a thought about this, though I don't know enough about c++ or the Daz Studio SDK to make a plugin.  I do know some C# and since Daz Studio files are nothing but .zip or .json, I might try to work on an external tool.  The odds of me getting it right are a million-to-one, but it just might work.

    So here's the basic layout in case anyone else wants to work on or expand it.  The first thing is to create a folder outside of your Library to store every morph file you've got.  This would be mainly for the Genesis figures as most other objects don't attract morphs like they do.  We copy all the morphs with their directory trees into this location.  Next we clear out all the Genesis morphs in our Library, perhaps keeping a thousand or so basic ones like Genesis 8 Essentials, some expressions and characters we know we use a lot.  This would drastically cut our load times, but would make all those other morphs unavailable.  Last we make a Temporary Library that gets wiped every time we start Daz Studio.

    Here's where the plug-in/tool comes in.  A plug-in would be best, but again that's beyond my hobbiest skill level.  When you load a figure from your library (and remember removing morph files did not uninstall the content in our Smart Content/Content Library), the plug-in would grab the associated morphs for that product and copy them into the Temporary Library before the figure is loaded.  This way when the figure comes in, the morphs are there.  For existing files it would do something similar, scanning the file before loading to copy any needed morphs.  While this would require an additional set of steps, the tool would only be loading and processing one file instead of thousands.  The copies probably wouldn't take long compared to the rest, and for multiple characters the copy isn't needed.

    One problem is that once a figure is loaded, Daz Studio never looks at the morph folder again.  This means if you loaded a base figure and then loaded a mophed figure, the first base figure would not have any of those morphs available.  I don't know any way around this short of re-loading the first figure.

    A nice addition would be to tie into the PostgreSQL database to copy over whole products.  The folder structure does a good job of grouping morphs and would provide a fallback for products without Smart Content, but I think the extra information in the metadata might be useful.

    Rather than wiping the Temporary Library every reboot, perhaps keep files in there for a while.  If the plug-in can tell how long the file has been there, it might leave something there for a boot or two after it was last used to reduce copying.  It might even suggest moving commonly used files be moved over to the main Library.

    Anyone got any thoughts on this? Obviously a 'built-in' solution would be better, but until Daz figures out how to know all the sliders without loading them that won't happen.  (On that score, perhaps having Daz Studio or Install Manger scan the Morph directories and create a single, large meta-file with slider info; an Index of sorts.  The morph data would then be loaded if/when the slider is adjusted.  A single large file is faster to load then thousands of smaller ones.)

    A list / "database" that holds the information, which morphs/characters should be loaded (enabled) by default 

    Newly installed morphs / characters would be added to the list when installing, either by the the installation utilities, or by hand with manual installation and would be enabled by default.

    The enabling/disabling could be done in content library by right-click options, which would change the status (enabled/disabled) on the List.

    If a character/scene being opened/merged required a morph that was not enabled by default, then it would go looking if it was installed at all

    There is no need to move stuff anywhere, even if the list wasn't enough/realistic for controlling the enabled-status, the content library could be made to rename the morph files by adding .NoLoad to the end of the file name, which would prevent it from loading by default.

  • PerttiA said:

    A list / "database" that holds the information, which morphs/characters should be loaded (enabled) by default 

    Newly installed morphs / characters would be added to the list when installing, either by the the installation utilities, or by hand with manual installation and would be enabled by default.

    The enabling/disabling could be done in content library by right-click options, which would change the status (enabled/disabled) on the List.

    If a character/scene being opened/merged required a morph that was not enabled by default, then it would go looking if it was installed at all

    There is no need to move stuff anywhere, even if the list wasn't enough/realistic for controlling the enabled-status, the content library could be made to rename the morph files by adding .NoLoad to the end of the file name, which would prevent it from loading by default.

    Great thoughst!  This is the kind of thing that would make it a lot easier, at least for us.  I would think about togging morph status either in the Parameters/Shaping/Posing tabs or in a seperate tab dedicated to the purpose where morphs can be grouped either by product, purpose, or catagory in the parameter tab.  This would allow you to enable/disable a particular morphs or an entire package.  The reason I suggest this over the Content Library is that the morphs themselves don't show up in the Content Library and there may be multiple files there for the same product, while other products may have no files in the Content Library.

     

    As a side note, the only reason I mention moving/copying/etc is that currently Daz Studio loads everything in the morph folder of all libraries.  AFAIK, there's no way to override this behaviour, and so the only stop-gap fix I could think of was to move the morphs into another location.

  • PerttiAPerttiA Posts: 10,024
    Windamyre said:
    PerttiA said:

    A list / "database" that holds the information, which morphs/characters should be loaded (enabled) by default 

    Newly installed morphs / characters would be added to the list when installing, either by the the installation utilities, or by hand with manual installation and would be enabled by default.

    The enabling/disabling could be done in content library by right-click options, which would change the status (enabled/disabled) on the List.

    If a character/scene being opened/merged required a morph that was not enabled by default, then it would go looking if it was installed at all

    There is no need to move stuff anywhere, even if the list wasn't enough/realistic for controlling the enabled-status, the content library could be made to rename the morph files by adding .NoLoad to the end of the file name, which would prevent it from loading by default.

    Great thoughst!  This is the kind of thing that would make it a lot easier, at least for us.  I would think about togging morph status either in the Parameters/Shaping/Posing tabs or in a seperate tab dedicated to the purpose where morphs can be grouped either by product, purpose, or catagory in the parameter tab.  This would allow you to enable/disable a particular morphs or an entire package.  The reason I suggest this over the Content Library is that the morphs themselves don't show up in the Content Library and there may be multiple files there for the same product, while other products may have no files in the Content Library.

     

    As a side note, the only reason I mention moving/copying/etc is that currently Daz Studio loads everything in the morph folder of all libraries.  AFAIK, there's no way to override this behaviour, and so the only stop-gap fix I could think of was to move the morphs into another location.

    You can prevent the "unnecessary" morph files from loading without the need to move them from their original location. Just "Zip" them up at their default location, then you can delete the files and they won't load.
    If and when you want to use them again, just un-Zip the files back to their proper location and you have them again.

  • You can prevent the "unnecessary" morph files from loading without the need to move them from their original location. Just "Zip" them up at their default location, then you can delete the files and they won't load.
    If and when you want to use them again, just un-Zip the files back to their proper location and you have them again.

    Okay, true enough.  You don't have to copy them.  I've actually done the zip trick with some morphs that were giving me headaches (I'm looking at you Auto Face Enhancer).  You could also just rename them (at least in Windows, not sure about MacOS's file structure).  Changing the file from MyMorph.duf to MyMorph.duf.disabled would be faster than either idea.  Still this is a stop-gap solution.

  • HTStudiosHTStudios Posts: 41

    Loving this brainstorming... most is over my head but I'm glad I'm not alone in my frustration with this problem. You all rock.

  • HTStudiosHTStudios Posts: 41
    barbult said:

    Morph Loader Pro is a tool already built into Daz Studio. It does something entirely different than what you are requesting, so Morph Manager, as suggested by Windamyre would be a better title for your request.

    Yep def a better name!

  • One hurdle, to some of the suggestions made here already is that the system you are outlining works best only if you know what you are going to do before you do it.

     

    If you have a free flow working style... lets say I want to create a skinny female G8... I might load up Hagar...

    But when I customize, I just kind of open up the G8 Shapes folder and browse Actor heads and go down the list, "doing and undoin" various characters to try out their effect on the Hagar to see what I like.

     

    For that to happen, in current daz, all my morphs and characters have to be loaded.  Cause in my work flow, by the time I am done, The skinny character I thought I was going to create has "morphed" (pun intended) into a Rubenesque Roller Derby queen.

     

    The only way I could get my load time into something I deemed manageable/acceptable  (for me 1-2 minutes)  was to seriously cull my assets and uninstall them.  At the end of the day, a lot of the G8F I own were redundant as some PAs successfully got me to buy the same figure twice (as they really weren't that different... but hey, I got a "type").

    In a way this hurts DAZ a bit, because I rarely look to buy Characters now unless they are VERY unique.

    So, whatever solution Daz 5  has for us, I hope it is some improvement on Morphs/Load time

  • PJWhoopie said:

    One hurdle, to some of the suggestions made here already is that the system you are outlining works best only if you know what you are going to do before you do it.

     

    If you have a free flow working style... lets say I want to create a skinny female G8... I might load up Hagar...

    But when I customize, I just kind of open up the G8 Shapes folder and browse Actor heads and go down the list, "doing and undoin" various characters to try out their effect on the Hagar to see what I like.

     

    For that to happen, in current daz, all my morphs and characters have to be loaded.  Cause in my work flow, by the time I am done, The skinny character I thought I was going to create has "morphed" (pun intended) into a Rubenesque Roller Derby queen.

    I agree completely and have the same issue.  I don't have a real workflow, I'm just a hobbyist who likes to tinker a bit.  The ideas that have been put forth are stop gap solutions to try and reign in an existing problem.  I'm hopping that with the next version of Daz, they might implement something along the lines of what @PerttiA suggested and have some sort of master listing of morphs that is maintained in the background.  Perhaps they'll come up with something better, but I don't see them ditching the exiting DUF format.  Perhaps even start putting together the morph list on, quietly workingin the background so you don't have as long to wait.  3Delight used to do something similar with textures. 

    Background threads are something that Daz Studio doesn't seem to take good advantage of, though.  Think about when you click on a Smart Content and how long it takes to query the database.  I've got six cores and 64GB of ram that sit idle until I want to look at a category.  Only then does the database even start putting together a listing instead of doing some caching based upon what's selected.  Heck, it could even do Genesis 3 or 8 after boot since those are often used.

  • FSMCDesignsFSMCDesigns Posts: 12,752
    Windamyre said:
     

    Background threads are something that Daz Studio doesn't seem to take good advantage of, though.  Think about when you click on a Smart Content and how long it takes to query the database.  I've got six cores and 64GB of ram that sit idle until I want to look at a category.  Only then does the database even start putting together a listing instead of doing some caching based upon what's selected.  Heck, it could even do Genesis 3 or 8 after boot since those are often used.

    Glad I never use smart content then.

  • PaintboxPaintbox Posts: 1,633
    Windamyre said:
     

    Glad I never use smart content then.

    Yeah I don't know what to call it, but smart isn't one of them. Convenient content... maybe...

Sign In or Register to comment.