Is there a thread about "character bloat"?

in The Commons
What I mean is that every new character you install onto a figure...say, G8F...loads its morphs every time you use the figure. That means that over time, the figure gets more and more bloated, takes more and more time to load and uses more and more resources.
Has there been any discussion about this issue and is there any work around for it?
Comments
There has been lots of peripheral discussion about it, but I can't think of the threads to point you to. I don't think there is a dedicated thread for it. It is a real phenomenon, and I have not heard any fix for it other than uninstalling the characters that you don't use. I have just accepted it, along with Daz Studio's clunky performance, as the way things are, along with erratic QC standards.
I just install my faves and leave the others uninstalled until I think I need then. I've not found any other way around the ridiculous load times.
Laurie
Morphs are not actually loaded into a Genesis figure at first. Daz Studio dynamically loads and unloads the morphs when you adjust the dials. But It does take a short while to load a Genesis figure into your scene depending on how many morphs you have for it. I have noticed in the past that on the very first load it takes the longest but after that it takes less time as some of the information is cached.
Yeah, it can get pretty awful after a while, and the constant onslaught of G3 and G8 characters for two to five bucks a pop certainly hasn't helped... I use my G2 and Genesis figures for background characters a lot simply because I have fewer of them and they load so much faster than the G3s and G8s. I'm also trying to only buy new characters now when they get super-mega-discounted or if they come in set with unique added fetures like dirty skins, unique hairs or clothing, as I really have more CG females than I could ever possibly use. What DAZ really needs is to have a seperate outboard content organization system where the products can be qued up and viewed as if fully installed, but not be counted in the initial load-in, something like how a prop can be pulled over via P3DO and loaded directly in a scene. But I doubt that will happen unless a PA develops something like it first, as convenience and efficiency don't seem to be a DAZ programmer priority given that every new update to DS lately seems to make Studio run slower and slower. In the meantime, my current long term plan is to start using one computer exclusively for nothing but character building, and then transfer ONLY the completed characters with just the new morphs and textures they require, to my main computer which does everything else.
one solution for extras if regular characters is convert them to props then rig them with autofit, can add a couple expressions using morphloader too
I think it at least partially depends on how many character you have and how many have HD assets. G8 figures tend to load a LOT slower than G3s, which I partly attribute to the fact that there are a lot more G8 characters where the base load includes HD morphs.
Search for "character load times site:daz3d.com" in google without the quotes.
It doesn't matter whether or not they load on the character; they load into Daz Studio, and that's what causes the delay. My G8 characters take forever to load, whereas G2 characters, of which I only have a handful, load much more quickly. Janna, for which I have zero additional morphs, loads instantly.
AFAIK, those morphs do not load into DS, but the references to those morphs do, otherwise the dials wouldn't show up when you select the model in the scene. And searching the content directories for those references just needs its time. So yes, the more characters and morph packs you have installed for a model - like G8F - the more time your system/DS will need to find them. There is another thread going (though I haven't got the link ready) that discusses this or going back to the old system used with V4/M4 for injecting only the morphs needed. Both ways have their pros and cons....
I believe that’s exactly the point Sevrin was making: that whether or not the morphs “load” is a distinction without a difference if the end result is still a longer load time
True, but my point is, is there a viable alternative? (And if the morphs themselve would load, then apart from the longer loading times alot more resources/memory would also be used.)
DS takes a buttload of memory, and it uses a lot of resources, and that only increases with the size of your catalogue. The morphs do load, not just their names. Whether or not they load on the character is an academic debate. I don't know what the solution might be, but for a company that makes its money out of selling assets, you would think they'd perhaps not want to penalize people for installing the assets they purchase?
If they're looking for ways to improve Daz Studio, that would be a good thing to look into.
Make a test.
Start DS, load the base figure.
Once the figure is loaded, remove or rename the morph-files in your Content/Data... DAZ 3D/...
Does the morph still work?
If it does, it proves that the morph deltas have been loaded into the memory with the figure, and they remain even after the morph has been removed.
If the morph deltas were not loaded with the figure, DS would need to read the deltas the moment you move the dial in any direction - This would result in slower response.
I would think the whole file would be read in (presumably it just reads in the whole thing and uses the JSON parser on the resullt) but the detas are jettisoned until needed.
There are also charactes with morphs saved in the pose section, expressions saved as morphs, tons and tons of junky expressions as pose dials, the list goes on. I tend to get fed up and prune back stuff in the data folder. This inevitably makes things go faster. When I need a specific character, I can redownload them. I leave all their skins and accessories alone.
It is for sure that a morph dial doesn't work if you remove the attached file from the morph folder before the first time you use it, so that would mean the morph hasn't actually been loaded yet. However, that doesn't get around that fact that the more characters you have installed the longer it takes to load the figure, save the character preset, or any other load/save function the involves the character. Also, it's very time consuming when you are looking for a particular morph, don't remember its exact name, and have hundreds if not thousands of morph dials to go through.
I would think it would be a much better idea to have only a certain number of base morph dials that load with the figure and all the rest only load with specific "morph injection" files that come with each character or package.
More than a little cynical of me, but perhaps this may not be a 'priority' for them, as when the next character comes out - assuming it doesnt suffer from the same issue - this will magically just happen to be another reason to upgrade :/
I had load times of > 10 minutes. I'm back to 1-2 minutes. Some things to consider:
- Number of runtimes. I used to have 2-3 with data folders and morphs spread all over the place. Does not speed up things so I reduced to one.
- Location of runtime. I used to have an external drive for my runtime. I switched to an external SSD. Had to deal with the reduced amount of space but the SSD made things noticeable faster.
- Products causing longer load times. Not sure so I don't want to blame anyone. But I think removing the Auto Shape Enhancer / Auto Face Enhancer products made loading G8F faster.
- Remove unnecessary products, at least temporarily. You don't even have to uninstall via DIM. Just check your data folder data/DAZ 3D/Genesis 8/Female/Morphs and .../Projection Morphs. Move some unused figure/morph folders to another location. You can always move them back if you need a particular figure or morph.
The Runtime folders inside Daz Studio content directories don't have a data folder inside them.
I think "Runtime" might be lingo from Poser, I think it probably just means "Content Library" in this case. *shrug*
In the old days, way back at generation 3 - M3 and V3, you had to option to only load the morphs you wanted or need to the base, and you could apply or remove said morph at any time. Thems were the days.
Let me inject some history into this discussion, as the people who designed the way morphs are loaded on the Genesis figures had already been through all the previous iterations and designed it with the knowledge of what the pros and cons of the earlier systems were.
The "Millennium Woman" and "Millennium Man" (Vicky 1, Mike 1, and their cohorts) were before my time, but my understanding was that they pretty much had no morphs.
V2 and M2 were the same .obj files as their predecessors, but with morphs built into the .cr2 file (Poser-format character or figure). You couldn't add new morphs -- if you wanted them to have more morphs you needed a new .cr2 file. So when you loaded the figure, the morphs were loaded too -- not just the name of the morph so you could display the dial, but all the morph data (the delta for every vertex on the figure).
On the 3rd generation figures, they took advantage of a kludge using .pz2 files (Poser-format poses) to inject morphs into a figure. The .cr2 had to have the morph channels, but the vertex deltas were in separate .pz2 files. There was typically an inject and remove .pz2 for each morph, plus ones that loaded multiple morphs -- all head, all body, all arm, all leg, etc. So the .cr2 didn't take as long to load, but you had to inject the morphs you needed. However, you were still limited to the morph channels in the .cr2 -- there were channels for each of the Daz3D morphs, and some extra channels (I think 30?) for 3rd-party morphs. So you had an extremely limited number of morph channels you could use, and if a 3rd-party product used community-channel 23, you couldn't combine it with another 3rd-party product that used that particular channel. The channel to use was hard-coded into the .pz2, so it couldn't just use whatever channel was available. If you wanted to add a lot of morphs, you again had to make a new .cr2.
(Consider, by the way, that we're talking about a small number of total morphs -- maybe 100-200 Daz3D morph channels plus 30 extra channels -- not the thousands of morphs we're talking about here.)
So for the 4th generation figures, Daz3D developed the "Extensible Parameters" (ExP) system, so that you weren't limited by the morph channels built into the figure. When there was a new product, it could add as many morphs as it needed, and they weren't sharing 30 pre-existing slots. However, it had a couple of complications: When you added a new product you needed to "initialize" Vicky or Mike with the new morph channels. This set up the channels, so the dials were loaded with the figure, as they do with the Genesis figures. However, you still needed to use a .pz2 file to inject or remove the morph deltas. If you made a character and then you bought a new set of morphs, you couldn't easily add the new morphs to the character the way you can with the Genesis system. If you tried to make V4 load faster by leaving out some of the morph packs, and then you decided you needed them after all, you were out of luck, You needed to save a .pz2 with the morphs you used, then re-initialize V4 with the extra morphs, then go through the whole process of loading a new V4, injecting the morphs, and then applying the .pz2 you had saved.
To make things easier, Daz3D developed the Powerloader. When you wanted to load V4, the Powerloader would pop up, and you could select which morph packs or individual morphs you wanted to inject. You could even tell the Powerloader to do the "initialize" step, with either all the morphs or just the ones you had asked it to load. This made things a whole lot easier, with much less risk of forgetting to do something. However, even with the Powerloader, it took a long time for the figure to load.
So Daz3D developed a new system for Genesis, with most of the pros and few of the cons of the previous systems. Genesis 1 loads much faster than V4, even when you have lots of morphs. You don't need to initialize the figure every time you add a new morph pack, you can still have an unlimited number of morphs, morph deltas load automatically when you move the dial so you don't have to inject them manually, and the whole process is much faster.
So what's happened since then? I don't know what Daz3D has been doing behind the scenes to speed up the process, as it's all done automatically, unlike the pre-Genesis days. As you can see from the history, Daz3D does care about improving the way morphs are handled, and is keenly aware that customers want the process to be easy and fast. There are a couple of technology changes since then, and I don't know how each one factors into the time required to load the figure:
1) Switch from Triax to Dual-Quaternion weight-mapping
2) Switch from morphs to rigged bones for facial expressions
3) Addition of HD morphs
4) Much larger textures and more complicated materials
Now, I have no idea what Daz3D is working on to speed up the loading process, but based on history they probably are.
Thanks for the detailed background. Yes, I've no doubt that Daz is aware that this has become an issue for many of us. It's not the end of the world, but once you have a big library, it's noticeable, and having us spend time pruning isn't ideal.
I found that having characters converted from previous generations GREATLY slowed down my loading of G8.
Yeah, this is when I started seeing the giant slowdowns...when the RSSY converters came out for G3 to G8. I also have XTransfer but I had issues with it so it's been uninstalled. I honestly would ditch the G3 to G8 converter entirely, but I have a few "main" characters that have been converted and I don't want to lose them...and their emoting with G8 is *so* much better so staying with G3 just wasn't an option. There's no way I can reproduce them with just dial-spinning G8 as the 3rd party morph packs I used to create them are different.
I'm not blaming the converters...I just think it's the nature of the beast.
...didn't using bones instead of morphs for expressions start with G8? I'm still using G3 and even with legacy morphs via GenX2 loading a character doesn't take very long at all.
Thank you, @Fixmypcmike
That's what I thought too.
There were bones in G3's facial morphs, but not as many as there are in G8. Ironically, I think this is one of the biggest flaws of G8, as some of the expressions that result from the extra articulation can look very unnatual because real facial expressions are the result of muscle and tissue sliding smoothly over the skull, not flexing at bone "points". The horrific "joker" smile effect, in particular, is the direct result of the upper lip bending at a hard fixed point in the center in a way that a real mouth could never duplicate.