• Daz 3D
  • Shop
  • 3D Software
    • Daz Studio Premier
    • Daz Studio
    • Install Manager
    • Partnerships
    • AI Training data
    • Exporters
    • Daz to Roblox
    • Daz to Maya
    • Daz to Blender
    • Daz to Unreal
    • Daz to Unity
    • Daz to 3ds Max
    • Daz to Cinema 4D
  • 3D Models
    • Genesis 9
    • Genesis 8.1
    • Free 3D Models
  • Community
    • Gallery
    • Forums
    • Blog
    • Press
    • Help
  • Memberships
    • Daz Premier
    • Daz Plus
    • Daz Base
    • Compare
  • Download Studio
ADVANCED SEARCH
  • Menu
  • Daz 3D
ADVANCED SEARCH
Add image
  • Shop
  • 3d Software
    • Daz Studio Premier
    • Daz Studio
    • Install Manager
    • Partnerships
    • AI Training data
    • Exporters
    • Daz to Roblox
    • Daz to Maya
    • Daz to Blender
    • Daz to Unreal
    • Daz to Unity
    • Daz to 3ds Max
    • Daz to Cinema 4D
  • 3D Models
    • Genesis 9
    • Genesis 8.1
    • Free 3D Models
  • Community
    • Our Community
    • Gallery
    • Forums
    • Blog
    • Press
    • Help
  • Memberships
    • Daz Premier
    • Daz Plus
    • Daz Base
    • Compare

Notifications

You currently have no notifications.

Loading...
    • Categories
    • Recent Discussions
Daz 3D Forums > 3rd Party Software > Blender Discussion

Sagan: A DAZ Studio to Blender Alembic Exporter

«1…18192021222324»

Comments

  • qwq123qaqwq123qa Posts: 5
    June 5

    TheMysteryIsThePoint said:

    qwq123qa said:

    TheMysteryIsThePoint said:

    qwq123qa said:

    TheMysteryIsThePoint said:

    Hi @qwq123qa

    Is your plugin open sourced?

    may be open-sourced or publicly shared depending on development progress.

    If you decide to open source it, like Sagan/Hitchens already is, I'd be happy to refactor it to expose an API.

     

    Thank you for the suggestion! I agree that following the Sagan/Hitchens open source model would be beneficial. I’d welcome your help in refactoring the codebase to expose the API.

    I'm sorry, my sentence was kind of klunky... I meant that I would refactor my own code to expose an API, which Sagan currently does not do. Because I've had to figure out how to do certain things over a period of years, the "iterative" nature really shows in the (lack of) design. To expose a clean API would require significant time. Time which I don't have much of to work on Sagan, and time which I'd prefer to spend getting Hitchens up and running again. But if you were working on another open source tool to contribute something cool to DAZ, I'd feel like I had to somehow "make" time to do it.

    Thank you for your reply. I look forward to seeing the completed version of your project. My situation is similar to yours; I also don’t have much time in my daily life to work on this project. It might take several years to meet the expectations. Currently, using Sagan alone is also very convenient.

     

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    June 6

    @francescogenovesi78

    I am am feeling cautious optimism that I have finally solved the geograft UV problem. I'll update probably within a week or so.

  • WendyLuvsCatzWendyLuvsCatz Posts: 40,013
    June 6

    we have a geograft UV issue in Carrara, I wonder if how you solve it could be applied there too

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    June 6

    WendyLuvsCatz said:

    we have a geograft UV issue in Carrara, I wonder if how you solve it could be applied there too

    Hi Wendy,


    I sincerely hope not; in retrospect I think the bug can be placed firmly in the "stupid mistake" area...

    With both Alembic and USD, you encode faces by defining the vertices of its corners by an index into a long tables of all the vertices in the mesh. That's efficient because unless a vertex is a UV seam, it only needs to be in the table once, even if more than one face refers to it.

    UVs are different. They're not indexed because there should not be any dupes and the same optimization for vertices would not save you anything. So, you just encode the actual U and V values in the same order as you're encoding the faces that make up the mesh.

    Now, when there is a geograft or geoshell which can remove faces, that creates unused vertices that have to be removed or else you end up with loose vertices in Edit Mode in Blender. So you encode only the faces that are still used in the mesh, and create new indices that refer to a shorter list of vertices that are actually referenced by a face. It is not necessary to do this for UVs because, as I said above, UVs are not indexed.

    The bug was that I was redoing the UVs as well, in a way analogous to what I had to do for the vertices, which creates a UV array of a shorter length than it should be because it is removing the "duplicates" that it falsely believed existed when the corresponding face's vertex was a duplicate. Blender's Alembic importer doesn't report the error, it just silently discards the bad UV map. I found it when I used the same code for Hitchens, which uses USD, and the Blender USD importer gave a meaningful error message saying the length of the UV map was off. At that point it was just a matter of staring at that section of the code long enough until the error jumped out at me.

    So the problem was Alembic and USD specific (they both encode geometry is pretty much exactly the same way), and I must assume that the Carara guys are better at this than me, or at least they should be :)

     

  • WendyLuvsCatzWendyLuvsCatz Posts: 40,013
    June 7 edited June 7

    yeah, I understand it's a vertex order change and this is reflected in what happens fitting a geografted part in Carrara, it destroys the UV mapping, it doesn't if the figure is imported in any way (FBX or obj) but it happens loading a duf file.

    So something using the way Carrara reads duf files which DAZ added to the program and apparently not in the SDK.

    There are 2-3 different solutions we use, my favourite is fitting a second geograft to the first one and hiding the first one, another option is fitting it to something else conformed to the base figure or editing it in DAZ studio to make it into a conforming item instead of a geograft 

    I obviously cannot do coding solutions but can work with geometry solutions and was hoping you were doing the latter since Blender imports it.

    Post edited by WendyLuvsCatz on June 7
  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    June 7

    That illustrates something strange that I'm seeing, and don't really know how to interpret because it is of course not documented anywhere how this works: A geograft appears as a whole separate node that is just the graft itself, but it also gets grafted onto the figure. I think that's kind of what you're saying about fitting a second geograft. Because the geograft that gets grafted onto the figure changes the vertex order, the UVs are probably messed up. But the other standalone geograft probably still has its UV map intact. Hmmm... maybe there needs to be an option to keep the standalone geograft.

  • seegvisualizationsseegvisualizations Posts: 8
    June 14

    Hey.

    I copied the sagan-3.7.0.0 dll to my daz plugins folder. It shows up in the installed plugins and is active, but it isnt available in the edit menu. Daz 4.24

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    June 14

    @seegvisualizations

    Hi. Read the first post.

  • AtarakseaAtaraksea Posts: 6
    July 9

    @TheMysteryIsThePoint

    Hey there.  First of all, let me express my appreciation for the work you've put into this tremendous plugin.  I was just wondering if the source code for the most recent sagan 3.7.0 was available anywhere.  I want to change the exporting process such that parts of a figure that are hidden aren't exported, something it looks like you and mrpdean discussed previously, but, as far as I can tell, was ultimately not implemented.

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    July 9

    Ataraksea said:

    @TheMysteryIsThePoint

    Hey there.  First of all, let me express my appreciation for the work you've put into this tremendous plugin.  I was just wondering if the source code for the most recent sagan 3.7.0 was available anywhere.  I want to change the exporting process such that parts of a figure that are hidden aren't exported, something it looks like you and mrpdean discussed previously, but, as far as I can tell, was ultimately not implemented.

    Hi @Ataraksea

    The code isn't available anywhere at the moment because I'm in the middle of a massive rewrite to clean up the nearly 7 years of iteratively figuring things out and incurring more and more technical debt. 3.8 will be a pretty big update, and one of the several big features is that I finally figured out the hidden geometry in geoshells... it turns out that it's not even exposed by the SDK so I never would have found it :) So if that was what you were referring to, I may have you covered already...

    But after I get 3.8 out the door (in a week, two tops?), please, by all means message me back and I'll give you the code, provided that you agree to also publish your changes to the community (such as it is), as is required by the GPLv2. I'm excited at the prospect of collaboration, but it should really be from the cleaned up 3.8 base which is much cleaner, has an actual object model and coherent approach, not 3.7 which is all over the place... we'd just have to re-write it anyway so there's no point.

    Donald

  • AtarakseaAtaraksea Posts: 6
    July 9 edited July 9

    Gotcha.  Well, I'm in no big hurry anyway, so no rush.  Once you've finally gotten everything in a state you're comfortable sharing, might I suggest simply uploading the codebase to Github(or your preferred repository hosting service).  Not the end of the world if you would rather not for whatever reason, it just makes collaboration much simpler, obviously.

    Post edited by Ataraksea on July 9
  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    July 9

    I think the project space is already on Github, I just haven't uploaded anything.

    And I just fixed one of the major bugs that was stopping me, so it'll be sooner rather than later. The rest is Hitchens related, which is kind of separate, anyway.

    But your project is open sourced, right? GPLv2?

  • AtarakseaAtaraksea Posts: 6
    July 9 edited July 9

    Hmm, I had to stop and think about that one, but after some consideration, I don't think it would be applicable.  My "project" isn't any sort of software that I'm releasing.  I'm simply creating a character model at the moment, and using Sagan as part of DazToHue's workflow to bring that character model to UE5.  I have some plans to incorporate an LLM to drive the character model's behaviour, which will necessitate some amount of code, but I have no plans to distribute it.  This is mostly just me exploring a new hobby at the moment. 

     

    Post edited by Ataraksea on July 9
  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    July 9

    I think the distribution aspect is the letter of the GPL, not the spirit. If you use Sagan code and benefit from it, the idea is to pay it forward so that others might benefit from your code in the same way that you benefitted from mine. If you keep it to yourself, no one can say "Hey, that code does almost exactly what I need!". Anyway, just think about it :)

    In any case, I found the bug that was holding me up last night after this pretty big re-design; there are just a few more relatively small things left (assuming I don't find any more bugs... I've really got to get better at Win32 and set up unit tests, but Win32 makes me die inside a little bit every day), and I'll release the source soon while I continue fixing the remaining Hitchens bugs.

  • starslingerstarslinger Posts: 14
    July 10

    Hey uh, since you are working on it, SBH hair object gets imported to blender in the original scale and orientation from daz studio, which is different from blender. Its not a big problem since you can just rotate and scale down the object on object level, however applying the orientation or editing the python function to rotate the points themselves breaks the strands, makes them look like thick cylinders. So you have to keep the modified rotation and scale values. But its not a big deal just though i should mention it if you dont already know.

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    July 10

    starslinger said:

    Hey uh, since you are working on it, SBH hair object gets imported to blender in the original scale and orientation from daz studio, which is different from blender. Its not a big problem since you can just rotate and scale down the object on object level, however applying the orientation or editing the python function to rotate the points themselves breaks the strands, makes them look like thick cylinders. So you have to keep the modified rotation and scale values. But its not a big deal just though i should mention it if you dont already know.

    @starslinger

    Thanks for reporting. Yes, that's been fixed already. I thought I had hidden that functionality; it wasn't quite ready for Prime Time.

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    August 26

    Getting close, lots of bug fixes and just a few more features to add.

    Hair conversion is working pretty well with the 4 or 5 random assets I've thrown at it so far. Cards, tubes, SBH... it figures out what it is and converts it to Blender Hair Curves.

    Here is a demo with dForce Wet Style Curly Hair for Genesis 8 and 9.

  • starslingerstarslinger Posts: 14
    August 26

    Looks great! Thank you for doing this amazing work!

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    August 26

    starslinger said:

    Looks great! Thank you for doing this amazing work!

    Thanks, @starslinger

    There isn't a whole lot of progress with Blender's Hair Dynamics project, so dForce hair is still relevant and needed to be supported.

  • lilweeplilweep Posts: 2,740
    August 27

    What is "Blender's Hair Dynamics project" ?

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    August 27

    lilweep said:

    What is "Blender's Hair Dynamics project" ?

    The old hair system that was based on the Particle system had some simulation capability, but it was quite unstable. It wasn't well integrated into the rest of Blender. For example, if you updated the positions of the guide points via the Python API, it was very easy to crash Blender and there were some non-obvious gymnastics that you had to go through to get the hair to animate. There was never a solution that was rock solid and instilled confidence.

    But the new system makes Hair a first class citizen with a new object type called Hair Curves, not to be confused with the existing object type Curve (splines, NURBS, etc...). It is much better, can be manipulated with Geometry Nodes, but it doesn't simulate in the way that, say, Houdini can simulate hair.

    The new Hair Dynamics Pproject is the Blender effort to rectify that. But as you can see from this, it hasn't gotten much attention, yet. But from that you can also see that it's goin g to be pretty awesome when it is done.

      

  • lilweeplilweep Posts: 2,740
    August 27

    Okay, I see.  With that said, I thought that there are some grooming plugins for blender's new Hair Curves that currently allow for simulating hair.

    Hair Brush, for example, and some other one I forgot the name of had it before Hair Brush did.

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    August 29

    Hi @lilweep,

    All of the methods I'm aware of, maybe you know some other ones in which case I hope you'll share them, are clever "cheats" to achieve a level of realism without actually simulating. Houdini (and at some point in the future Blender) simulates the actual strand guides by brute force.

  • fading.club1fading.club1 Posts: 5
    September 28

    @TheMysteryIsThePoint
    Hi!
    First of all, I want to express my huge gratitude for creating and developing this exporter. It’s inspiring to see enthusiasts who are striving to make digital artists lives easier. heart

    I have a question about the Sagan, specifically whether version 3.7.0.0 supports SBH dForce hair. I apologize in advance if this is a silly question — before asking I went through all the forum pages, but I wasn’t able to find clear information. Someone said something like “Oh, SBH works great, thanks,” and that made me think I might be doing something wrong. I’m using the “dForce Lively Ponytail Hair for Genesis 9,” but when importing .abc into Blender I can see everything except the hair. It doesn’t even appear in the Outliner. Before exporting, I increased tessellation by 2 in DAZ3D so the hairstyle would be visible.

    Could you please clarify if I’m missing something, or if SBH support is still in development? Thank you very much, with best regards! 

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    September 30

    Hi.

    As you suspected, no it doesn't. SBH doesn't present itself as geometry in the same way as other nodes and a few things are necessary to get the geometry. But I think I figure it all out, and more, for 3.8 which is coming soon.

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    September 30 edited September 30

    @fading.club1

    That asset works fine.

    Notice that the G9 fiber eyebrows work. That was a fun one (not).

    dforce_lively_ponytail.png
    3770 x 2126 - 3M
    Post edited by TheMysteryIsThePoint on September 30
  • fading.club1fading.club1 Posts: 5
    September 30

    @TheMysteryIsThePoint

    Looks just wonderful! btw I’m curious: previously, for still renders, I exported SBH hair as .obj with line tessellation = 2. And the hair was great. Does their appearance differ visually from the one they have when imported through Sagan with blenders hair curves?

    btw on that screenshot they don’t look any worse imo

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    September 30

    fading.club1 said:

    @TheMysteryIsThePoint

    Looks just wonderful! btw I’m curious: previously, for still renders, I exported SBH hair as .obj with line tessellation = 2. And the hair was great. Does their appearance differ visually from the one they have when imported through Sagan with blenders hair curves?

    btw on that screenshot they don’t look any worse imo

    The main difference is that if you export with line tesselation = 2, that just causes DS to create some geometry, i.e. faces that the OBJ exporter to export. What you get in Blender is a Mesh object. But the arguably better thing to do, which Sagan does, is to convert that mesh geometry into a Curves object so it is now susceptible to all the current and future work the Blender devs are doing with Geometry Nodes and... drum roll please... the revamping of hair dynamics  that is underway right now. Also, the node setup as well as the material that I used for the screenshot are not particularly good and can probably be substantially improved upon; that's literally what I came up with in 3 minutes at 2 in the morning :) Also, exporting hair models as meshes makes the files quite large and rendering is slower, if that's relevant to you.

  • fading.club1fading.club1 Posts: 5
    October 1

    @TheMysteryIsThePoint

    "Great, now I understand. Thank u for the explanation!

    But wasn’t it possible to export the SBH hair (dForce) simulation through the classic Alembic export with tessellation = 2? After all, in that case Daz generates geometry that, in theory, the Alembic format should support. Unfortunately, though, SBH hair can only be transferred to Blender in a static form and only as .OBJ. Apparently, Daz3D does not 'bake' the simulation into geometry under any circumstances

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,216
    October 2

    fading.club1 said:

    @TheMysteryIsThePoint

    "Great, now I understand. Thank u for the explanation!

    But wasn’t it possible to export the SBH hair (dForce) simulation through the classic Alembic export with tessellation = 2? After all, in that case Daz generates geometry that, in theory, the Alembic format should support. Unfortunately, though, SBH hair can only be transferred to Blender in a static form and only as .OBJ. Apparently, Daz3D does not 'bake' the simulation into geometry under any circumstances

    @fading.club1

    Hi, I'm not sure what you mean by "classic Alembic export", but as far as I know, Sagan could always export animated hair with a tessellation modifier. All the tessellation modifier does is it turns each segment along a strand into a face. sides=2 means each segment along the strand will be a quad. That's the minimum DS needs in order to recognize it as the same kind of geometry as any other mesh. Without the tesselation modifier, DS says that the SBH has a bunch of vertices, but no faces that connect them and so what gets exported is a cloud of disconnected vertices.

    With the tessellation modifier, what you get in Blender is a Mesh object like another, where each strand is like a long, two-sided strip of tape. This may be sufficient because it is real geometry, and has UVs and materials. But it isn't a Blender Curves object which is the way forward for Blender's coming more advanced geometry nodes. For that, you need to convert the tessellated geometry into actual 1 dimenstional strands and export it as Alembic Curves, which Blender interprets as Hair Curves objects.

    The math is not for the faint of heart, but I figured out how to do this in a general sense. As far as I can tell, there are four kinds of hair in DS: tubes, cards, strand based, and fiber based. Sagan can look at a node, think about it, and determine what type a hair asset is, and convert it appropriately to Alembic Curves.

    Does that make it clear?

«1…18192021222324»
Sign In or Register to comment.
Adding to Cart…

Daz 3D is part of Tafi

Connect

DAZ Productions, Inc.
7533 S Center View Ct #4664
West Jordan, UT 84084

HELP

Contact Us

Tutorials

Help Center

Sell Your 3D Content

Affiliate Program

Documentation Center

Open Source

Consent Preferences

JOIN DAZ

Memberships

Blog

About Us

Press

Careers

Bridges

Community

In the Studio

Gallery

Forum

DAZ STORE

Shop

Freebies

Published Artists

Licensing Agreement | Terms of Service | Privacy Policy | EULA

© 2025 Daz Productions Inc. All Rights Reserved.