Why do DAZ Characters take so long to load?
May 7, 2020 May 7, 2020 - by Jay Versluis
I've had this question twice recently, and it's another interesting nugget of information I thought I'd share with you: why do DAZ figures take so long to load? Especially the no-frills base figures? And why does this only happen for some users, and not for others?
The two guys who contacted me about this (Richard and Hans-Werner) both had large amounts of content installed on their systems, and the first logical question is, could a different organisation of the content speed up the figure loading process (i.e. move content to another drive, or split content into multiple folders). The answer is: sadly no.
Likewise, a faster drive won't make much of a difference either, be that an SSD or an even faster M2 drive. Those are great of course, and they will speed up content load times in general, but the root issue of excessive load times with DAZ figures are morph files.
DAZ Characters are a combination of Morphs and Textures
Every time we install a new custom character, a new file is added to the base figure. That's essentially the morph we can dial in with a slider later. As an example, say we had the Genesis 8 Basic Female, and we'll install Victoria 8 on top of that, it will add a "Victoria 8 morph" to the Basic Female figure. When we dial it in, we see the shape of Victoria 8.
The same thing happens even if we double-click on Victoria 8: what really happens is that the Basic Female figure is loaded, and that morph slider is set from 0 to 1. In addition, the skin texture and shaders of Victoria are applied, replacing those of the Basic Female. It's the same for every custom character, no matter if it's made by DAZ or another content creator like the venerable Fred Winkler or 3D Universe, regardless if the content is purchased from DAZ or another marketplace.
As you install more characters for a figure, the more of these Morph Targets become available. For example, in addition to Victoria 8, we may also have Tasha 8, Teen Jane 8, Sydney 8, Bridget 8 and so forth, each of which will install at least one body and one face morph, sometimes more. Although the texture files take up the larger portion of the installed assets, they don't contribute much to the load time, because textures are only loaded for a single figure when it's displayed. For example, the Victoria 8 texture is only loaded when you load her, while the Sydney textures remain untouched.
Morphs on the other hand are a very different beast, and here's where it gets interesting. Each of the morph sliders you find in the Parameters Tab represents a separate file that DAZ Studio needs to load as it reads the base figure, even when these morphs are set to zero. This means that even though you're only using a single character in your scene (and a single texture set), the morph sliders for other characters are still in your figure.
In the above screenshot you'll see the full body morphs that are available on my current system. Although I've only got Karen loaded, I could tweak her to my heart's content with the other available sliders. Each figure generation has their own morphs of course, so figures installed for the Genesis 3 base figure won't influence the Genesis 8 base figure (this may seem obvious, but I thought I'd point out).
Wait! It gets much worse!
Character morphs are not actually the real killer of loading times. Even if you had maybe 100 custom characters installed, and if we imagine a generous 1 second load time per file, that's perhaps 200 seconds, or just over 3 minutes. Not that bad really. But what if you have to wait much longer to load a figure than that? Or what if you only have 10 characters installed and you're still waiting longer than 5 minutes? How do we explain something like a 10 minute load time or… dare I say it… an hour?
Sadly, anything that adds a morph to a base character adds additional files to the figures. Think about expressions, muscle morphs, all those ageing products, adjustment morphs, breast shaping gadgets, literally anything that creates a slider in a figure will create additional data, and all that data needs to be loaded with each figure. Every single slider is one file, and each file must be loaded during the figure setup – irrelevant if you're using it or not. Think about the amount of sliders and adjustment morph package will create, there are literally hundreds of sliders as a result.
Although each of those files is a mere few kilobytes and very easy to load by itself, it's the sheer amount of them combined that causes a delay in loading times. Think 1000 files, loaded at 1 second each, and we're already at a hypothetical 15 minutes.
Where are these files stored?
Any of our morph files are stored together in the data folder of the respective figure. For example, morphs for the Genesis 3 Female figure are stored here:
My DAZ3D Library/data/DAZ 3D/Genesis 3/Female/Morphs/
In there you'll find a folder for each vendor, and in each folder you'll find a folder with a product or character name. Here's an excerpt of my Karen 7 folder (this alone contains 68 items):
Take a look at your own library folder and see the files that are stored for your characters. You'll find a separate file for all your sliders, usually with an interesting file name. If you're game, try opening one with a text editor and take a peek inside. They're technically JSON files that tell DAZ Studio where to display the slider, who made it, and what to do when used (as in, which vertices need to be shifted in 3D space).
Making Loading Times Great Again
The obvious question of course is, "how can we speed up DAZ character loading times when they're beyond usable"? Sadly the only one way to make that happen is to load less files. This means uninstalling some of the content you are currently not using I'm afraid. You've read that right: many of the hundreds and thousands of dollars you've spent may have to remain uninstalled, until you're ready to use them for a project.
Thankfully, Install Manager makes that relatively easy, provided the content has been purchased from DAZ directly. Remove what you don't need, then bring it back any time in the future.
There are of course major disadvantages to to working like that: users with slow internet connections will have to wait for their content to come back. That aside, it severely hampers our creative endeavours, as we can't delve into a plethora of figures, adjustments and sliders. Content from other marketplaces has an even bigger issue, as the content can't be uninstalled that easily. You'll have to manually hunt for the files, unless you've converted each ZIP into something that Install Manager can make use of (here's a great video by DreamLab on how to do this).
While this is probably not what you wanted to hear, uninstalling morph products is the only way I know how to keep your load times to something along the lines of usable. It's a flaw in the way DAZ Studio loads content, and I wish there was an easier way.
Perhaps a script could be devised that disables morph files from being loaded with each figure (I believe we used to have such an option with Victoria 4 and her Power Loader tool, letting us selectively enable/disable morphs before the figure was loaded). Or perhaps it's enough to temporarily rename folders with certain unused morph files, so DAZ can't load them unless we let it, so that content can remain on the hard drive. I've never played around with it though, but do let me know if you have any experiences with such experiments.
That's all I know about morph files, and why systems with a lot of installed content really bog down with excessive loading times. I can imagine it won't do wonders for memory consumption either. I hope it was helpful to shed some light onto the "why" of the issue.
The only other tip I can give you is to plan your scenes, then install the content you need for it, and then get to work. Slim down your working system, yet keep a "bible" of sorts with content you have available. Flick through it every once in a while to get inspired of what you might want to use in a scene.
If you have any questions, leave a comment below.
Filed under: Categories 3D, DAZ Studio, Reader Questions Post navigation
How to make clothing for DAZ Studio (in principle)
4 thoughts on "Why do DAZ Characters take so long to load?"
Gavin S
Hi Jay, Many thanks for another interesting article. It all makes sense now you've explained it, I had no idea it would work that way. It would be great if someone could write a script to activate unused morphs "on the fly" after the character is loaded, rather than loading them all on initial character creation in the scene. It's strange Daz decided to do it this way, perhaps they surely would know that users would have dozens or hundreds of morphs installed as their library collection expands. Perhaps this could be a huge performance boost for version 4.13 if they could change how this works, if its technically possible of course.
Jay Versluis
You're very welcome, Gavin. I have a feeling they never imagined there might be THAT many morph products for a single figure when they created Genesis. This has been a problem since Genesis 1, and even since Victoria 4. Back in those days there was indeed a tool called Power Loader (I think), it comes up when you load the character and allows you to select/deselect the morphs you wanted to use with the figure. We need something like that for Genesis.
I've had some feedback from the German video and am currently investigating if there is an easy way to remove unused morph sliders temporarily. I'll let you know if I have any success and include it in the English version of the video.
Bluesirius
Typically I mix a few characters I like to make one of my actors. Then I send the actor to hexagon and bring back as a "clean" morph. Now as per above I can/could use Install Manager to remove these base characters as my new hexagon bridge morph has made a simple unique morph. If it passes muster and does not mess up rigging I color code and give it an icon.
Some of the character I have purchased have controls that turn on 10's of others. I sort of hate this: again making my own clean 1 control morph for the head and body of these keeps my "currently used" morphs in Parameter tab down to a few.
That's a great way of saving on additional morphs! Thank you for sharing 😉