Dex (DSON Exchange) plugin for Maya
Hi Everyone,
I'm a long-time DAZ 3D user and also an avid 3D generalist. My most used tool is Maya, and for some time now I've been working on a plugin for Maya to help facilitate the pipeline between it and DAZ Studio. I wanted to share what I've done here and solicit feedback from the community. I'd love to know what people think and if it would be useful in some people's workflows.
I'm aware that there are already a few products available in the DAZ marketplace that bridge the gap between Maya and Daz Studio. I think it's fantastic that users are being provided with the kind of automation that these products provide. I believe the software I've written tackles this issue in a different way and so I hope it can be a useful addition to the community.
I call it Dex, which is short for DSON Exchange. The plugin is designed to import .duf files from a users DAZ 3D Library directly in to Maya, without the need for having to export from DAZ studio first. In case the reader is not aware, the term DSON is short for Daz Scene Object Notation and refers to the format used to specify DAZ assets and files, hence the name "DSON Exchange".
The plugin itself is not 100% complete yet. I need to do a lot of testing to ensure it can properly import as many assets as possible.
I've prepared a screencast of the main features of the plugin and published it here:
Please take a look; I would love to hear your comments. Also, it's my first screencast, so please be patient
These are the main features of Dex:
- Browser:
Dex provides a browser for browsing your DAZ 3D Library and selecting files for import. Any .duf file in your library will show up in the browser. It provides the same thumbnail icons as are displayed in DAZ Studio. The user double-clicks a file to begin the import. Here's what it looks like in Maya (browsing the "Characters" folder of the Genesis 8 Female product):
Here's the link to the full size version: https://drive.google.com/open?id=1Daq4jaIO6SpgD70-yBYEtmdeaTsP0TiR
- DAZ Asset Types:
Dex will import Characters, Clothing (which will conform as expected), Pose files, and Material files. In the case of clothing, poses, and materials, these will be added to the currently selected figure (already imported).
- Renderers:
Dex will automatically generate materials for either Arnold 5.0 and up, or Redshift 2.0 and up. I plan to include support for more rendering packages in the future, particularly Octane and VRay.
- JCM's:
DAZ 3D models are all expertly rigged for use in animation. One of the most useful features of their models are the Joint Controlled Modifiers (Morphs?), or JCM's. As you may know, the JCM's provide life-like morphs to be applied to a model when certain joints are in certain positions, greatly enhancing the realism. Dex automatically reads the JCM's for any character or wearable that it imports.
- Joint Connections:
I don't know what the official name for this is. In some files (Genesis 8 characters, for example), there are specifications for linking the movement of one joint with others. When the first joint, moves, the others are affected proportionally. A good example of this is with the eyes of the Genesis 8 characters. When the eyes are rotated up-down or side-side, the joints controlling the eyelids are also affected in a subtle but realistic way. They're not JCM's, exactly, but essential to retain all the realism found in DAZ Studio. Dex imports these as well.
- Pose and Shape Modifiers
In Daz Studio, there is an area of the interface that allows the user to dial-in Pose and Shape modifiers. Examples of Pose modifiers include "Arms Up-Down", "Arms Front-Back", and the various expression and viseme dials. Examples of Shape modifiers include "Height", "Body Size", and Character modifiers like "Victoria 8". Dex provides a UI that replicates this behavior. The user can dial in these modifiers using the appropriate slider, and the effect will be applied to the character. It's important to note that Pose and Shape modifiers do not simply affect the mesh of the figure in question. In cases like the "Victoria 8" modifier, joints within the underlying skeleton itself are repositioned within the model in order to keep them in the right place. Similarily, Pose modifications are applied to the joints themselves, and not the mesh.
When Pose and Shape modifiers are first used, an attribute is generated in the Maya scene that can be used for animation keying.
Here's an image of the Pose Modifiers browser:
Full size: https://drive.google.com/open?id=1DlhnTKmGXicL79zKZKt_JoSWpHzED-F_
- Human-IK
The Human-IK rig can be applied to Genesis 3 and 8 characters as long as the character is in the default pose and position. Once added, Pose Modifiers and imported Pose files that affect the body of the character will no longer work as expected. However, facial expression modifiers and assets will continue to work normally, as they are not affected by the Human-IK rig. Shape modifiers that do not affect the skeleton will work properly. Any shape modifiers that do affect the skeleton (eg: Height, Victoria 8) should be applied before applying the Human-IK rig.
A few things that are NOT in place yet:
IK Rig:
The Human-IK rig is useful for most workflows, but characters with HIK applied lose the ability to be affected by Pose Modifiers and Pose .duf files. Eventually, Dex will provide a custom IK rig to supplement the existing FK system that will allow Pose modifiers and assets to be used.
Genesis 1 and 2 Skin Binding:
Genesis and Genesis 2 figures will import, but their joint skinning (the process that determines how a particular joint affects the associated mesh) do not import properly, resulting in unrealistic deformations. Theses figures use a different system than Genesis 3 or 8 (this may be the Tri-Ax process that has been mentioned by DAZ in the past?), and I haven't properly handled it. Therefore, Genesis and Genesis 2 figures and associated assets are not currently supported.
There are also a number of other issues I need to work on, and polishing to be done, before I'd be willing to expose the plugin to the public.
Some technical notes:
The plugin is mix of Python and C++. I like pyhon for building user interfaces and file I/O, and prefer C++ for the nitty-gritty of translating DSON to useable Maya assets.
I believe the performance is quite good. The Genesis 8 Female character takes somewhere between 5 and 10 seconds to import on my (relatively powerful) computer. The vast majority of this time is spent finding and applying the JCM's. Pose and Material files are imported almost instantly.
To DAZ: I wanted to stress how fantastic the DSON format is for CG graphics exchange. Basing a format on JSON was an inspired choice because of its ubiquity. It would have been much harder to complete a plugin like this if .duf and .dsf files were not in such a widely supported format.
Thanks for taking the time to read all this. As I mentioned, I would love to hear what DAZ users think about the plugin. And I would also love to hear from the DAZ people themselves. Would Dex be a constructive addition to the DAZ marketplace?
In the meantime I'll continue working on the plugin
Michael
Comments
The best way to get feedback from Daz is explained here https://helpdaz.zendesk.com/hc/en-us/articles/207531443-How-do-I-become-a-DAZ-Published-Artist-
Very cool! Some rig on top would be awesome. Can it open a whole .duf scene? Could it possibly even save back a .duf scene that can be opened again in Daz Studio?
Hi,I am not an Autodesk user however,
I strongly,strongly urge you to continue the work on this project.
AKIAK this is the first plugin to truly use DSON as I believe Daz orginally intended when they introduced the original Genesis one figure years ago .
They tried it with poser, however poser's architecture imposed sever limitations on the DSON standard
All of the other "Genesis to Maya" plugins are not truly making a "real" genesis figure available in maya.
they are FBX transfer tools that rebuild a "reasonable approximation" of a genesis figures functionality in Maya through clever use of Melscript.
If you can add Maya human IK control rig on top for animation as an option, you will have pure gold in your talented hands.
Magnificent!!!!
Magnificent!!!!
Magnificent!!!!
This plugin is already gold man, obviously some Daz Users will say that there needs to be a custom Ik rig because they want to add purchase poses from Daz as well as to animate the figure simultaneously. But this is perfect already in the grand-scheme of things, the main thing that needed to be dealt with was JCMs, though they can be dealt with manually through scripts, it was still not enough to get ALL of the custom JCMs as easily as it would if we used your method, so thank you. I want this NOW, lol I would pay a hefty price for it
Now if only I could afford Maya, LOL There is a reason my copy of Max is a few versions behind
This is real
I saw the MAYA LT version is affordable, but does it have enough functionality to make use of this?
If you are willing to pay $30 a month for life. I'll pass.
Honestly, unless you are a serious animator or modeler, or want to use other high end and expensive renderers with plugins to Maya, I can't see a reason to not use DS.
for the very few here that have access to Maya, this sounds like a nice addition, hope it does well.
This is seriously impressive.
If your a PA, it's probably worth it man, it does more than just model and animate. Rendering in Maya using Vray or Arnold is leagues better than rendering in Daz Studio Iray, you can make hair using Xgen, Ornatrix or Yeti. Also, you can create your "JCMs" all in Maya. FX Simulation can also be done inside of Maya, there's soo much stuff that I may leave out because it's overwhelming, but Daz Studio is very very limited. If this plugin can save the file as duf, that'll save a lot of time, be cool if we could easily switch from Maya-Daz. Also I've yet to see a decent animation be done inside of Daz Studio, mainly because students and professionals would never think about using it for animation but also, it's not ideal, it doesn't have enough tools and even the plugins aren't good enough. Not trying to convince anybody, just stating the Pros of Maya, which is basically everything compared to Daz Studio. Than again, you might say Blender does the same thing and it's free, that's true too, I never used Blender but I know it's better than Daz Studio lol. Hopefully Blender gets a plugin like this too, but I don't think Blender has HIK properties, this plugin relies on that from what I'm seeing
I agree with everything you said, you obviously know your stuff. But I think that this could be good for PAs, making promos inside of Daz is not ideal IMO, yeah there's good products out there to help out but I'd rather use my Maya skills to make promos (I don't speak for everyone, just throwing out options). To answer your question, if we could save the file via duf inside of Maya, that would make the process easier for making JCMs, making JCMs inside of Maya is easier and more convient, no need to keep importing morphs again and again, all we'd have to do is save the file and bam, we can use the same file inside of Daz. I agree, Zbrush does it better, but Maya is still more than capable...
Hi everyone,
Thanks for all the responses. It's great to see interest in the project.
I want to try to respond to some of what's been said here.
bluejaunt asked about opening full .duf scenes. I'm assuming you mean scenes with potentially multiple characters and environments, etc. Dex can absolutely open these files. That said, I've been focusing more on importing characters and their accoutrements. I have testing to do to ensure as many files will open as possible.
I've attached a screenshot of the "Genesis 2 Barefoot Dancer Environment" file opened in Maya using Dex. I thought to use this as an example because it's found in the DAZ Studio Tutorials folder and so I believe everyone should have access to it if you'd like to compare. It imports quite well but it took a long time for the process to complete. I'll have to work on optimizations for this kind of import. I've also attached a screenshot of the scene rendered in Redshift.
You and others also asked about saving files in the .duf format. Unfortunately, this is not currently part of the plugin. But I do want to add that possibility in the future. I'm currently doing work on saving Pose files in the .duf format. In this situation, you'd be able to save the pose you created in Maya, and then use it on a figure in DAZ Studio. I'll also start working on the ability to save custom morphs built in Maya as .duf files. I recognize how useful, as gavincrout pointed out, it would be to build JCM's and other morphs in Maya and be able to use them in DAZ Studio. The name of the plugin is "DSON Exchange", which suggests two-way sharing
Paintbox mentioned Maya LT. To the best of my knowledge, Maya LT would not work with Dex because it does not allow Python or C++ plugins. Dex relies on both.
Starting with wolf359's reply, it seems most of the comments mention Maya's Human-IK solution. I recognize how import this is for a lot of users. I've mostly been focused on importing DSON assets just as they are representated in the .duf files. That said, there's nothing stopping me from adding things like HIK once the import process is complete. It's not overly difficult to do this. As I mentioned in the first post, adding HIK to an imported figure will make Pose files and the Pose Modifiers unuseable for that figure. As a compromise, I envision a configuration option in which the user can, beforehand, specify if they want to use Human-IK, or not. What does everyone think of this?
Even without Human-IK, I believe the solution requires some form of inverse kinematic rig applied to character imports. I'll be working on a custom IK rig to complement the current FK rig. I'm not the most talented "rigger" out there, but I'm sure I can come up with something that will work.
Thanks again for the replies. I've put a lot of time in to the development of this project, so I'm glad to see some interest. As I mentioned originally, I have work to do (testing, mostly) before I'd feel comfortable providing the plugin to the public. I want it to be something people enjoy using.
Please keep the comments and discussion coming!
This might be a stretch, but can it import rigs that aren't Genesis 3 or 8? Like Animals or Creatures?
That is mostly why I asked. Posing in Maya and importing the pose to Daz Studio. Of course this would only make sense if there's a clever rig in Maya that makes posing easier. Keep feet on the ground while the body moves, stuff like that.
Your plugin sounds and looks great. About this time last year, I might have given my firstborn for it. Count my vote for giving us a choice between an HIK rig (or something like it) and enabling the pose features. While I have only a little use for Pose modifiers (although they would be a great help), the bulk of my Maya work is motion capture animation and I absolutely need a compatible HIK rig to retarget to. If it is necessary to choose between the two because of incompatibilities, I would definitely want a choice. Good job. I can't wait to see the finished software.
gavincrout: I hadn't thought much about non-human characters to this point. I've attached a screenshot of an imported asset called "Millenium SubDragon". Honestly I'm not sure how I got this particular file, but it's an interesting example of a non-human character. It mostly imported fine, but there seems to be a problem with the FK controls. The joints, skinning, geometry, and materials all seemed to come through fine. I'm glad you mentioned this; I'll look in to why it doesn't completely work.
bluejaunte: Pose .duf files are not very complex. I don't anticipate it being difficult to add this functionality as a first step in making the pluging export capable.
FK controls have a problem? But the joints come through fine? As long as the joints come through fine and the JCMs are there, it's a winner Mr. Daw. I have a pretty similar Dragon model that was made from Daz (think it's called Dragon 3), was able to custom create my own fkik controllers using RRM and parent contraint them to the Dragon's joints, works like a charm and it doesn't take any more than 20 mins to do. Did the same with Daz horses, cats, etc. What some of my test lack is JCMs, that's the missing piece, and this plugin seems to handle that pretty well. The fact that it converts the materials as well is a major plus, I'm a Vray user but all I ask for are all the textures being imported, Maya users like to tweak their own materials depending on the shot.
Lmfaooooo
Everything looks great so far! I have a couple of questions:
- Are geografts supported?
- Are there limitations with geoshells or LIE presets?
- Are all textures read in maya? Fbx tends to only copy diffuse and normal textures I've found
- How are the various SSS / Transparancy maps handled?
- Are facial bones imported?
- Are bones for clothing, props or geografts imported?
Thanks!
Daniel
gavincrout: I'll have to do some testing to be sure the JCM's work correctly, but it should work just like any other character.
Intheflesh: Geografts are not currently supported. I'll look in to adding that feature. I'm afraid I'm not familiar with geoshells or LIE presets. Can you point to some examples?
All textures from the .duf file should import. For Genesis 8, for example, the importer finds the diffuse, specular, bump, and subsurface scattering maps. Other characters have normal and/or displacement maps, and these are imported in those cases. For the Genesis 8 eyelashes, the transparency maps are imported as expected.
SSS maps and transparency maps are connected to the approiate input of the arnold or redshift material node. In many cases, an additional RGB value is specified for the material to modify the original texture color. This RGB value is applied to the Color Gain of the file node supplying the texture file. For example, Genesis 8 by default specifies an RGB value of [ 0.5764706, 0.1921569, 0.1333333 ] for the subsurface scattering channel. Currently, the plugin attempts to take parameter values from the .duf file and apply them to the approriate parameter of the material node in Maya. For example, in Genesis 8 Female, the SSS weight is defined as 0.5. This value is applied to the SSS weight in the arnold or redshift shader. However, the different renders may handle these values differently, so I may opt to leave out parameter values and just import the textures by themselves.
Facial bones are imported. They are hidden in the video for clarity. I intend to have a toggle button in the UI that will allow the user to show/hide the facial bones. When shown, the user will be able to manually control them.
I need to look more in to geografts before I can say how they will be implemented.
Thanks for the questions, everyone. I'll try to continue to report on my progress towards finalizing the plugin.
Indeed that would be the best option for broadening the appeal
and usefulness of your plugin to users outside single frame Dazosphere.
The Character animators, who use Maya,will expect an easy option to use its powerful Human Ik control rigs for keyframe animation &mocap retargeting.
Hi everyone,
I've updated the video and original post to include info about preliminary Human-IK functionality that I've added based on its evident popularity.
Michael
I have another question Mr. Daw, I've noticed you also imported the limits information. Did you import both the translation and rotation limits, or just the rotations? Reason I ask is because the facial joints benefit with the translation limits, we are given more controll without distorting the mesh.
ill add my voice to the chorus of enthusiasm about your plugin...it looks tremendous.
One question from me: will the daz character HD morphs carry over using the plugin?
That has been a major drawback with other import/export solutions for getting daz characters into other software, which was driven by (in my understanding) a limitation of export functionality (in FBX and other formats that support skeleton/rigging etc) that only allows export at the figure's base resolution.
If your plugin is technically enabling Maya to read DUF files, does that then bypass the need for an actual export/import process and hence enable the HD morphs to come along with the character?
If your plugin does solve the HD morphs issue that other solutions have not been able to, you will be my new best friend and this plugin will be an insta-buy from me
That's not possible lol, wish it were. Keep in mind, the subD in Daz aren't rigs, they are basically OBJ's being influenced by daz rigs. So you have to find a work around. You could make displacement maps out of the subD or you could export the subD as obj to maya, and figure out how to make the rig influence the SubD. Trust me, there're ways, Maya is extremely powerful. But unfortunately it's not possible to bake the high poly subD onto the daz rig in daz studio. What you could do before you export your character via fbx, make sure your resolution is set to "base resolution" and pick the subD you want, it will export the selected subD but you'll have to subD the fbx mesh in maya by pressing "3", the drawback to this method are the teeth, the appearance is weird but everything else is good and you could always manually tweak the teeth. There're other methods out there that I use but can't explain it unless I make a tutorial, I'll try to asap
gavincrout: I hadn't considered the translation limits but it's a good suggestion. I'll add them.
Regarding joseft's comment about HD morphs: The plugin does not currently handle them automatically, but I'm not ready to rule them out. I'll have too look in to it more to see if there's a way. But similar to what gavincrout said, I believe there would be a hefty manual process involved.
https://www.youtube.com/watch?v=SsT6A7gmGfY Here's my method for using Subdivisions, long story short, I use the daz rigs UV's to influence the HD SubDs. I'm willing to bet Daz Studio does the same thing, it's the safest way to influence the HD SubD without distorting the mesh. Wrap Deformers don't work well unfortunately, and Displacement maps aren't super reliable, daz characters have multiple UVs so there's a weird mini distortion between the intersecting UVs. Hmm now that I think about it, I'm very confident Michael is more than capable to adding this feature to his plugin in future updates. I hypothesize he'll have to export each SubD somehow (probably via OBJ), parent the meshes under Daz rig and influence the HD SubD using the rig's UVs. I usually hide all the SubD while animating because it's faster to animate with base mesh, that's why Daz Studio automatically switches to the base mesh while you move the joints around.
Simply amazing! I tried the same for Cinema 4D and Genesis 3 (it would work with G8 as well) and analyzed the ERC links for that purpose. In C4D the dependencies could be done with Xpresso, but another issue there is that C4D uses a quaternion rotation system instead of XYZ. Nevertheless I found the following dependencies.
- JCM (joint controlled morphs)
- JCJ (joint controlled joints) - you called them joint connections
- MCM (morph controlled morphs) - sometimes morphs just control other morphs as well, besides having their own morph data
So far I wrote an exporter to get the initial rotation of the joints in an so-called FBX compagnion file and I found a method to export the ERC Links as well
I also export the FBX with the ERC linked morphs, which I import to Cinema 4D. A direct importer would be much better, but I defintely would need some time for it. I didn't solve the problem for HD morphs though.
Hi,First great job on adding the Maya HIK option for your plugin.
While the pose controls are a nice Daz studio feature, I would suggest that Experienced Maya animators wont miss them or certainly would pefer to disable them in favor of having the Powerful Maya HIK for key framing body motion or retargeting human mocap.
On the matter of the Daz HD morphs ,again a nice daz studio Feature but IMHO ultimately a major concern only to the core Daz studio
single frame portrait /single illustration artists who are not the typical Autodesk Customers IMHO.
I am a Character animator, currently making a feature length film in Maxon Cinema4D using Daz figures exported as MDD driven .obj files.
IMHO one can get all of the "HD" detail one needs for animated films with Normal Maps or displacements.
The attached image is a single test frame of a character I recently
added to My "cast" of digital actors.The Genesis 3 Male with the Ivan "HD" morphs.
note the "details "in his face.
Ths figure is being animated in Iclone Pro & Daz studio at BASE G3 resolution with ZERO subdivisions.And Exported to C4D as .obj/MDD at that Same Base resolution.
At render time the Ivan Normal maps provide the "appearance" of surface detail and a simple non destructive linear or catmull subdivision in C4D, creates the appearence of of "Hi resolution" geometry surfaces.
IMHO the people who are fixated on the DAZ "HD" morphs need to realize that ,in CG, it does not matter what is actually there only what Appears to be there in the final render.
For animators/Digital filmmakers who will be rendering thousands of frames on a project, it is a matter of efficiency in the managing of Data and file sizes to get the best time per frame rendered.
As an example of this: My typical fully dressed Genesis 2 based Character performing 10 seconds of animation
and exported at base resolution to .obj /MDD will create and MDD file in C4D of about 2 GIGABYTES!!
A similarly Dressed genesis 3/8 Figure,performing 10 seconds of animation and exported at base resolution to .obj /MDD will create an MDD file in C4D of about 275 MEGABYTES!!...you read that correctly..275 MEGABYTES.
This results in much faster render times and the ability to populate my shots with more figures.
Wow this looks awesome!!!! Instant buy for me!!! Does this automatically imports ALL the morphs associated to the figure as blend shapes or is it possible to select which morphs to import.
The possibility to export .DUF files for poses or morphs created directly in Maya can be a game changer!!!
Congratulations!!! Awesome work!!!
Martha E.
wolf359: I believe you have the right idea. I've had success in which an .obj file representing the HD morph is exported from DAZ Studio, and then baked to a normal map over top of a base resolution model in Maya. You can then link the HD morph dial to the blending in of the normal map to achieve the HD morph. However, these couldn't be included with the plugin because the HD morphs are a purchased asset from the marketplace. It would be a manual process for the user.
marth.e: You bring up a good point that I haven't explained yet about the plugin. Actually, no Shape or Pose modifiers are loaded by the plugin when you first import a character or wearable (not counting JCM's; these must be loaded in advance). Instead, they are "lazy-loaded". Essentially, this means that a morph is not part of the scene until the user changes the value for that morph to something other than zero. The first time you do this, you'll experience a slight delay as the morph is loaded. The length of the delay depends on how complex the morph is. For "Arms Up-Down", it's nearly instantaneous. For "Victoria 8" it might take a half second or so. After this initial loading, the morph will be part of the Maya scene and you won't experience the delay again for that imported asset. This process keeps import times down and Maya scene files small.
The "tree view" that you see in the video that lists the Pose and Shape modifiers is populated by a catalogue of morphs that is built by the plugin the first time a particular character or wearable is loaded. This adds some time to the first import of that asset, but after the first import the catalogue is saved locally and referred to in subsequent sessions. It is automatically updated if a new morph file is found for that character/wearable.
Btw: wolf359, your character looks great. Good luck with your project.