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
Ok I've installed the plugins, but still by default it behaves the same. I import the abc in the content drawer, select either static mesh or geometry cache. Is there something extra I need to do to get it to work, or it should work out of the box like in blender? To be clear I exported the entire figure, hair and everything together.
@starslinger
It should just work, but apparently UE is more finnicky about what it interprets as a hair groom. I'm looking in to it.
Hey how's it going? I re-downloaded Sagan from your link, re-installed so its latest update and I think I found a new bug, if you create a New Null object, or just have Null objects in the scene, Sagan crashes Daz Studio when trying to export. Also pless don't forget about the hotkey thing
The settings dont seem to save or load, also I think it would be useful if it used the current directory of the scene file for saving and exporting, instead of promting you to set paths.
Hi @starslinger
OK, the null bug is fixed. But I uncovered a new crash-to-desktop bug when assets are missing. Will work on that tomorrow.
I changed the method for adding additional config options and must have borked something up. I'll fix it tomorrow, as well.
The config files are all in the same place so I can silently update them all when I need to make a backwards-incompatible change to the format.
The hot key is on the list, and I'll figure something out after v4 stabilizes.
Thanks for the testing!
It seems that sagan is not exporting any of the default genesis 9 strand based eyebrows. At least when I try to import them in blender they dont show up at all. Can you make it possible for base export directory to not be hardcoded to one global location? Personally I prefer keeping alembic files bundled with project directories, so putting all alembic files in one global folder makes my organization more difficult.
Strange. I tested that with Sylvia 9, and it worked fine. I'll look into it.
Sure, I'll make the option part of the configuration.
For fiber brows to work at all, you must have saved the scene file. This is because Sagan needs to parse the asset file to get the eyebrows' topology. What is stored in the mesh data is just an array of vertices with no information on how they are arranged into strands.
I found something. If you turn on log details under the Help menu, you'll see something like:
2025-12-11 07:35:44 node_type_decoder.cpp:111 - G9 Eyebrows Fiber Style 01: g9EyebrowFibers
2025-12-11 07:35:44 raw_fibers.cpp:366 - found fiber object: G9 Eyebrows Fiber Style 01
2025-12-11 07:35:44 raw_fibers.cpp:259 - geometry had no polyline_list
2025-12-11 07:35:44 raw_fibers.cpp:315 - couldn't find appropriate geometry
2025-12-11 07:35:44 raw_fibers.cpp:372 - couldn't get fiber object: G9 Eyebrows Fiber Style 01
2025-12-11 07:35:44 raw_fibers.cpp:383 - couldn't find appropriate raw fibers
2025-12-11 07:35:44 recursive_init_node_decoder.cpp:167 - couldn't get raw fibers for: G9 Eyebrows Fiber Style 01
I got this to work by using the G9 eyebrow fibers that came with Sylvia 9, but it must be done inconsistently (big surprise). I'll see what is different about the JSON and figure something out. Getting really tired of this kind of crap.
OK, this is getting ridiculous. Someone will have to explain to me what the point is of having a classname at all if apparently it is meaningless. And worse yet, why this is not documented anywhere.
The brows that come with Sylvia 9 have a class name of G9EyebrowFibers, and they have a polyline_list object that describes the topology.
The Genesis 9 Starter Essentials "Fiber" Eyebrows also have a classname of G9EyebrowFibers. But they are not fibers at all, do not have a polyline_list object; they are just regular meshes.
I think the logic can be that if there's no polyline_list object in the JSON, then attempt to export it as a regular mesh. I'll code that up and see if it solves the problem. This is how bad software happens. Not with a scream, but a thousand undocumented sighs.
Hang in there, you are doing god's work! Maybe Sylvia eyebrows are custom groomed and that caused the discrepancy?
OK, I think I fixed it, you can re-download. But I'm not sure what other DSBS is lurking in there.
Why the authoring tool would simulate a "fiber" by taking what is topologically a 5 x 3 2-dimensional grid of faces and superimpose the row vertices over each other making them coincide so it physically is a 1-dimensional strand of 5 segments, I will never know.
I continue working on the other issues for a proper release, including your hotkey.
Thanks again for the help testing.
Hey thanks a lot for the update! I just got around to testing it. Yes now it I can see the eyebrows in blender. They are a mesh object only? They seem to import as mesh object in blender and checking convert to hair curves doesnt convert it.
Hi @starslinger
All the time I took to re-design Sagan for v4 is paying off. Now, all the logic for figuring out what the heck a node is, is in one place and works for both Alembic and the USD that Hitchens uses. All it took was to code up "Even if the classname says it's a fiber, if you've got "faces", then it's a mesh".
Did you look in the log for any clues? I think that because, like I said, the topology of the "fiber" brows is so messed up that the conversion algorithm might be saying (paraphrasing) "there's no way that this is a strand of hair" and ignoring it.
Looks like Blender doesn't offer hair modifiers on freshly imported Sagan SBH, but if you save the scene and reload then the options show up in the hair modifier dropdown and search. Probably an issue with Blender, but worth noting
@starslinger
Thanks again for your dilligence.
I think I've figured out how to implement your hotkey. It turns out that a single plugin DLL can register more than one action, to which the user can assign any hotkey combo they desire. I have a proof of concept that can pop up a "I'm here!" dialog, so it should be theoretically possible to just export according to the current configuration with no other input from the user. So I think I'm pretty close.
So I've been working with sagan for couple of days now and there are a few things that bother me. The settings still dont save per scene file, they seem to be global. Im not sure if you plan to change this so I'm mentioning it. I think it is really important to have settings save per scene file, like for example frame range so that when you open the older project you know what you are working with and not have to constantly fiddle with frame ranges especially if you work with multiple files. Another thing is, the order of material and the uv naming does not follow diffeomorphic template. I've tried fiddling with diffeomorphic material order settings but no success, this fix used to work in older versions of sagan. My suggestion is, keep uv naming same as diffeomorphic and keep material order/index the same as diffeomorphic default import because this simplifies the material transfer by an order of magnitude. Currently as it is you have to fiddle with both the uv's and material orders just to get a single piece of clothing working and then you have to do it for every single unique piece. I saw sagan exports some scripts also, I am not sure if and how they are supposed to be used.
Hi @starslinger
The config file behavior you cite is indeed how it shoudl work. I did find a bug in the code that is already fixed and will be in the next iteration.
The order of the material slots is an issue that has been known about for a long time. Diffeo gets the materials from the JSON. Sagan gets them from the SDK API. They are generally not gong to match. Recently, I've found that Diffeo creates fewer material slots than Sagan does. It seems like Diffeo is wrong, but I haven't investigated very far, yet. I'm considering putting back in the code that gets the materials from the JSON, like Diffeo does. It was removed because it required parsing the JSON, which just bloated the code, but since I've got to parse the JSON anyway for fiber eyebrows, I may as well fish out the materials data since I've already got the JSON parsed. I'm aware of the UV problem as well, and I, too, find it annoying. In the end, I'll probably output a script to convert diffeo's naming scheme to Sagan's, not the other way around because Sagan utilizes the human readable label one sees inside DAZ Studio, while Diffeo uses the ID from the JSON which may or may not even correspond to what the user sees in Daz Studio.
When the implementation settles, I'll explain all the metadata that gets generated.
Your hotkey is coming along. I'm killing two birds with one stone by using essentially the same code to make your hotkey work as to collaborate with the creator of the Daz To Houdini plugin. If anyone is doing God's work, it's that guy... amazing stuff.
Stay tuned.
Hi @starslinger
Grab the latest beta. You should see another Edit action called Express Export. It will export according to the current config file for the scene. You can set up whatever hotkey you want for it.
Hey thanks for the update! Seems to be working fine. One thing I could suggest is a way to save default settings, because its a bit annoying to keep setting same settings over and over again every time I open a new scene.
@starslinger
OK, I'll think about that, too. Thanks for helping test.