[Released] Turbo Loader for Genesis 8 and 8.1 [Commercial]

1246714

Comments

  • jbowlerjbowler Posts: 652

    RiverSoftArt said:

    The script queries the DS database for products associated with a file.  It looks like for your installation, that DS is not reporting things correctly.  It happens with some people's installations and I don't know why; it is outside the script's control.

    What script API do you use?  I can probably debug it from that information (I assume your script is encrypted).

  • Serene NightSerene Night Posts: 17,352

    This is quite helpful. I would recommend backing up the morphs folder first before beginning especially if you have 3rd party stuff.

    It has been helpful to find many passive morphs, jcms, and other things, which are dialing in on my characters when the figure is not enabled. 

    I have found it useful to make categories, for things like expressions, monsters, and children, that I don't use often.

    I do find that some pas have made characters that have content dialing in with each figure I load. Even passive morphs, can add to the lag, so this allows me to disable those. 

  • RiverSoftArtRiverSoftArt Posts: 5,776
    edited March 2022

    jbowler said:

    RiverSoftArt said:

    The script queries the DS database for products associated with a file.  It looks like for your installation, that DS is not reporting things correctly.  It happens with some people's installations and I don't know why; it is outside the script's control.

    What script API do you use?  I can probably debug it from that information (I assume your script is encrypted).

    If you bring up the script IDE pane, paste the below and click execute:

    var relPath = '/data/DAZ 3D/Genesis 8/Female/Morphs/DAZ 3D/Head/PHMEyelashesCurl.dsf'
    var products = App.getAssetMgr().findProductsForFile(relPath);
    for (var i = 0; i < products.length; i++)
    print(products[i].title);

     

    On my system, this will print:

    Executing Script...
    Genesis 8 Starter Essentials
    Result: 
    Script executed in 0 secs 5 msecs.
    Post edited by RiverSoftArt on
  • RiverSoftArtRiverSoftArt Posts: 5,776
    edited March 2022

    Serene Night said:

    This is quite helpful. I would recommend backing up the morphs folder first before beginning especially if you have 3rd party stuff.

    You can, but you do not need to.  In the Options tab of Turbo Loader Manager, there is a "Reset Morph Directory..." button.  This button will rename every .tlOff file back to .dsf in the selected directory and subdirectory.  So any changes made by this script (or any of the Turbo Loader scripts in the future) can easily be undone.

    It has been helpful to find many passive morphs, jcms, and other things, which are dialing in on my characters when the figure is not enabled. 

    I have found it useful to make categories, for things like expressions, monsters, and children, that I don't use often.

    I do find that some pas have made characters that have content dialing in with each figure I load. Even passive morphs, can add to the lag, so this allows me to disable those. 

    Yeah, I was surprised by the amount of stuff that is pulled in myself.

    Post edited by RiverSoftArt on
  • nynico_8c2302db09nynico_8c2302db09 Posts: 97
    edited March 2022

    Is there a video tutorial showing this in action by any chance? 

    Post edited by nynico_8c2302db09 on
  • River put a video demo on the product page.

  • evacynevacyn Posts: 908
    edited March 2022

    RiverSoftArt said:

    evacyn said:

    RiverSoftArt said:

    evacyn said:

    Is there any chance that the morph filter on the 'Turbo Loader Manager' window would allow us to search by artist or even the folder name in the path? 

    I'm finding it easy to filter when there's an artist like SASE (who includes the name in the character filename) or anything with pose/expression, but I also have A LOT of characters by specific artists that don't have a unique identifier besides the path (which includes the artist name).

    Thanks :)

    Not right now obviously, but I will think how I might add that.

    Awesome - thank you :) I have almost 30K morphs (!) so it's been a bit of a slog to get through them all, but it's definitely eye-opening to see what's been slowing my G8 down. I'll post some speed tests once I get through them all - I'm only on the "K" morphs now (!).

    Wow!  30K?!?  I had a lot with 20K.  I will be interested in your speed comparisons

    It took a while, but I managed to reduce my G8F morph count from 30036 to 13814 (through a lot of "Sophie's Choice" moments), and here are my results:

    • 30036 morphs => 11m 4.717s
    • 13814 morphs => 2m 42.38s

    I'd say the whole initial set up process could be sped up by adding a few more search filters (such as PA). I think the dream of loading under 2 minutes could be done by disabling more of the countless expression sets (yes I have a problem), but I think this is a good place to start.

    The next step will be to try out saving configurations for particularly large projects - I'll report back any updates when that happens.

    Thanks again - I no longer have to play musical chairs with my morphs folder :)

     

    Post edited by evacyn on
  • second_technician_rimmer_9571136c47 said:

    River put a video demo on the product page.

    Gah! Thank you :)  

  • OK, I have a problem, I am either misunderstanding something or my setup on the PC is bonked.  When I load the Genesis8 Female figure, 5 zillion or so morphs show up, all unknown products which isn't surprising, I like to use manual folders so if the database is bonked I'd never know.

    I uncheck everything except the morphs I want to use as a mininal set, the script runs, fine, everything else has been renamed.  But then when I load a specific product that uses disabled morphs, I get the message they can't be loaded, run the script, and the morphs don't show up to re-enable, the only ones that show up were the originally enabled ones.

    Any idea what I am doing wrong, or what secret button I'm missing? 

  • RiverSoftArtRiverSoftArt Posts: 5,776

    diogenese19348 said:

    OK, I have a problem, I am either misunderstanding something or my setup on the PC is bonked.  When I load the Genesis8 Female figure, 5 zillion or so morphs show up, all unknown products which isn't surprising, I like to use manual folders so if the database is bonked I'd never know.

    I uncheck everything except the morphs I want to use as a mininal set, the script runs, fine, everything else has been renamed.  But then when I load a specific product that uses disabled morphs, I get the message they can't be loaded, run the script, and the morphs don't show up to re-enable, the only ones that show up were the originally enabled ones.

    Any idea what I am doing wrong, or what secret button I'm missing? 

    Just to be sure... you are running the Turbo Loader Manager?  The Scene Config script would only show morphs in use.  If you are running the Turbo Loader Manager, did you by accident clear the morph list and re-inspect the figure?  That could give you the behavior you are seeing as inspecting the figure (after clearing) that only has the enabled morphs would only show those morphs.  If you did, don't panic.  Use the Reset Morph Directories button in options to turn everything back on and start over.  

  • RiverSoftArtRiverSoftArt Posts: 5,776

    evacyn said:

    RiverSoftArt said:

    evacyn said:

    RiverSoftArt said:

    evacyn said:

    Is there any chance that the morph filter on the 'Turbo Loader Manager' window would allow us to search by artist or even the folder name in the path? 

    I'm finding it easy to filter when there's an artist like SASE (who includes the name in the character filename) or anything with pose/expression, but I also have A LOT of characters by specific artists that don't have a unique identifier besides the path (which includes the artist name).

    Thanks :)

    Not right now obviously, but I will think how I might add that.

    Awesome - thank you :) I have almost 30K morphs (!) so it's been a bit of a slog to get through them all, but it's definitely eye-opening to see what's been slowing my G8 down. I'll post some speed tests once I get through them all - I'm only on the "K" morphs now (!).

    Wow!  30K?!?  I had a lot with 20K.  I will be interested in your speed comparisons

    It took a while, but I managed to reduce my G8F morph count from 30036 to 13814 (through a lot of "Sophie's Choice" moments), and here are my results:

    • 30036 morphs => 11m 4.717s
    • 13814 morphs => 2m 42.38s

    LOL.  ~14K is your reduced set because of all the expression morphs?!?!  You need to go to Expression Sets Anonymous! laugh

    Still it is an improvement.  But I would make an expression morph set and disable all of them except when you want to use the expressions.  Then you can use the Scene Config to save only the expressions in actual use for the scene.

    I'd say the whole initial set up process could be sped up by adding a few more search filters (such as PA). I think the dream of loading under 2 minutes could be done by disabling more of the countless expression sets (yes I have a problem), but I think this is a good place to start.

    The next step will be to try out saving configurations for particularly large projects - I'll report back any updates when that happens.

    Thanks again - I no longer have to play musical chairs with my morphs folder :)

    That is good to hear!

     

  • RiverSoftArt said:

    diogenese19348 said:

    OK, I have a problem, I am either misunderstanding something or my setup on the PC is bonked.  When I load the Genesis8 Female figure, 5 zillion or so morphs show up, all unknown products which isn't surprising, I like to use manual folders so if the database is bonked I'd never know.

    I uncheck everything except the morphs I want to use as a mininal set, the script runs, fine, everything else has been renamed.  But then when I load a specific product that uses disabled morphs, I get the message they can't be loaded, run the script, and the morphs don't show up to re-enable, the only ones that show up were the originally enabled ones.

    Any idea what I am doing wrong, or what secret button I'm missing? 

    Just to be sure... you are running the Turbo Loader Manager?  The Scene Config script would only show morphs in use.  If you are running the Turbo Loader Manager, did you by accident clear the morph list and re-inspect the figure?  That could give you the behavior you are seeing as inspecting the figure (after clearing) that only has the enabled morphs would only show those morphs.  If you did, don't panic.  Use the Reset Morph Directories button in options to turn everything back on and start over.  

    That's probably exactly what I did, I knocked them out by loadiing a second time.  I didn't panic anyway, I already found the reset button to rename them, and even if you didn't include that button I do remember how to maunally recursively change the extentions of files in directories relative to a root ;)

    I am using two content directories, one for items installed by DIM, the other for products insalled by other sites, just in case a misbehaving product from another site bonks the gene pool which is more like a gene ocean at this point.  Specificaly the Pacific.

  • RiverSoftArtRiverSoftArt Posts: 5,776

    diogenese19348 said:

    RiverSoftArt said:

    diogenese19348 said:

    OK, I have a problem, I am either misunderstanding something or my setup on the PC is bonked.  When I load the Genesis8 Female figure, 5 zillion or so morphs show up, all unknown products which isn't surprising, I like to use manual folders so if the database is bonked I'd never know.

    I uncheck everything except the morphs I want to use as a mininal set, the script runs, fine, everything else has been renamed.  But then when I load a specific product that uses disabled morphs, I get the message they can't be loaded, run the script, and the morphs don't show up to re-enable, the only ones that show up were the originally enabled ones.

    Any idea what I am doing wrong, or what secret button I'm missing? 

    Just to be sure... you are running the Turbo Loader Manager?  The Scene Config script would only show morphs in use.  If you are running the Turbo Loader Manager, did you by accident clear the morph list and re-inspect the figure?  That could give you the behavior you are seeing as inspecting the figure (after clearing) that only has the enabled morphs would only show those morphs.  If you did, don't panic.  Use the Reset Morph Directories button in options to turn everything back on and start over.  

    That's probably exactly what I did, I knocked them out by loadiing a second time.  I didn't panic anyway, I already found the reset button to rename them, and even if you didn't include that button I do remember how to maunally recursively change the extentions of files in directories relative to a root ;)

    I am glad you were able to recover quickly!  

    To be clear, it is safe to reinspect a figure and it will only ADD newly detected morphs to the current morph list. It's only if the list is cleared that things go bad smiley

    I am using two content directories, one for items installed by DIM, the other for products insalled by other sites, just in case a misbehaving product from another site bonks the gene pool which is more like a gene ocean at this point.  Specificaly the Pacific.

    Large library huh? smiley  I stopped buying characters because it made DS so slow; I am thinking it is safe to expand my gene pool again now.

  • shadem980shadem980 Posts: 44

    I have about 1100 G8F/G8.1F figures let alone libraries of body morphs of different varieties. My load time dropped from around 11 mins to shortly under 2 with the morph libraries and very few characters enabled.

  • jbowlerjbowler Posts: 652

    RiverSoftArt said:

    If you bring up the script IDE pane, paste the below and click execute:

    var relPath = '/data/DAZ 3D/Genesis 8/Female/Morphs/DAZ 3D/Head/PHMEyelashesCurl.dsf'
    var products = App.getAssetMgr().findProductsForFile(relPath);
    for (var i = 0; i < products.length; i++)
    print(products[i].title);
    

    I thought you might be using that API...  I've been testing it and the other DzAssetMgr API since about the time I sent the query; the products API seems extremely unreliable.  I've got variable results from it on the same system at different times.

    The "Genesis 8 Starter Essentials" stuff is, perhaps, distracting because the files actually come from "Genesis 8 Female Starter Essentials", which is a product which shares its ID with the Male product and is, IMNSHO, extremely confusing.

    I get the same result for your script as you do at present (after enabling DAZ Connect temporarily, for the first time, on this installation and a complete system reboot), however when I run TurboLoader on a G8F which I inserted from the "Genesis 8 Starter Essentials" pseudo-product in Smart Content/Products there is no "Genesis 8 Starter Essentials" entry in your "Name" list.  The Curl is in HEAD again, along with the other eyelashes morphs.  I was not logged in to DAZ Connect; my default is not to log in.  The script identifies a number of products as disabled (curiously, as there are no tlOff files in my file system and I did just reboot) these products contain no morphs:

     

    image

    (I trust that PNG will show up correctly after I post this; please someone fix forum image insert, DAZ is meant to be about images!)

    Here's some more info from script operations immediately after cancelling the TurboLoaded modal dialog:

    App.getAssetMgr().findProductsForFile(relPath) // i.e. your script
    Executing Script...
    Genesis 8 Starter Essentials
    

    Same as you still.  Using the same 'relPath' (with or without the spurious leading /) with the other API gives more revealing information, first the script:

    // DAZ Studio version 4.20.0.11 filetype DAZ Script
    
    var findAsset=function(relPath, user, cloud) {
    	var assets = App.getAssetMgr().findAssetsForFile(relPath, user, cloud)
    	print("Found", assets.length, "assets");
    	for (var count=0, a=assets[count]; a!=undefined; a=assets[++count]) {
    		print("assetName", a.assetName)
    		print("productID", a.productID)
    		print("productName", a.productName)
    		print("isCloudInstalled", a.isCloudInstalled)
    		print("needsCloudInstall", a.needsCloudInstall)
    		print("isInstsalled", a.isInstalled)
    		print("getAsLocalFile", a.getAsLocalFile())
    	}
    }
    
    findAsset("data/DAZ 3D/Genesis 8/Female/Morphs/DAZ 3D/Head/PHMEyelashesCurl.dsf", false, false)
    

    And the result of that:

    Executing Script...
    Found 1 assets
    assetName PHMEyelashesCurl.dsf
    productID 42071
    productName Genesis 8 Starter Essentials
    isCloudInstalled false
    needsCloudInstall true
    isInstsalled false
    getAsLocalFile G:/DAZ 3D/Studio/Core/data/daz 3d/genesis 8/female/morphs/daz 3d/head/phmeyelashescurl.dsf

    So even though it is clearly installed from DIM "isInstalled" is still false; I had observed this before while searching for assets by path; I have to search for assets that are !installed.  Apparently the argument to the function and isInstalled itself just refers to DAZ Connect installation.

    I suspect that might be the solution to the problem in TurboLoader.  I have no way of reporting bugs to DAZ, YMMV, but I suggest using the findAssetsForFile forAPI, four times, (since the assets may or may not be hidden and they may or may not be installed in DAZ's opinion).  It does also seem more logical to me; you have your hands on an asset, why trust an API that is clearly primarily aimed as DAZ Connect rather than the thing you have in your hands?

    Screenshot 2022-03-27 200513.png
    1156 x 376 - 19K
  • RiverSoftArtRiverSoftArt Posts: 5,776

    shadem980 said:

    I have about 1100 G8F/G8.1F figures let alone libraries of body morphs of different varieties. My load time dropped from around 11 mins to shortly under 2 with the morph libraries and very few characters enabled.

    Nice!  Thanks for sharing!

  • RiverSoftArtRiverSoftArt Posts: 5,776

    jbowler said:

    RiverSoftArt said:

    If you bring up the script IDE pane, paste the below and click execute:

    var relPath = '/data/DAZ 3D/Genesis 8/Female/Morphs/DAZ 3D/Head/PHMEyelashesCurl.dsf'
    var products = App.getAssetMgr().findProductsForFile(relPath);
    for (var i = 0; i < products.length; i++)
    print(products[i].title);
    

    I thought you might be using that API...  I've been testing it and the other DzAssetMgr API since about the time I sent the query; the products API seems extremely unreliable.  I've got variable results from it on the same system at different times.

    The "Genesis 8 Starter Essentials" stuff is, perhaps, distracting because the files actually come from "Genesis 8 Female Starter Essentials", which is a product which shares its ID with the Male product and is, IMNSHO, extremely confusing.

    I get the same result for your script as you do at present (after enabling DAZ Connect temporarily, for the first time, on this installation and a complete system reboot), however when I run TurboLoader on a G8F which I inserted from the "Genesis 8 Starter Essentials" pseudo-product in Smart Content/Products there is no "Genesis 8 Starter Essentials" entry in your "Name" list.  The Curl is in HEAD again, along with the other eyelashes morphs.  I was not logged in to DAZ Connect; my default is not to log in.  The script identifies a number of products as disabled (curiously, as there are no tlOff files in my file system and I did just reboot) these products contain no morphs:

     

    image

    (I trust that PNG will show up correctly after I post this; please someone fix forum image insert, DAZ is meant to be about images!)

    Here's some more info from script operations immediately after cancelling the TurboLoaded modal dialog:

    App.getAssetMgr().findProductsForFile(relPath) // i.e. your script
    Executing Script...
    Genesis 8 Starter Essentials
    

    Same as you still.  Using the same 'relPath' (with or without the spurious leading /) with the other API gives more revealing information, first the script:

    // DAZ Studio version 4.20.0.11 filetype DAZ Script
    
    var findAsset=function(relPath, user, cloud) {
    	var assets = App.getAssetMgr().findAssetsForFile(relPath, user, cloud)
    	print("Found", assets.length, "assets");
    	for (var count=0, a=assets[count]; a!=undefined; a=assets[++count]) {
    		print("assetName", a.assetName)
    		print("productID", a.productID)
    		print("productName", a.productName)
    		print("isCloudInstalled", a.isCloudInstalled)
    		print("needsCloudInstall", a.needsCloudInstall)
    		print("isInstsalled", a.isInstalled)
    		print("getAsLocalFile", a.getAsLocalFile())
    	}
    }
    
    findAsset("data/DAZ 3D/Genesis 8/Female/Morphs/DAZ 3D/Head/PHMEyelashesCurl.dsf", false, false)
    

    And the result of that:

    Executing Script...
    Found 1 assets
    assetName PHMEyelashesCurl.dsf
    productID 42071
    productName Genesis 8 Starter Essentials
    isCloudInstalled false
    needsCloudInstall true
    isInstsalled false
    getAsLocalFile G:/DAZ 3D/Studio/Core/data/daz 3d/genesis 8/female/morphs/daz 3d/head/phmeyelashescurl.dsf

    So even though it is clearly installed from DIM "isInstalled" is still false; I had observed this before while searching for assets by path; I have to search for assets that are !installed.  Apparently the argument to the function and isInstalled itself just refers to DAZ Connect installation.

    I suspect that might be the solution to the problem in TurboLoader.  I have no way of reporting bugs to DAZ, YMMV, but I suggest using the findAssetsForFile forAPI, four times, (since the assets may or may not be hidden and they may or may not be installed in DAZ's opinion).  It does also seem more logical to me; you have your hands on an asset, why trust an API that is clearly primarily aimed as DAZ Connect rather than the thing you have in your hands?

    Interesting.  And hopefully very helpful smiley  A lot of my coding for using the DS database (Smart Collections, Content Wizard, and even TL) is spelunking through the DS script API, trying this and trying that, as it is not well documented.  I will investigate.  

  • evacynevacyn Posts: 908

    RiverSoftArt said:

    LOL.  ~14K is your reduced set because of all the expression morphs?!?!  You need to go to Expression Sets Anonymous! laugh

    Still it is an improvement.  But I would make an expression morph set and disable all of them except when you want to use the expressions.  Then you can use the Scene Config to save only the expressions in actual use for the scene.

    That's a great idea - I think when I'm ready to tackle it, I'll do just that and create multiple Scene Configs based on the type of expressions.I also have to review all of the helper morph packs I have and figure out what I can disable from there.

  • smaker1smaker1 Posts: 263

    Hello River

    already bought :-) but one question maybe already answered : how daz updates of morph are managed?  Example : I change the extension of all morphs and Daz make an update of a character I assume it will create new .dsf files. How the tool will work ? will it appear in the list of active morphs again ? and if I hide it again , will it rewrite the exisitng .tlOff file ?

    Thanks !

  • RiverSoftArtRiverSoftArt Posts: 5,776

    smaker1 said:

    Hello River

    already bought :-) but one question maybe already answered : how daz updates of morph are managed?  Example : I change the extension of all morphs and Daz make an update of a character I assume it will create new .dsf files. How the tool will work ? will it appear in the list of active morphs again ? and if I hide it again , will it rewrite the exisitng .tlOff file ?

    Thanks !

    The ideal way would be to re-enable the morphs, install update, and then disable.  However, the Turbo Loader Manager is set up to overwrite the existing .tlOff files.  After installing an update/new content, you would load a G8 character, run Turbo Loader Manager again, and re-inspect the figure.  TLM will find the updated/new morphs.  For updated morphs, the list won't change.  For new morphs, they will be added.  Then execute to disable morphs again.

  • smaker1smaker1 Posts: 263

    That's OK for me ! Time to test and thanks for the amazing work !

  • RiverSoftArtRiverSoftArt Posts: 5,776

    smaker1 said:

    That's OK for me ! Time to test and thanks for the amazing work !

    You're welcome!  Please post results!

  • DaremoK3DaremoK3 Posts: 756
    edited March 2022

    @jbowler :

    First, thank you for the code study.  It was very helpful.

    Regarding that the image insert is broken;  It is not, but it is just convoluted to get the image to show at full size as intended.

    This is not the defacto - ONLY - way to insert a (near) full-size image, but the technique I have been using here for years :

    1. Once you have finished your post writing and have attached your thumbnail (but not yet inserted image, which will just be the same thumbnail as you are getting in your posts) press the 'POST COMMENT' button.

    2. Right-click on your thumbnail and open up image in new browser tab  --  copy full url address (should not be pre-post thumbnail address).

    3. Select 'Edit' post at top right of your post (I know, right?  Why the hell do you need to edit your post to insert the image correctly  --  If anyone can show this is not needed, is most welcomed  --  I would love an easier way).

    4. Create an insert point for where you want your image set at (place cursor) and select the 'image' tool in the comment toolbar.

    5. Paste the url into the 'url' section, and for 'width' - change it to 800 pixels if over 800 pixels.  Do not change 'height'  --  Forums will auto-correct ratio.  If very large image, repeat url paste on second tab (Link), and select an image view  directive  --  I set mine to open in a new window if users click on large image for full-view.

    6. Press 'SAVE COMMENT' to finish your post with the image now in-line at wanted posted size, les anything past 800 px wide which requires click to open full size viewing.

    jbowler image :

    Hope this helps, and as I said, if anyone else wishing to give a simpler solution, please do...

    jbowler_test.png
    1156 x 376 - 18K
    Post edited by DaremoK3 on
  • RiverSoftArtRiverSoftArt Posts: 5,776

    DaremoK3 said:

    @jbowler :

    First, thank you for the code study.  It was very helpful.

    Regarding that the image insert is broken;  It is not, but it is just convoluted to get the image to show at full size as intended.

    This is not the defacto - ONLY - way to insert a (near) full-size image, but the technique I have been using here for years :

    1. Once you have finished your post writing and have attached your thumbnail (but not yet inserted image, which will just be the same thumbnail as you are getting in your posts) press the 'POST COMMENT' button.

    2. Right-click on your thumbnail and open up image in new browser tab  --  copy full url header (should not be pre-post thumbnail header).

    3. Select 'Edit' post at top right of your post (I know, right?  Why the hell do you need to edit your post to insert the image correctly  --  If anyone can show this is not needed, is most welcomed  --  I would love an easier way).

    4. Create an insert point for where you want your image set at (place cursor) and select the 'image' tool in the comment toolbar.

    5. Paste the url into the 'url' section, and for 'width' - change it to 800 pixels if over 800 pixels.  Do not change 'height'  --  Forums will auto-correct ratio.  If very large image, repeat url paste on second tab (Link), and select an image view  directive  --  I set mine to open in a new window if users click on large image for full-view.

    6. Press 'SAVE EDIT' to finish your post with the image now in-line at wanted posted size, les anything past 800 px wide which requires click to open full size viewing.

    jbowler image :

    Hope this helps, and as I said, if anyone else wishing to give a simpler solution, please do...

    I never post the comment first and then edit.  At least for me, this works:

    1. Start writing your post
    2. Click Attach a file and then Choose File
    3. Right Click the image and "Open Image in new tab"
    4. Copy URL 
    5. Create an insert point for where you want your image set at (place cursor) and select the 'image' tool in the comment toolbar.
    6. Paste URL into dialog at URL line and then remove "/thumbnails" from URL
    7. Edit size as you indicated.
    8. Post Comment
  • DaremoK3DaremoK3 Posts: 756

    @RiverSoftArt :

    Okay...  Remove the "/thumbnails" from the url is the trick to not have to edit  --  Thank you.

    @jbowler :

    Just follow what RiverSoftArt posted...

  • jbowlerjbowler Posts: 652
    edited March 2022

    Here are my own timings.  I run timing tests on a fresh instance of DAZ Studio and use the Script IDE to load a scene.  The IDE outputs execution time in seconds/milliseconds and that is what is in the table here (the times are in seconds):

    Test empty DSON cache full DSON cache
    Character test
    Full content directory set 154.956 107.727
    Reduced content directory set 36.085 9.971
    TurboLoader, all morphs removed 1.877 1.326
    Scene test
    Full content directory set 215.394 145.208
    Reduced content directory set 65.910 36.902
    TurboLoader scene selection 31.223 29.475
    TurboLoader further reductions 31. 680 29.564

    Times with an "empty" DSON cache are obtained by removing the cache (deleting the whole cache directory) before launching DS.  The times for a "full" cache are the times from a subsequent invocation without the cache.  This ensures that the results are independent of any stuff in the DSON cache.

    The first set of tests are for the load of a single gensis 8 basic character, the script is:

    Scene.loadScene("<CMS dir>/People/Genesis 8 Female/Genesis 8 Basic Female.duf", Scene.MergeFile)

    (With <CMS dir> replaced by the root CMS directory where my <em>Genesis 8 Female Starter Essentials</em> are installed.)  The "Full Content Directory Set" is my entire set of products from DAZ, Renderosity and other outlets.  The "reduced" set is the set I normally use; it eliminates the vast majority of DAZ G8 characters that I own resulting in a more than ten times speed improvement for the load of a G8F (assuming the DSON cache has been built).  The last result in that set is the result of removing all morphs except the eyelashes morphs from my "full" set.  Obviously this is rather silly because I've lost the whole point of DAZ Studio by removing things like the basic face morphs, however it does demonstrate the base problem; I get an 80 times speed improvement!

    The second set of results are somewhat more useful.  I loaded a real scene (the last one I was working on before doing this timing) which is fairly simple - a character sitting on a chair - but is fully posed and expression'ed.  The scene was also dForced and I admit after TurboLoadering and then trying to reduce the morphs some more I had lost some morphs, perhaps the bend control morphs ([1], [2]) that I always have installed, this resulted in bad wardrobe poke-through.  The final set of figures is the result of that tweaking; you can see there was no benefit from it.

    There is an important caveat to my "scene" timings; because TurboLoader removes unused morphs in the "scene" script DAZ reported two missing products:

    image

    To get a timing figure I had to write a new scene after skipping the missing products (unfortunately DAZ doesn't tell me what files were missing in the dialog, but I have the log and they do all look spurious).  So all the timing figures I quote were with the modified file written after the TurboLoader eliminated morphs had also been eliminated from the scene file.  This isn't a bug in TurboLoader; the Genesis 8 Starter Essentials morphs that were needed are still included (the character expression is based on those morphs).

    The result shows that TurboLoader is better than my content-directory-manager approach where the DSON cache has to be rebuilt; I get a 3x speed improvement, TurboLoader provides a 6x (almost 7x) improvement.  In the case where the DSON cache is up-to-date TurboLoader comes out slightly ahead - a 5x speed improvement compared to a 4x for my reduced CMS approach.

    I have yet to try a hybrid approach using TurboLoader to eliminate just the DAZ G8 characters that it correctly identifies as products.  The problem with my approach is that I end up with a Smart Content view full of warning triangles for missing products.  I'm not sure what TurboLoader causes to happen to Smart Content, but the ability to do a reduced per-scene configuration seems very attractive.  It might be nice to have a script to load a scene after loading its reduced configuration; something of a major extension to TurboLoader because it would effectively take over the DAZ open functionality.

     

    Shakti scene missing files Screenshot 2022-03-28 121635.png
    680 x 860 - 105K
    Post edited by jbowler on
  • RiverSoftArtRiverSoftArt Posts: 5,776

    jbowler said:

    Here are my own timings.  I run timing tests on a fresh instance of DAZ Studio and use the Script IDE to load a scene.  The IDE outputs execution time in seconds/milliseconds and that is what is in the table here (the times are in seconds):

    Test empty DSON cache full DSON cache
    Character test
    Full content directory set 154.956 107.727
    Reduced content directory set 36.085 9.971
    TurboLoader, all morphs removed 1.877 1.326
    Scene test
    Full content directory set 215.394 145.208
    Reduced content directory set 65.910 36.902
    TurboLoader scene selection 31.223 29.475
    TurboLoader further reductions 31. 680 29.564

    Times with an "empty" DSON cache are obtained by removing the cache (deleting the whole cache directory) before launching DS.  The times for a "full" cache are the times from a subsequent invocation without the cache.  This ensures that the results are independent of any stuff in the DSON cache.

    The first set of tests are for the load of a single gensis 8 basic character, the script is:

    Scene.loadScene("<CMS dir>/People/Genesis 8 Female/Genesis 8 Basic Female.duf", Scene.MergeFile)

    (With <CMS dir> replaced by the root CMS directory where my Genesis 8 Female Starter Essentials are installed.)  The "Full Content Directory Set" is my entire set of products from DAZ, Renderosity and other outlets.  The "reduced" set is the set I normally use; it eliminates the vast majority of DAZ G8 characters that I own resulting in a more than ten times speed improvement for the load of a G8F (assuming the DSON cache has been built).  The last result in that set is the result of removing all morphs except the eyelashes morphs from my "full" set.  Obviously this is rather silly because I've lost the whole point of DAZ Studio by removing things like the basic face morphs, however it does demonstrate the base problem; I get an 80 times speed improvement!

    The second set of results are somewhat more useful.  I loaded a real scene (the last one I was working on before doing this timing) which is fairly simple - a character sitting on a chair - but is fully posed and expression'ed.  The scene was also dForced and I admit after TurboLoadering and then trying to reduce the morphs some more I had lost some morphs, perhaps the bend control morphs ([1], [2]) that I always have installed, this resulted in bad wardrobe poke-through.  The final set of figures is the result of that tweaking; you can see there was no benefit from it.

    There is an important caveat to my "scene" timings; because TurboLoader removes unused morphs in the "scene" script DAZ reported two missing products:

    image

    To get a timing figure I had to write a new scene after skipping the missing products (unfortunately DAZ doesn't tell me what files were missing in the dialog, but I have the log and they do all look spurious).  So all the timing figures I quote were with the modified file written after the TurboLoader eliminated morphs had also been eliminated from the scene file.  This isn't a bug in TurboLoader; the Genesis 8 Starter Essentials morphs that were needed are still included (the character expression is based on those morphs).

    The result shows that TurboLoader is better than my content-directory-manager approach where the DSON cache has to be rebuilt; I get a 3x speed improvement, TurboLoader provides a 6x (almost 7x) improvement.  In the case where the DSON cache is up-to-date TurboLoader comes out slightly ahead - a 5x speed improvement compared to a 4x for my reduced CMS approach.

    I have yet to try a hybrid approach using TurboLoader to eliminate just the DAZ G8 characters that it correctly identifies as products.  The problem with my approach is that I end up with a Smart Content view full of warning triangles for missing products.  I'm not sure what TurboLoader causes to happen to Smart Content, but the ability to do a reduced per-scene configuration seems very attractive.  It might be nice to have a script to load a scene after loading its reduced configuration; something of a major extension to TurboLoader because it would effectively take over the DAZ open functionality.

    Sweet!  Thank you so much for sharing!

  • jbowlerjbowler Posts: 652

    RiverSoftArt said:

    [DIM updates]

    The ideal way would be to re-enable the morphs, install update, and then disable.  However, the Turbo Loader Manager is set up to overwrite the existing .tlOff files. 

    IMO there should be a "reset" button to clear all the tlOff files.  I tried running the "reset morph dir" command; it seemed to succeed but it actually didn't rename anything because I ran it in the parent directory of all my DAZ CMS installation directories.  I had to select the CMS directories one-by-one to get a complete reset.  I also found that if I wasn't cautious about saving the state I could, somehow, get into a situation where TurboLoader did not know about some of the tlOff files, even though I have only ever run it on G8F and G8F eyelashes.  I think it was something to do with re-scanning a G8F after the first scan; this seemed to find extra, perhaps recently exposed, morphs.

    Quite apart from DAZConnect I've also observed duplicated assets as a result of duplicated products; I examined one of the pose products I have and found it was in both the DAZ3D (CMS) store and LOCAL_USER.  At that point I just said AAARGH and stopped.

    Content Wizard: my test scene was based on a Thwaites character installed using Content Wizard, so I tried a couple of things to see why the body and head morph assets weren't mapping to a product.  It seems possible that the issue is that the runtime support files list is empty; I checked using the studio Content DB Editor and there were no runtime support files listed for the CW generated product.  The product was in LOCAL_USER but, IRC, CW asks for enough information to generate a separate CMS store (BTW, I'm just hypothesising based on the very very poorly documented Qt Script APIs...)

  • jbowlerjbowler Posts: 652

    RiverSoftArt said:

    Sweet!  Thank you so much for sharing!

    It's ok.  I'm a compulsive obsessive computer programmer; I debug.

  • RiverSoftArtRiverSoftArt Posts: 5,776

    jbowler said:

    RiverSoftArt said:

    [DIM updates]

    The ideal way would be to re-enable the morphs, install update, and then disable.  However, the Turbo Loader Manager is set up to overwrite the existing .tlOff files. 

    IMO there should be a "reset" button to clear all the tlOff files.  I tried running the "reset morph dir" command; it seemed to succeed but it actually didn't rename anything because I ran it in the parent directory of all my DAZ CMS installation directories.  I had to select the CMS directories one-by-one to get a complete reset. 

    I wanted to have a reset that did not depend on TL not getting confused and forgettings, something that would work no matter what.  So it is not as user friendly but more fool proof.

    I also found that if I wasn't cautious about saving the state I could, somehow, get into a situation where TurboLoader did not know about some of the tlOff files, even though I have only ever run it on G8F and G8F eyelashes.  I think it was something to do with re-scanning a G8F after the first scan; this seemed to find extra, perhaps recently exposed, morphs.

    Quite apart from DAZConnect I've also observed duplicated assets as a result of duplicated products; I examined one of the pose products I have and found it was in both the DAZ3D (CMS) store and LOCAL_USER.  At that point I just said AAARGH and stopped.

    Not sure what you mean here. 

    Content Wizard: my test scene was based on a Thwaites character installed using Content Wizard, so I tried a couple of things to see why the body and head morph assets weren't mapping to a product.  It seems possible that the issue is that the runtime support files list is empty; I checked using the studio Content DB Editor and there were no runtime support files listed for the CW generated product.  The product was in LOCAL_USER but, IRC, CW asks for enough information to generate a separate CMS store (BTW, I'm just hypothesising based on the very very poorly documented Qt Script APIs...)

    Based on TL, I realize CW could be improved.  I think that will have to wait for a CW follow-on though.

Sign In or Register to comment.