@ BlenderNuub Very interesting the tests. I confirm the animation in the viewport is close to unusable. I would be very interested too in a solution or a workaround.
If you have turned on simplify with ā0ā for the viewport not the default ā6ā and checked that no other modifiers are on, like cloth or collision, this includes all object not just the animated model, and you still have low FPS; then you will need to animate in a blank scene.
Start a new file with only the object you want to animate, simplify still applies,and then link objects that interact with the animation i.e. floor, door, cup, until you are done with said animation.
Then you can save and append that animation back to original or link more object back into to the new scene.
If thatās still an issue you maybe on too low spec of a machine. I animate in blank scenes with Rigify and can almost always hit 60fps, and thatās on a mac.
Tim
If you have loaded many expressions it may slow down your rig quite a bit. Each expression drives ten face bones or more, and usually three translation channels for each bone, and sometimes rotations too. If you have a hundred expressions/units/visemes, that makes several thousand terms to evaluate each frame. It doesnāt matter if the value of a property is zero or not, the term constant*value is still evaluated. Testing if value == 0 would take even more time.
One could introduce a button which turns off all face bone drivers temporarily while you do the body animation. That should improve viewport speed when you perfect the body animation.
Or perhaps you donāt need to load all expressions. Loading expressions that you donāt use will only slow the rig down. Of course, it might not be so easy to know in advance what you need.
The thing is, my viewport slows down even if I only load the face units alone. The face units are very useful in my opinion because I hate manually animating face bones. I guess I could try identifying only the exact face units I would need for most animations, but I like having options so I would kind of be limiting myself by doing so.
The button that turns off face bone drivers sounds interesting. I think that could be a potential workaround in my case. I donāt know how to code python but maybe I can experiment with manually turning all the drivers off and see if that improves viewport speed.
I should mention for all of these tests I loaded all of the default units/expressions, that is, I didnāt load any extras through Import Custom Morphs.
There is now a new button that temporarily disables all face drivers. Indeed it makes a difference:
Rig, mesh, drivers: 3.0 fps
Rig, mesh: 3.2 fps
Rig, drivers: 14.5 fps
Rig only: >25 fps
The disable drivers button is found to the upper right in the morph panels:
Everything morph-related is hidden when drivers are disabled, so you wonāt miss the enable button.
Hello to all experts !
There is this thread in the daz forums
where the user [cire992_5c76c5ca30] gives a method to reach rigged hd Genesis meshes - in 3dsmax. I will post his/her original text below.
Could this method be adapted somehow to Blender? Could the ideas be useful for the Daz Importer?
Here comes that post:
TLDR: This is how I got a SubD Smoothed Genesis 3 figure into Unreal Engine with working hd morphs and weightmaps.
Problem: I want to animate a SubD Smoothed Genesis figure outside of Daz Studio without losing morph resolution.
Solution (Summarized): Use Transfer Utility to create a rigged high resolution duplicate of Genesis (or any figure with subd levels). Export that to FBX and import into 3ds Max. Save its weight maps to file. Then, dial up your character in Daz Studio, and lock the SubDivision Level Parameter, setting the minimum resolution to the level you want to export at. Export that figure to FBX, then load it into 3ds Max. Load the previously saved weight maps from file to apply on your finalized figure. This process is a one-off. Once you generate that weightmap file, you can skip the first two stages in the procedure below.
Solution (Details):
Stage 1: Daz Studio , Create a conforming High Resolution copy of your Figure.
-
Load a default Genesis figure and export it to .obj at the SubD level you want to export your final figure at, leave the figure in the scene.
-
Import that obj back into Daz Studio and use the Transfer Utility to conform it to the Genesis character you still have loaded. While you have the Transfer Utility window open, leave eveything at default, but check the āUV Spaceā box. This will ensure that the transferred weights will be nice and accurate. You can test this on the eyes and mouth to see. Weāll call this newly transferred mesh āHD Genesisā.
-
Now that HD Genesis is rigged, unfit and unparent it from the original Genesis figure you just conformed it to. Hide or delete that original Genesis, and select HD Genesis.
-
Export HD Genesis to FBX. The settings arenāt important here, As long āFiguresā is checked, the FBX will contain the weightmaps we need. Now, we move over to 3ds Max.
Stage 2: 3ds Max , Create a file containing High Resolution weight maps for your Figure.
-
Import the HD Genesis FBX.
-
Select the Skin Modifier in the Modifiers List and expand the Advanced Parameters Tab.
-
Click the Save button to create an env file. This file contains the weightmaps for this skin modifier. It can be loaded onto another skin modifier, which is what youāll do in a minute.
-
Reset your 3ds Max Scene, you wonāt need the HD Genesis figure again after this, so you can delete the FBX, as well. Hold on to that Env file, though.
Stage 3: Daz Studio , Export a High Resolution FBX of your Figure using the Parameter Lock trick.
-
Load or dial up your Genesis character.
-
With your Genesis figure selected, Lock the āSubDivision Levelā Parameter and set its minimum level to whatever SubD level you exported your HD Genesis to. Lock the āResolution Levelā parameter for good measure, as well.
-
Now export your figure to FBX. Make sure that āSubD Informationā is checked, as well any other settings you may need (morphs, merge clothing, animation and so on).
Stage 4: 3ds Max , Load the High Resolution weight maps onto your Figure.
-
Import your new character FBX into Studio Max. Youāll see that your Genesis figure is at its appropriate SubD, but the weightmaps arenāt applying properly. Thereās no weight data for the SubD vertices, just the vertices from the Base Resolution Mesh.
-
Select the Skin Modifier in the Modifier List, and expand the Advanced Parameters tab.
-
Click the Load button, then navigate to where you stored that env file. Load it.
-
When youāre prompted with the envelope window, click the āmatch by nameā button to make sure that the weights are applied to the proper bones. Also ensure that the āLoad Vertices By Indexā box is checked, this will ensure that the imported weights are accurate.
And thatās it, from there I was able to export to Unreal Engine. Again, I apologize for bumping this old thread, but since this was a top result in my web search, I figured this was a good place to throw a bone to anyone else who was stuck on this conundrum.
Incredible work @ThomasL!
That works perfectly! In the same scene I was having issues with before, I get a steady 30 FPS now. Thanks so much for the quick feature addition!
@ThomasL Thank you for this improvement! On my system I get a jump from 7fps to 18 fps, which is pretty good for me
Hi @anon55679826 , I am trying to install the DAZ importer on my MAC but having trouble regarding the file path changes that apply for mac - could you share what you changed for it to work? many thanks for any help!
@polygondressing
The add-on is setup default for a Windows filepath so youāll have to change the naming format to fit Mac.
i.e. removing the C: prompt and rerouting to the proper file location.
my first line:
/User/timothycook/Documents/Daz 3D/Studio/My Library
An easy way of seeing the entire file path of any given file is to open finder and search for that file. The boarders (bottom of the pop up window) are operational contextual, and will list the entire file path of the file you click on. Just copy those line exactly spaces and all.
For the 3rd line youāll be searching for āVrayā and there will be several. Just make sure you click on the one that most resembles the file path of the default settings; itās usually the first one.
Tim
Hi,
I use the principled BSDF shader and set alpha to 0.1, IOR to 1.3 and specular strenght at 5 (the slider does not go beyond 1, but you can type any value)
Works fine for me.
Iām new to Blender so I may be missing something obvious, but Iām having an issue with genitals not following my body when I pose. I can successfully load morphs then merge the anatomy together, but when I go to pose my character the genitalia are left hanging in the rest pose position. Iāve tried parenting them to the hip bone, but no luck. What am I missing?
Finally I am still confused about the Disable drivers button. Please help if Iām doing it all wrong.
- Theoretic test: in Daz, one G8M naked, nothing else in the scene, do the export. In Blender, in an empty scene
- import -> fps 24
- import units -> fps 14
- disable drivers -> fps 24
- Realistic test: in Daz, one G8M with hair, scalp, shirt, pants, shoes, do the export. In Blender, with empty scene
- import -> fps 24
- join all meshes -> fps 24
- import units -> fps 0.5
- disable drivers -> fps still 0.5, there is no more improvement from disable drivers.
Where am I wrong? Or is there more to disable which the script is not doing?
Did you disable the meshes in the viewport? I ask because in my post when I mentioned my FPS being smooth after disabling the face units, I meant the FPS was smooth while using a very low poly proxy mesh.
I just did another test with a newly imported model and I have the same situation as you. Even after disabling face drivers, my FPS stays very low if I am using the high poly mesh. If I disable the meshes, though (specifically the body mesh), the FPS jumps back up to full.
Oh, I think by ādisableā you mean ādecimateā. I did that. Because otherwise if the mesh is not there, to animate just with the skeleton is a bit too dificult.
Anyways, I figured out another workflow: the figure can be posed in Daz, including face expression, and only then exported. The import in Blender is already in the initial pose and with the expression. Luckily I donāt need to animate the expression, itās enough the initial state. I only need to move a little the hands. So I donāt need to load the face units at all. And I need to decimate a lot for the viewport.
@anon55679826 thanks for your quick reply
So my DAZ library was stored on my icloud driveā¦ I tried to link it to that path without success; so I moved the entire DAZ library folder to my disc instead. After playing with the naming (for anyone facing this issue, keep spaces and do use Capital letters), there is no error messaging regarding the file paths anymore So thanks a lot for your help on this!!
I do get another error message now: Mesh fitting set to DBZ (JSON). Any experience on that by any chance?
Best,
Schirin
Glad I could help.
Iām not sure about the last question. Maybe someone else can help with that oneā¦
A dbz file is a gzipped json file which contains the final world-space coordinates of all vertices and bones. It must be exported from Daz studio before importing the scene into Blender. The export script is included with the Daz importer, cf. http://diffeomorphic.blogspot.com/2020/04/new-export-script.html.
The documentation describes an earlier version of the export script, http://diffeomorphic.blogspot.com/p/export-from-daz-studio.html. Gzipping the json file reduces the file size to about 1/3.
You can import scenes without a dbz file, by setting Mesh Fitting to Unmorphed Shared or Unmorphed Unique, but then you only get the base meshes without any morphs applied. This is useful sometimes, e.g. when importing environments.
When I said āDisableā I was referring to the Disable in Viewport toggle in the Outliner. This button will disable the mesh in the viewport so it should not affect FPS at all. If you just use the eye icon (hide) the mesh will still affect your FPS. Hereās a screenshot:
By default this option isnāt visible in the Outliner. You have to enable it by clicking this button and toggling it on:
However you are right about me using the decimate modifier for low poly meshes. Basically I duplicate my high poly mesh, decimate it very far (ratio to 0.1 or even lower if required), then apply the decimate modifier. I will then Disable the high poly mesh (using the Disable in Viewport toggle shown above) and animate using only the low poly mesh. Itās a little more challenging because, as you can imagine, the decimated low poly mesh has almost NO detail or qualityā¦ But it does let you animate most of the body stuff at 30 FPS or whatever is required so you can get a better understanding of what the final render will look like.
Last time I checked, hiding meshes in the viewport does not improve performance. What does make a difference is putting the meshes in a separate collection which is excluded from the scene. The Merge Rigs button creates a new collection for the meshes in order to facilitate such exclusion, see http://diffeomorphic.blogspot.com/2020/01/posing-performance.html. In my test case, I got a speed-up with a factor 16 when loading a bunch of poses.
Basically, the problem is that
many vertices * many vertex groups = poor performance.
Once way to improve performance is to create mannequins and do the initial animation with those, see http://diffeomorphic.blogspot.com/p/mannequins.html. In the mannequins the meshes are broken into parts which are bone parented to various bones, so there are no vertex groups to evaluate. The drawback is that in order to polish the animation you probably need to see the real meshes.