Feedback for the C4D Bridge
First off, thanks for providing the bridge free of charge to us. This is a nice gift.
The interface in C4D instantly reminds me off IKMAX and it is easy to understand and use. There are still a few hiccups that I noticed :
>> As a user of DS beta I did not get any RunOnce script when I installed the product through DIM. I had to find out what files were installed where and then manually copy them from the release version to the beta folder.
>> The plugin seems to copy everything over which it identifies as an expression as far as I can tell. Some type of interface for selecting what morphs you would like to copy, or for advanced users, maybe a filter list we can fill with morph names and wildcards like in the regular fbx export would be nice to have. Especially useful for JCMs which are sorely needed because so far they do are not applied in C4D after importing the figure. If you can get this going, please find a way to autmatically setup the basefemale JCMs by default. They don't have to be perfect but at least they should already be there, so the end user only has to tweak them for their needs. Remember : We will have to setup those JCMs on every import again and you know how many JCMs the figures have even for the base.
>> The auto IK RIG that gets created within C4D does not seem to have an IK/FK switch as far as I can see. It creates a set of FK bones which then control the actual joints (which I find a good approach to work around C4Ds issue with joint alignments being broken from DS FBX imports), but those FK bones are basically not usable as FK bones because it is all IK driven as of now, apart from maybe the shin bone, which I could rotate manually.
>> When uninstalling and then re-installing the bridge in hopes to be able to select another C4D version and path again, the package simply gets reinstalled to the same spot again without any popup menu. This is really bad for users who use different C4D versions or if your paths to the software have changed after an upgrade etc. Please fix this. At the very least there should be a zip file for manual download with the plugin files for each C4D version that is supported. We are big boys and girls and will figure it out where to put those files ;)
>> The export of the base figure bones does not have properly aligned joint axis. This will be a big issue for setting up JCM. You could set those to some of the autocreated FK bones instead but that would be a bandaid and only fix some rotations, not all of them.
That is what I have noticed so far but I will look for stuff extensively over the next few days while trying to make use of the bridge. Please consider adding an automatic JCM binding on import, because I dread having to setup all of these everytime I import a figure, and having to manually import all the corrective morphs through a seperate fbx import. That bridge should do this job for the user, otherwise I cannot see alot of use for anyone but a complete professional. I am a rather advanced C4D user but I would simply choke on the workload for this when trying to get in new figures.
As something you might also add would be an option to set meshes for the IK controllers instead of splines, because they are easier to click on in the viewport and do not lag it as much as splines do. A good example of how those would look like can be seen in the videos here by a very talented C4D rigger from Ace5Studios >> https://ace5studios.com/bony4d/
Comments
Yes a filter for the morphs is needed, most people have many hundreds sometimes thousands of head morphs, this is pretty terrible to export, in my case i got an 18GB c4d file ;) sure they can be deleted in C4D but it takes a lot of time and the export process get very slow also.
Is there a way to transfer Daz character's animation with the character to C4D? I only seem to be able to transfer the character. When I bake the key frames, the plugin seems to not work.
Thoughts?
In addition to HZR's comment, it doesn't import all the texture maps, just the diffuse and alphas. It would be nice if the bumps, normals, specs etc were in the materials without having to manually plug them into the channels.
Edit - also the weighting isn't very good on the poses. Not sure if it's a C4D limitation, I never had much success weighting characters.
The temporary files go to C:\TEMP3D btw. I tried to create an FBX export myself and replaced it with the DazToC4D.fbx that gets created in that folder, and it works with this fbx. So I guess as a workaround you can create your own fbx files and put them there and the C4D part will pick that up.
We still need to have an automatic joint corrective setup though, otherwise the whole point of the bridge is almost void. I could do my own fbx import and use an autorig script to generate a proper IK rig before. The biggest problem has always been the messed up joint alignments that C4D leaves you with when you import a DS fbx and the bridge does not fix this. When importing figures from iClone for example, the joint alignments are correct, so they must have a better way to export the figures which DAZ does not.
I cannot stress this part enough. If we want a solid base to use, we need proper joint rotations and working jcms, otherwise you will have to create all of this yourself, on EVERY exported figure from DS, for hundreds of joints and hundreds of jcm for these joint rotations. And this has been the problem ever since, the bridge right now does not fix it. It is nice to have an automated IK RIG in one click, but even as a poweruser you are left with something where you still have to do 90% of the work yourself, I doubt the average user will even attempt to go further and just give up when they see the default quaternion figure bends.
It is a decent start but now comes the part where you have to refine this thing to make it worth using.
Thanks for releasing this, it's great start.
Are facial experssions supposed to transfer? I am fairly new to DAZ and don't understand how all the morph/pose/settings/etc magic is working behind the scenes, but in my case the bridge seems to bring most stuff over, except facial expressions go flat. Is there something I am not doing correctly?
I have my C4D plugins in a folder outside of the usual install folder and created a symlink there to the actual place on the hdd where the plugins are. That way multiple versions of C4D can use the same plugins.
However, the DAZ install script does not honor the symlink, als other plugin installers do. It did just overwrite my symlink with a new local plugin folder. As a result all my plugins seemed to be gone in C4D, I needed to copy the daz plugin folder to the other location and then recreate the symlink. In my opinion this must not happen, the DAZ installer needs to honor the symlink.
I imported and converted to Redshift.
Glass materials are opaque. However, other transparent materials, like sclera are transparent. This seems inconsistent.
The hair has an opacity shader but it is imported quite wrong, the plugin changes the gamma value. That should not be done, the gamma should not be touched, instead the color offset should be used, or else a ramp node added after the opacity texture. with the original import settings the hair looked strandy and flat, after I tweaked the opacity texture it looked way better.
In a lot of materials I noticed that roughness and bump nodes are created, but skin shaders loose all all textures besides diffuse, so the skin has for example no bump or translucency shader. I think this needs to be improved.
But aside from that this will speed up the conversion of DAZ to C4D immensly compared to the slow and tedious way of manually importing textures for an obj or fbx conversion as before. So even if I found the above points I am quite happy with this and hope it is improved.
This is a quick import with not much tweaking besides the points I said above for the hair. It is a screengrab of the IPR without much tweaking, just as it came into C4D and was converted to Redshift. I think this can be greatly improved with just a little work.
This is what I found so far, i will test more.
This is a pretty impressive plugin, particularly where it creates an IK-rigged character in C4D. It does have limitations as noted already (no morph controls, no weighting) which will hopefully be addressed. Until then, I can't see really animating Daz characters in C4D, particularly without the possibilty to even change the facial expressions.
As for animating in Daz, the new timeline in v12 was a huge step forward, and it makes animating in Daz a comparative pleasure.
To that end, is there any chance of a plugin to simply "host" a Daz character in C4D? InterposerPro (for Poser) did a good job of that, and I have to think that the code involved was way less complicated than this Bridge plugin. To a somewhat lesser degree, but still very useful, Poserfusion did a good job as well, and both of these methods retained the weighted morphs. I have struggled over the years--and continue to--to bring Daz characters into C4D, and for a time I had InterposerPro and Poserfusion, and I also used Poser for animation since its animation tools were better than Daz's. Now with IPP and Poserfusion gone, I've actually lost ground in this regard and have been scrambling to find a new solution, going as far as spending a fair amount of money on the iClone Suite just to help me fill in the gaps. I was very excited to see this Bridge plugin, but honstly, it's not that useful to me with all of its restrictions, not least that you lose the advantage of animating in Daz Studio itself.
The creation of this Bridge plugin seems to indicate that Daz is comitted to playing well with other 3D programs (unlike Poser, which has totally dropped the ball), so I implore you to please consider the idea of a hosting plugin like IPP or Poserfusion.
Thanks!--Tim
Why is it writing pretty much ALL my expression morphs when exporting? I just exported with no facial expression and I see the export window writing like "Full face smile" "Crooked smile" "Angry" "ceejay happy" etc etc etc.
And also when exporting a dforce draped fabric it imports messed up in cinema.
I also tried various things to get the animation to transfer. if i understood correctly you got the animation to transfer by also creating an fbx file in addition to the transfer then replacing the fbx file in the file path you mentioned--and that worked? Did you have to delete the other file there also is this the main folder for each transfer you do? Also is a new folder created each time. forgive the noob questions, i have been trying to transfer animations using bridges for many hours now and my brain is fried
I tried replacing that file and it did not work.
This is what happened when I replaced the fbx
Curious what process you use for joint realignment. I've always found the below efficient. If you're aware of a better way I'd appreciate hearing from you, or if this is an improvement to what you had been doing...well that's good!
1.) Highlight the entire bone hierarchy and use the Joint Align tool with default settings (the mesh will appear to blow up).
2.) Click through each of the weight tags and click "Set Bind Pose." The mesh will snap back to the T pose, joints perfectly aligned.
The only issue I'm having with this method and the bridge is that the bridge seems to be bringing the figures over in a modified T pose, not the default one from Daz (90 degree instead of 45). Set Bind Pose snaps the meshes to the default Daz T pose, so the arms and legs becomes out of sync with the bones.
I got around this by using "Reset Bind Pose" before step 1 to force the bones into the Daz default T.
The align tool can give you some success but it does not align the joints exactly how they are in DS, which means you run into issues when you want to use expresso to bind corrective morphs to specific axis rotations. You can get some moderate success on some but run into problems on others because things will be off.
A quicker way to do each joint by itself is to turn off skin modifier, align your joints, click set bind pose with nothing selected. Then turn skin modifier back on. No need to go back and forth on each one.
You are right, I did not even notice that part. So used to the t-pose that the figure not being in a-pose did not even register as an error in my brain :)
To your question about the fbx replace. Yes I simply created a new figure first by saving a blank g8f with the save as > figure/prop asset, then copied away all unneeded morphs and basically just left the morphs in it which I needed, including the daz3d base correctives. This I exported as an FBX and replaced it inside the C:\TEMP3D folder renaming it to the file that the script created on the previous export done by the script. I have no idea what went wrong with your file, but maybe there are issues if you already have animation included? I have not tried this yet and only exported my stuff with default pose and no keyframes set for any type of animation.
Addition : I am aware that it is already an okay start to use the align tool and fix things manually, but what appears to be a minor hassle, only turns into more and more frustration the more you have to do this on every export from DS. This is the exact reason for me to stick to posing in DS, and export static poses to C4D for composition and renders for years now. Because the effort to fix everything for each and every new character... I would probably go insane. Those things should be fixed by developers so that the end user does not have to grind on mundane things that could be done by a script :)
Someone asked why lots of morphs are exported. Because you can dial in Face Morphs in in C4D. Select the Pose Morph tag on the object and you get a lot of sliders to dial in facial expressions in the tag parameters ... wow ...
I've only done this once as a test, but my G8M came into C4D with no textures. Is there a step I missed somewhere?
I only tried this with one G8F so far and the diffuse was exported fine, but nothing else. Will try more characters tomorrow.
Note the Xpresso tag on the base mesh. The morphs on the face are linked to the morphs on the eyelashes. However, the morphs are also imported with EVERY other mesh as well, including clothing. These duplicate morph targets contribute to file bloat and can be safely deleted if the mesh in question has nothing to do with the face (the morphs on the hood for instance I would probably leave because the chin needs to morph). Of course, if DAZ does update to allow morphs other than just face morphs to import, we'll have to revisit then. I shudder to think what the file sizes would be if it tries to import every morph possible x however many meshes are attached to the figure.
It should also be noted that the file size bloat is because all the morphs are through morph targets, not vertex deltas. You can EXPONENTIALLY decrease file size and increase performance by converting all the pose morphs to deltas and deleting the morph targets.
[darn double post, please delete]
HI Anyone else having trouble with the main body mesh - it's missing in my file
As for the morph bloat : The script should not try to turn this figure into a direct copy of what it is in DS. It is sufficient to simply bake the shape into a main morph, include base JCMs and leave everything else off, otherwise it will be total madness. And I absolutely agree that expression morphs should not even be duplicated onto other figures. The scripts need rulesets to exclude morphs in some way.
If anyone is interested, I can put together a tutorial for how to convert pose morph target meshes into simple vertex delta morphs in the pose morph tag. Again, this is much more performance friendly and in my opinion much more versatile.
I would be interested in that.
Having done all this manually before bridge was released - this bridge is a really good start but needs more work - like mapping the corrective morphs via python tag.
This is of course just half the battle.
There is no execuse for the slow bog that is Cinema4D pose morph system. I have exported hundreds of morphs to Blender and thousands to UE4, and there is no visible performance hit.
Here is a script I've started to apply all the corrective morphs, if anyone is interested. feel free to use for your projects, just make new python tag and paste it in there. You have to change line 110 to point to your daz mesh. Add the user data as in pic below to the python tag.
This is easier than messing with xpresso imho.
https://gist.github.com/maxenko/10a8472aafe8adc1b3be96f8090700fb
Here is preview of it in action.
https://imgur.com/a/bBpIw10
How much more friendly?
Think about it, every single morph is a duplicate of your entire figure mesh, times how ever many morphs you have, times how ever many meshes you have. Point coordinates are just a few numbers in memory.
I tried a mesh with hair, shirt, pants, shoes, and jewelry and went from 3.3GB to 229MB. That's over 90% reduction.
I don't want to theorize. Do you have actual example of this working with a hundred morphs that shows better performance?
I would think the reduced file size from 3.3GB to 229MB I stated in my example would speak for itself to how much quicker C4D can process the scene. One has hundreds of copies of a figure mesh, the other doesn't.