Adding to Cart…
Licensing Agreement | Terms of Service | Privacy Policy | EULA
© 2025 Daz Productions Inc. All Rights Reserved.You currently have no notifications.
Licensing Agreement | Terms of Service | Privacy Policy | EULA
© 2025 Daz Productions Inc. All Rights Reserved.
Comments
So, if I understand correctly there exists a many-to-many relationship between morphs(shapes and poses) which are classified as sub-components(downstream dependencies) and controllers(upstream dependencies). And since this relationship is not maintained in a normalized fashion centrally, it necessitates scanning of all relevant morph file resources everytime a character is loaded. What if the building of that relationship graph for morphs could be centralized and normalized in the CMS itself in relational tables? Loading a character would trigger a one-way traversal of the graph and fetch only the relevant morphs (i.e. fetching only sub-components). We don't have to worry about loading all associated controllers unless that associated controller was explicitly added to the scene directly or as a sub-component of another explicitly added morph.
Creating the many-to-many dependency graph in the CMS could be triggered manually or automatically whenever new characters or morph packages are installed/uninstalled.
Does someone know how to fix the "Failed to create alias" respectively how to identify the responsible file ?
Removing files step by step from "data\DAZ 3D\Genesis 8\Female\Morphs" is no option with so much content LOL
What about third-party content that doesn't come with metadata?
Sadly no, the two log entries I've seen both show that error right before DS does "Begin Loading Character Addons", so it doesn't even give you a hint as to where in the load order it's happening.
Lets not forget about those of us that don't use metadata and regularly delete it.
All the required morph metadata(such as label, path, default values, sub-components, controllers, keys etc) is already available in the individual morph files irrespective of whether they are released by Daz or any third-party store. And that information is sufficient to populate the morph and relation tables in the CMS. So we would need these 3 changes:
1) Replace the file scanning strategy to load the morph relationship and other metadata from the CMS on character or scene load. Morph deltas would still need to be read from file.
2) Provide a functionality such as "scan for morphs" which can also be invoked manually using a menu option or button that loads the morphs metadata into the CMS by scanning all morph files in the content library. This is the only functionality that would allow morphs to be read from files (except for loading deltas, of course). This funtionality needs to be triggered every time there is:
a) Change in content library paths
b) Installation/removal of any morph packages
c) Installation/removal of characters
3) Provide a universal context-aware morph browser (whose structure would be similar to the shapes pane but acts like a content library for morphs). This would allow the user to search/navigate for desired morphs and manually add them to their characters. The morph browser loads its content(i.e. morph metadata) only from the CMS so there is no performance impact due to file I/O(except for morph display icons). Morph browser only facilitates adding morphs to a character but morph removal needs to be addressed separately. Removing morphs functionality would check whether that morph is a sub-component of any other morphs (i.e. check its own controller entries). If that check passes (i.e it has no controller entries), it can safely be removed from the character and but would not remove any of its own sub-components which could also be sub-components of other installed morphs. It would only remove its own controller entry from those sub-components. So, a morph which is not explicitly added by the user and does not have any controller entries can be safely deleted/removed from the library or a loaded character.
This approach would give us the following benefits:
1) Less number of morphs to process - DS would only process the morphs that are part of the "minimum viable set" plus any that has been explicitly added by the user (or added implicitly by traversing its sub-components hierarchy) to a character.
2) Significantly faster character and scene load times - Not only DS would be scanning for fewer morphs every time a character or scene is loaded but fetching the morph metadata from the CMS. This way DS would avoid extensive morph related file I/O unless morph deltas need to be loaded.
3) Preemptive morph dependency validation and error checking - Morph dependency and validation would be triggered only when the functionality for "scan for morphs" is invoked rather than every time a character or scene is loaded. This would facilitate early detection and reporting of errors in morph metadata which can be acted upon before those erroneous morphs gets added to characters in scene. This would result in better scene integrity. The effect of morph deletion/removal from the file system on an existing scene can be handled by validating the morph data from the scene with that in CMS when the scene is being loaded. So it is imperative to trigger the "scan for morphs" functionality every time morph packages or characters are removed/uninstalled.
Challenges:
This approach decouples the file based morph metadata access from the character and scene loading process which enables faster load times for characters and scenes. But the efficacy of this approach depends upon the triggering of "scan for morphs" functionality which needs to be automated and reliably triggered based on #2a,b,c above. Changes in content library paths are supported only inside the DS. DIM and connect would already know when to trigger. Which leaves us with manual installation/removal of morphs, in which case, the user has to manually trigger that functionality (from a menu or button) similar to what would be required for manually adding smart content.
This approach should address manual addition and safe removal of shape and pose morphs which I believe constitute the bulk of all morph files. Simulation and smoothing morphs are already being added manually. Which leaves us with corrective morphs, which I assume can be adequately handled by the above approach unless you think I am missing any of their unique characteristics.
The ad hoc deletion or any scope of corruption of metadata can be addressed by manually trigerring the "scan for morphs" functionality as a menu option or button as described here.
I'm not at all sure a reliable scan fr new items would be more efficient than the current system, and I suspect we'd end up asking "Have you run the scan for new morphs?" the way we used to ask "Have you run the DzCreaeExPFiles-v4 script?" in every thread on morph issues.
I could have suggested an additional checkbox under "Content Database Maintenance" or may be, as an option in Preferences > Startup but that wouldn't be necessary. For typical scenarios, such as adding/removing morph related content using DIM/Connect would automatically and transparently trigger a partial addition/removal of morph metadata similar to how the typical content metadata is handled presently.
Outside of DIM/Connect there are couple of ways:
1) Third party content which are installed as DIM packages (i.e. with package metadata) would not require a full scan and the morph metadata in those packages can be scanned incrementally and transparently just like the typical content without any additional manual intervention.
2) Third party content which do not have any package metadata or are distributed in exploded format would necessitate a full scan for morph metadata within the content. We can incorporate the "scan for morphs" option into the existing "Refresh" context menu option. Then the scan could be "transparently" triggered whenever the user refreshes the content library folder inside DS, which they would have to inevitably perform for reloading the manually added content. Since the refresh menu option is path aware, it would reload the morph metadata from the morph files visible under the folder where it is invoked. That way the user wouldn't have to invoke any additional "scan for morphs" function (as a menu or script).
So, that leaves us with no further risk of the user missing out on the invocation of "scan for morphs" action. You may consider the capability of manually running "scan for morphs" a redundant option now :)
P.S. In case you are wondering what would happen if the user decides to restart DS without refreshing the content library folder, you can always suggest them to manually refresh that folder using the refresh context menu instead of asking them to run any script or any additional menu option.
P.P.S. I wish there was an interactive wiki which could enable me to take these questions and incorporate their resolution into my original suggestion, but I guess this would have to suffice.
You can make a feature request via https://www.daz3d.com/help/help-contact-us
Thank you all for the active and lively discussion....I deleted a few things and the loading time is now down to 6 to 7 minutes for genesis 8 and about 8 minutes for genesis 3. On Genesis 8 I noticed an HD product is auto loaded. I suspect this is an assets and can be deleted from the data folder. However, it might be needed for a another product. I remember there were several post about zeroing the "auto load" morphs and then saving the base figure. Is that a thing or am I remembering wrong?
Yeah you fix it that way, or by editing the duf for it in the data folder with a text editor, and setting the default from 1 to 0.
Hi TheKD,
Would you happen to have a link to instructions on how I might edit the Duf file? As for morph asset, do I just zero out the autoload HD morph and resize it over the old file?
If you know the product that is causing the issue, the easiest way, go to the installer zip into the data section, that will tell you exactly where to look in your library data folder to find the offending file. Usually, especially if gotten in daz3d store, you will be looking in data > daz 3d > Genesis 8 > female > morphs > *vendor name* > *character set name* The one you want to edit should have FBM in the name.
Before starting, I recommend you copy paste the file somewhere safe like desktop, just in case you goof up and need to try again. Right click the file, open with > your preferred text editor. Now, if it looks like gibberish, that means it is compressed. You can decompress it inside studio, go to window > batch convert. In that pane push add files button, navigate to the file, then click apply. It should now be human readable in the text editor. It makes it easiest, if you use something a bit more advanced, like notepad++ is what I use. Control F to bring up search, and search for 1. Look with search for a line that says:
"value" : 1
Change the 1 to 0, save the file, and that should be all there is to it. Open a fresh daz studio session, and load in the figure to see if it did the trick.
I forget how to save the zeroed out morph properly from inside daz studio to fix it, someone else will have to help with that method. I find it easiest to use the text method.
I see your point, but to me, most of my morphs are useless unless you are using that character. Sometimes I might get a character just for the skin or eye material. I don't want that character's morphs to load if I am never going to use the morphs. Also I have a G8F and a G8M character preset that I use for every project and then add the material and then load the morphs. I usally use the parameters tab and the sliders to add morphs to the character. At first I spent like 30 mins going through the data file and selecting the morphs that I don't want. But now. I buy a character I place the morphs in another folder and if I want that character's morphs I move it back into the data folder. It doesn't consume that much time and my figure takes up 1.5 GB of RAM and it takes 5 secs to load.