DAZ Studio to Unreal Engine
Purpose is demonstrating the methods of bringing Characters from DAZ into Unreal Engine completed with rigging, materials, morph targets, animations & clothing.
Introduction
Basically I wanted a realistic character to explore animation and AI in Unreal Engine and, as I'm not good at character modelling, rigging or skinning I decided I would utilise the characters from Daz Studio. This led me down a path of much trial and error to work out the most suitable methods for bring characters form Daz to Unreal. Hopefully this will save other people some of the time and headaches.
These methods aren't meant for creating highly optimised characters though we will explore some optimisation methods along the way such as creating an LOD for the character.
I'm not suggesting that these are the best methods, but it's what has worked well for me so far.
Some of the processes (such as morphs for the characters head) are quite repetitive and tedious to do.
Software
-
Daz Studio 4.8
Earlier versions should still work but haven't been tested
-
Photoshop
Or similar such as Gimp
-
3d Max 2016
Earlier versions should still work but haven't been tested
-
Unreal Engine 4.11 Preview 6
Newer versions could work
Before you start
Beforehand, you can organise things however you like, however you are going to end up with quite a few working files for use in different applications so it's a good idea to create a working folder to keep all the files organised. Something I generally like to do is to create a working folder for each character and then use the following directory structure.
Character Name
-Daz
--Morphs
--Animations
-Max
--Morphs
--Animations
-UE
--Meshes
--Textures
--Animations
Part 1 - Transferring the base character from Daz Studio to Unreal Engine
Introduction
This is the first part in a series of tutorials about transferring various assets (characters, cloths, animations, morphs etc) from Daz Studio to Unreal Engine.
In this part we'll cover transferring the base character mesh from Daz Studio to unreal Engine, including a single LOD and some basic materials.
Let's get started.
Preparing and exporting the base meshes from Daz
Starting with an empty scene in Daz Studio, add the character you want to export. For this tutorial I'll be using the Michael 7 character.
I'm going to leave the character as is, but it's at this point that you would adjust the base character to your liking.
The aim here is to set the default/base shape of your character. All of the changes you make to the character at this point will be baked into the base mesh for the character. That is, they won't be adjustable via morph targets in Unreal Engine. Those will come later.
Now I'm going to create a null object called root, which is going to be the root bone for our character.
The reason I do this is in case I want to do root motion animations in Unreal. I've found that if I don't do this then, when the character is exported, it's root bone will be rotated 90° around the X axis and this causes problems in Unreal when trying to implement root motion animations. By parenting the character to a null object, we're ensuring that it's root bone has zero transforms and rotations applied.
Once you've create the null object, parent your character to it so that your character is a child of the root null object. If you've done it correctly, in the Scene explorer you should see your character has become a child of the root null object.
The next thing I like to do at this point is to save the scene to my working folder as we're going to be coming back to it several times throughout the tutorial. I'm going to save the scene as base.duf.
Now we're going to export the base character as an FBX. These are the export settings I use. Make sure that the FBX Morph Export Rules are set to bake everything.
Next we're going to decapitate the character. Or rather, we're going to hide all of the body parts except for the head.
The reason I do this is because I find it easier when preparing the mesh in 3d Max if I have the head separate, to use as a guide.
Hide each of the characters body parts including the eyes. Leave only the head and the internal mouth parts (teeth, tongue etc).
At this point I like to save this scene (with only the head) as a separate Daz file so that we can easily return to it later. I'm going to save the scene as head.duf.
Now we're going to export the head as an OBJ because we don't need bones or even textures for this one. These are the OBJ export settings I use:
We're going to leave Daz Studio for now, but we'll be coming back to it later.
Preparing the textures
If you go into your working directory you'll see that when we exported the base FBX, Daz Studio kindly gathered all of the diffuse textures used on our character into a folder.
However it's likely that the character has other textures which will be useful for setting up the materials inside of Unreal Engine. So, go to your Daz Studio content folder and locate the source directory for your characters textures.
In the case of this character the source textures are located in \Content\Runtime\Textures\DAZ\Characters\Genesis3\Michael7
This character has normal maps, specular maps and subsurface weight maps for the head, torso, arms and legs. We're going to copy all of these into our working directory, where the existing diffuse textures are located.
You should now have all of the textures under your working directory. Something like this:
Now that all of the characters textures in the working directory, I like to open them all in Photoshop and re-save them as TGA's into my UE\Textures directory as these will become the final textures we import into unreal Engine.
I also like to rename them along the lines of this naming convention.
When I get to the specular textures, I also like to invert them and re-save them as roughness textures. Simply inverting the specular map to create a roughness map probably isn't the perfect method but I've found that the results are quite good and you can also adjust them further in Photoshop.
Just remember that any changes to make to one of the body parts textures (head, torso, arms, legs) you also need to make to the others. Otherwise you'll get seams between them in Unreal Engine.
When all that is done, you should end up with something like this:
NOTE: as I mentioned in the introduction, I'm aiming for realism and not optimisation however, if you were looking to optimise this is one of the points that you could do so. For example, most of the textures for this character a 4k. You could reduce them to 2k (or even smaller) if you wanted to. You could also pack the textures into a texture atlas but this would require altering the UV's on the character either inside of Daz before exporting or inside of 3d Max. However, I'm not going to bother with that for the purposes of this tutorial.
Now it's time to jump into 3d Max.
Preparing the meshes for export to Unreal Engine
Importing the base mesh
The first thing to do once you've started 3d Max is to make sure your units are set up correctly.
Set the Display Unit Scale to Metric -> Centimeters and set the System Unit Scale to 1 Unit = 1 Centimeter
Now we need to import our base.fbx mesh into 3d Max.
These are the settings I use for this step:
Once it's finished you should see you character inside 3d Max, complete with the bones and skinning. I've hidden the bones in this screen shot to make the mesh easier to see.
The next thing I like to do is rename the mesh inside of 3d Max. I'm going to call it MichaelBase. We're going to end up with quite a few meshes inside this scene so it's a good idea to keep things organised.
I also like to un-link the mesh from the bone hierarchy.
As usual, the next thing I do is save the Max scene into my working directory, under the Max folder.
This character comes in at 16,828 polygons. Note that when you export an FBX from Daz Studio it will always be at the base mesh resolution. It's doesn't matter what you set the resolution to inside of Daz, the mesh will always be exported at it's base resolution.
16,828 polygons is quite low for a hero character these days. If you look closely at the ears you can see that there is hardly any geometry and they look quite square in certain places. Also, when the arms are bent down the silhouette around the shoulders isn't very smooth.
We want this character to hold up when the camera is very close to it, so we're going to subdivide it. However, we're also going to keep a copy of the character at this base resolution as this will become our LOD mesh.
We're going to be doing quite a bit to this character inside 3d Max and the order for some of the steps is very important, so pay attention.
Saving the skin data
As our character has been imported with all the skinning intact, we don't want to loose any of the skin data. So before we do anything else we're going to save the skin data so that we can reuse it later.
Under the Utility panel, click the More button and select SkinUtilies. Then, with the characters mesh selected, click on the Extract Skin Data To Mesh button, under the SkinUtilies.
This will create a clone of the character mesh which has all of the skinning vertex weights baked into it. We can hide this for later use.
Now that we have saved the skin data we can collapse the modifier stack of our character. We'll be adding the Skin modifier back again later.
Cleaning up the material
By default, this character has 17 materials (which is quite a few for a character) and, whilst we're not too concerned about optimisation in this tutorial, some of those materials aren't at all necessary so we might as well get rid of them. I'm going to reduce the material count to 12, which is still quite high but better then 17. There are many ways in which we could reduce the material count even further but they'll all outside the scope of this tutorial.
Note: What your final materials end up as depends a lot on your character and your requirements so it's really up to you how you set your materials up.
For example most Daz characters have separate materials for the face and the lips. Because I don't plan on this character wearing lipstick, I can safely combine the face and lips into a single material. Even if I did want my character to wear lipstick there are others ways this could be achieved with a single material inside of Unreal Engine, such as using masks etc.
This also provides us with the opportunity to apply proper naming conventions to the materials as well as pointing them to our new textures, which are now in TGA format.
So, open up the characters material in the Material Editor. Then make a new Multi/Sub-Object material. I'm going to give the new material 12 slots. This new material will be our final one. The original material is just for reference.
Then I'm going to create each of the standard sub-materials using the diffuse TGA textures we prepared earlier, until I end up with this:
A couple of things to note:
- The name of each of the sub-materials determines what those materials will be called inside Unreal Engine when we import them, so it's a good idea to give them meaning names which follow the naming conventions.
- The M_EyeMoisture material has no diffuse texture. It's just a transparent material.
- The material for the eyeballs is there, however we're going to need to change our texture later on.
Now, when I apply the new material to the character.. bad things happen:
This is because the material ids assigned to each of the polygons in the characters mesh don't correctly match up with the slot numbers in our new material. So we're going to fix that now.
The first thing I do here is go into the Element sub-object mode of the Editable Poly (the character mesh) and I detach the parts which make up the eyeballs. There's about 3-4 elements which make up the eyeballs. Make sure you don't attached the eyelashes...just the eyeballs.
Once you've detached the eyeballs you can hide them for now. We're going to be modifying the eyeball geometry later on as the eyeball geometry that comes standard with Daz characters isn't well suited for real-time rendering inside game engines.
Now it's just matter of going into the Polygon sub-object mode of the Editable Poly (the character mesh) and selecting polygons by material ids and setting their new material id's to match our new material... this is where having the original source material can come in handy. Don't forget to do the inside of the mouth and the teeth!
When you've done that your character should be looking like it's old self again..albeit without any eyeballs.
At this point it's probably a good idea to save your scene (save often) if you haven't already so that you don't have to repeat that process.
Subdividing the character
Now we're going to create a copy of our character. Make sure you create a copy and not an instance. I'm going to call this new copy MichaelHigh as it's going to be the hi-res subdivided version of our character.
Now apply a Turbosmooth modifier to this new character mesh so subdivide the model.
The hi-res version of our character now has around 130,000 polygons which is a lot but is still on par with some of the new AAA games such as Ryse. Sure our character is currently naked, but when we do add some clothes it isn't going to be additional geometry necessarily, because we'll be replacing the bodies geometry where it gets covered up by the clothes.
Having said that, this is one of those points where you could optimise the hi-res mesh if you wanted to. One way to do this would be to remove edge loops where the additional geometry wasn't required in order for the silhouette to hold up. For example, areas which don't bend much, if at all, such as the shins. However there are some rules you would need to keep in mind to ensure the skin data can be reapplied correctly and that's all outside the scope of this tutorial for now.
Speaking of the skin data, we need to repeat this process with our base skin data as well.
So, create a copy of the base skin data mesh (I called it SkinData_MichaelHigh) and apply a Turbosmooth modifier to it as well.
You can collapse the modifier stack for both the hi-res character mesh and the hi-res skin data mesh at this point by adding an Edit Poly modifier to each of them and collapsing the stacks.
At this point, if you've been following along, you should have a base and hi-res version of the character mesh AND a base and hi-res version of the skin data mesh.
Note: There is one problem with Turbosmoothing the character mesh (there's more than one problem I'm sure but this is one I've spotted before) and that is that the teeth become a bit too rounded and the gaps between them a bit too large.
As you don't generally see a characters teeth very often I'm not going to bother fixing them in this tutorial, however if you wanted to fix them it would be fairly easy. You'd just need to adjust the geometry to have better edge loops in place before apply the Turbosmooth. Unlike most of the rest of the body, the teeth don't bend or distort in any way. So the problems you might run into with other parts of the body when re-applying the skin data, can be easily corrected for rigid parts of the body like teeth, once the skin modifier is re-applied. The top row of teeth will be 100% weighted to the top jaw bone and the bottom row of teeth will be 100% weighted to the lower jaw bone.
Separating the head
Now we're going to separate the head from the rest of the body on both our base and hi-res character meshes.
This next step is super important!!
If you don't do this then you will get ugly seams between the head and body.
What we need to do is set all of the vertex normals on our character mesh to be explicit and then we need to be careful that we don't do anything that will cause 3d Max to lose those explicit vertex normals.
To do this, select your base character mesh and then add an Edit Normals modifier. Then go into the Normal sub-object mode of the Edit Normals modifier and press CTRL + A on your keyboard to select all of the vertex normals.
With all of the normals selected, click on the Make Explicit button of the Edit Normals modifier. When you exit out of the sub-object mode you should see that all of the normals are now green, instead of blue.
Now collapse the modifier stack.
Then repeat this same process on your hi-res mesh.
Now we want to separate the head along the same edge loop that separated it inside of Daz Studio. I can never remember exactly where that edge loop is, which is why we exported the head separately, as an OBJ, from Daz Studio.
So, now it's time to import that head OBJ. We're only going to use it as a guide and will delete it when we're finished with it.
Once you've imported the head guide you should see something like this:
Here you can see the head guide on top of our base character mesh and we can now easily see where the edge loop we need to separate the head from is.
This next step is super important!!
You might be tempted to just select all of the polygons that make up the head portion of our base character and detach them. DONT!! If you do that you will break the explicit normals that we set up previously and will have visible seams between the head and the body.
In order to not break the explicit normals, we can really only delete polygons. This means that we're going to have to create 2 new copies of our base character mesh as we'll keep the original as a backup.
With one of the copies we're going to delete the polygons which make up the head, leaving only the body. With the other copy we're going to invert that, so that we're deleting the polygons which make up the body, leaving only the head.
If it all goes well, you should now have separate head and body meshes for your base character, with no visible shading seams between them.
Now repeat the process with your hi-res character mesh.
The content of your scene should now be looking something like this:
Modelling and texturing the eyes
This section needs to be updated once the new eye shader docs have been released
If you've been following along you'll remember that we detached the characters eyeballs at the start and haven't really done anything about them since.
I wanted to use the new eye shader in UE 4.11 however the docs for the new shader haven't been released yet. So everything in this section is really guesswork, coupled with a few bits of information that were provided in one of the Paragon videos.
The standard eyes for Daz characters are comprised of several separate elements such as the cornea, pupil, sclera.
In the Paragon video it was mentioned that the new shader only requires a single piece of geometry for the entire eyeball and that the cornea (the transparent bump at the front of the eye) is modeled into the geometry. So that's what we're going to to.. roughly.
The way I do it is to delete one of the eyeballs entirely (we're only going to model and and then mirror it for the other), I then delete all geometry except for the outer most layer, leaving something like this:
Then I modify the eyeball geometry so that the cornea bulge is a bit more prominent. Something like this:
Now, we also need to change our eye texture so that the eyeball and iris parts are combined into a single eye texture. I do this in Photoshop. Something like this:
Once our new eye texture is applied to our new eyeball, we'll need to adjust the UV's so that the they are centered in the 0,1 space until we end up with this:
Then we simply mirror (as a copy) the eye to create the other one, and then attach them together. These will be the eyes for our base resolution character mesh:
Now we can create a copy of the eyes, apply a Turbosmooth modifier to it and collapse the stack. This will become the eyes for our hi-res character mesh.
Now we're just about ready to starting bringing everything into unreal engine, but before we do that we need to re-apply our skin data.
Re-applying the skin data
Adding the skin data back to the character meshes is easy. Let's start with our complete base character mesh.
Select the mesh and add a Skin modifier to it, then add all of the bones to the skin modifier.
Once you've done that, select both the base character mesh and the base characters SkinData mesh.
Under the Skin Utilities, click on the Import Skin Data From Mesh button. In the dialog box that appears, click on the Match By Name button and then click on the OK button to apply the skin data.
You have now applied the skin data back onto the base character mesh. Now do the same for the base characters separate body and head meshes.
Now repeat the process for the hi-res meshes only this time make sure you're apply the hi-res skin data, not the base skin data.
Once you're done you should now have all of the base and hi-res meshes skinned. Now we just need to do the eyes.
Skinning the eyes
Because we've modified the geometry of the eyes we're not going to be importing the skin data. Instead we're going to be doing a tiny bit of manual skinning.
Let's start with the base resolution eyes. Select them and add a Skin modifier to them, then add all the bones to the Skin modifier, same as before.
Now go into the Envelope sub-object of the Skin modifier and make sure Vertices is checked under the Select panel. Select all of the vertices of the right eyeball and then select the rEye bone in the list of bones in the Skin modifier.
With the vertices of the right eyeball and the rEye bone selected, type 1 into the Abs. Effect field under the Weight Properties panel of the Skin modifier.
The right eyeball should change to be shaded red. This is indicating that the vertices of the right eyeball are 100% weighted to the rEye bone, which is exactly what we want.
Now repeat the process with the left eyeball vertices and the lEye bone.
Once you've finished this, repeat the same process for the hi-res version of the eyes.
Creating the LOD groups
I'm not going to go into much detail for this step because the process is well documented here.
Just create LOD groups for each of the base and hi-res parts of our character. That is, the complete character meshes, the body and head meshes and the eye meshes. You should end up with 4 LOD groups.
We've now finished preparing the character for export to Unreal Engine, so lets start exporting.
Exporting to Unreal Engine
Let's start with the complete character (we'll do the separate head and body parts next).
Unhide the LOD group for the complete character meshes and the eye meshes, also make sure the bones are visible.
Now select everything visible in the scene (CTRL + A) and then select Export -> Export Selected from the Max menu.
Obviously, we're going to be exporting as an FBX. These are the settings I use for this step:
Note: The name of the FBX file you export to will be the name which appears in unreal engine so, as usual, use a good naming convention. For this file I called it SK_Michael and I placed it under the UE folder of my working directory for this character.
Now, hide your complete character LOD group and unhide the characters head LOD group, so that you have both the head and eye LOD groups visible, along with the bone.
Now export these using the same process and FBX export settings as before. I called this file SK_MichaelHead.
Now, hide both the head and eye LOD groups and unhide the body LOD group. Now export using the same process and FBX export settings. I called this file SK_MichaelBody.
If you've gotten this far...well done!!
We've now finished with Max for the time being and can begin to import our character into Unreal Engine.
Remember to save you Max scene as we'll be coming back to it later on, but for now, it's on to Unreal Engine.
Importing into Unreal Engine
I'm going to be using Unreal Engine 4.11 Preview 6 for this section.
Create a new project. I'm just going to use the blank template.
How you organise your content is up to you, but I like to create a folder called Characters and within that I create a folder for each of my characters.
Under each character folder I create a Textures and a Materials folder.. but again, you can organise it how you like.
Now I'm going to import the complete character, into the Michael folder and these are the import settings I use:
The reason I like to import the entire character, even though we're going to be using the separate head and body meshes soon, is so that I can use the whole character for animation previews. It also ensures Unreal creates all of the materials and the complete physics asset as well.
You can see that the character has been imported, all the materials have been created and all of the diffuse textures have been imported.
If you open up the skeletal mesh for the character you can see that it has the single LOD we created.
You can adjust the screen size that the LOD kicks in. I set mine to 0.8. You can test the LOD by using the LOD Coloration view mode.
Now we're going to import our head and body meshes but this time we're going to change the import settings:
There are 2 important differences with these settings when compared to the previous import settings:
- We're telling Unreal to use the existing Skeleton that was created when we did the first import.
- We're telling Unreal to use the existing Physics Asset that was created when we did the first import.
Once that's done you should have your head and body meshes imported, each with a single LOD level. Whatever you set the LOD screen size to, make sure it's the same for both the head and the body so that they transition at the same time.
This next part is optional, but I like to move the textures into the Textures folder and the materials into the Materials folder. I'll leave everything else under the Michael folder.
Next we're going to import the rest of our textures. That is, the normal maps, roughness and sub surface maps.
Once you've imported the other textures, open the normal maps inside of Unreal and tick the Flip Green Channel option, and then save them. Note: I'm not 100% sure if this is correct for Daz Studio normal maps, but I think the normals look a bit better if I do this. It's up to you.
Now let's build a basic skin material.
Creating a basic skin material
Under the Materials folder, create a new Subsurface Profile. Leave it's settings as the default for now.
Now create a new Material that will be our master skin material for our character. I just called it M_MichaelSkin.
Open the material and change the Shading Model to Subsurface Profile and select the profile we created in the previous step.
Now drag the 4 face textures for your character into the material. That is, the base color texture, the normal texture, the roughness texture and the subsurface texture.
Convert the 4 texture samplers to parameters and give them meaningful names.
For a very basic skin material I just used the following setup:
You can adjust the specular and the roughness multiplier to your liking, depending on how wet you want the skin to look.
You can make your skin material as complicated as you like. For example you could use material parameter collections to control the overall wetness, or dirtiness of the skin etc. I'm just going to leave it like this for now.
Now we're going to create 4 material instances based on our master skin material. One for the face, torso, arms and legs.
Under the torso, arms and legs instances, replace the textures with their corresponding textures.
Now open up your character meshes and replace the face, torso, arms and leg materials with the new Material Instances we just created.
Now I like to create a simple scene to test the skin under different lighting conditions.
I create an empty scene with a simple/black ground plane, a single directional light and a single skylight with an HDRI attached. All the lights are set to movable as I prefer to use dynamic lighting for this. I generally disable auto exposure when adjusting skin materials and I test the skin shading under different lighting conditions to see how it holds up.
Part 2 - Creating a simple modular character blueprint
Introduction
This is the second part in a series of tutorials about transferring various assets (characters, cloths, animations, morphs etc) from Daz Studio to Unreal Engine.
In this part we'll continue we're we left off in Part 1 by setting up a simple modular character using the character and animation blueprints.
Let's get started.
Creating the animation blueprint
Open up the Unreal Engine project that we created in Part 1. Right-click on the characters Skeleton asset and select Create -> Anim Blueprint from the pop-up menu. Give your Anim Blueprint a meaningful name.
That's all we need to do for the animation blueprint for now but we'll return to it in Part 3.
Creating the character blueprint
Right-click on the characters folder in the content browser and select New Asset -> Blueprint Class from the pop-up menu.
Select Character as the parent class in the dialog box that appears.
Give your character blueprint a meaningful name and then open it up.
Select the Mesh skeletal mesh component and then select your complete character mesh under the components properties:
We're going to use the complete character mesh just to position our character.. you could also use your body mesh.. either way.
Now, rotation your character -90° around the Z axis so that your character is facing the same direction as the Arrow component.
Now, I prefer to go into the Front viewport mode and zoom in on the characters feet. It also helps to turn off grid snapping.
Now drag your character down so that the bottom of the characters feet line up with the bottom of the Capsule component. I also find it helps to use the bottom of the window to represent the ground and align it that way. Remember that your character would have some weight to it so it looks better if the foot goes through the floor a small amount.
Now that we've positioned our skeletal mesh component properly, replace your complete character mesh with your head mesh for the Mesh component.
Now, duplicate the Mesh component. I called it MeshBody. Then assign your characters body mesh to it.
You should now have your complete character inside your character blueprint in a basic modular form. That is, the head is a separate mesh to the body.
Note: you can go even further with modularising your character. In the past I've had characters with separate arms and legs as well. It's up to you. There are some performance considerations as the more separate mesh components you use for your character, the more draw calls will be required to render it. However, if your character is designed to wear a lot of different armor pieces or outfits then it might be worth going down this path. As with everything, it's a trade-off.
Compile and save your character blueprint and then minimise it. In the test map we created in Part 1, replace the complete character mesh in the scene, with the character blueprint we just created.
If everything has gone to plan so far then you shouldn't see much difference, other than the collision capsule from the character blueprint will be visible. You can hide that if you want to, which I usually do.
You should also see (or rather not see) that there are no visible seams between the head and body meshes.
Go back into your character blueprint and select the Mesh component. Under the Anim Class drop-down menu in the components properties, select the Anim Blueprint that we created at the beginning.
Important - Only do this for the Mesh component (the characters head). Don't do this for the body component as the body will be taking it's animation cues from the head.
To do this, go into the Event Graph of your character blueprint and create the following simple blueprint graph.
Compile and save your character blueprint.
Part 3 - Transferring animations from Daz Studio to Unreal Engine
Introduction
This is the third part in a series of tutorials about transferring various assets (characters, cloths, animations, morphs etc) from Daz Studio to Unreal Engine.
In this part we'll cover transferring animations from Daz Studio to unreal Engine
Let's get started.
A quick foreword
Personally, I probably wouldn't use Daz Studio for character animation. It would probably be better to create a proper control rig for our character in 3d Max and use Max for animating.
However, some people prefer Daz for animation and as this is a tutorial about transferring assets from Daz to UE4, we'll go through the steps that have worked for me in the past when transferring animations from Daz. I'll also point out some of the problems I've run into along the way.
Some things to note
I've run into problem when using some parameter sliders to animate. For example, with the Michael 7 character that we've been using, when you click on the hands it has parameter sliders for things like Left Hand Grasp which transforms all of the fingers at once so that the fingers are in a grasping position.
However, when I have exported animations into UE4 where I had used these sliders to animate, the fingers would often end up deformed. I haven't yet discovered what causes this. It's possible that these sliders are using a combination of bone rotations and morph targets and that the morph targets are messing things up, but I'm not 100% sure.
For that reason, I've had to animate each of the body parts individually, using only the three core parameters of Bend, Twist and Side-Side. For example, if I needed to make the hand into grasping position I'd have to bend each finger individually, which is a bit of a pain.
If you went through Part 1 of this tutorial you'll remember that we create a root null object which forms the root bone of our character. If the animation you are working on is intended for root motion animation inside UE4 you need to ensure that you are moving the root null object in Daz, for x, y, z translations and not the Hip bone, which is what you would generally use.
Exporting a basic animation from Daz Studio
I'm not going to cover how to animate in Daz Studio as that is not what this tutorial is about. If you're unsure how to do this, I'm positive there will be some other tutorial out there that would cover the process.
Here I've created a very quick (and bad) animation in Daz Studio. Just wanted some fairly extreme bends to see how it looks in Unreal Engine.
Now we're going to export the animation as an FBX using the following settings:
I've never had any success importing animations directly from Daz to Unreal Engine. I've found that I need to go through either 3d Max of Motion Builder first. In this case we're going to use 3d Max.
Inside 3d max, import the animation you just exported. I use the following import settings:
At this point we don't have to do anything else to our animation, other then export it out again. However, I generally delete the mesh, leaving only the animated bones, but it's not strictly necessary.
Now just export the animation. I tend to place animations in my working directory under \Character\UE\Animations.
Press CTRL + A to selected everything in the scene (all of the bones) and then select Export -> Export Selected from the Max menu. Choose the FBX format and use the following settings:
Now, open up your Unreal Engine project so that we can import the animation.
I tend to create a separate folder under my character folder for Animations.
Right-click on the folder and select New Asset -> Import form the pop-up menu.
Select the animation FBX that we just exported. In the dialog box that appears, select the Skeleton of your character and make sure Animation Length is set to Exported Time.
Note: If you included the characters mesh in your FBX export you will also see the option to import the mesh. Make sure that is unchecked, otherwise you will import another copy of your character, which we don't need.
Once the animation has imported, open it up in Persona to preview it. Note: you might want to change the preview mesh to your complete character mesh. You should see the animation playing on your character inside UE4.
Now let's change our animation blueprint to use this animation so that we can see it running on our modular character inside of our test scene.
Open up the anim blueprint in go go to the Anim Graph. Now drag your animation asset from the Asset Browser into the graph.
Now connect the animation node to the Final Animation Pose node.
Compile and save the animation blueprint.
Now play or simulate your scene. You should see your modular character playing your animation loop.
Part 4
Introduction
This is the fourth part in a series of tutorials about transferring various assets (characters, cloths, animations, morphs etc) form Daz Studio to Unreal Engine.
In this part we'll cover transferring clothing for our character from Daz Studio to unreal Engine.
Let's get started.
Exporting the clothing from Daz Studio
One thing to note is that most of the clothes in Daz are very hi-poly, even at their base resolution. They really aren't designed for real-time engines, so just be aware of that.
For this tutorial I'm just going to use this Biosuit thing because it will demonstrate the modular clothing ideas quite well.
Another thing to note is that the clothes in Daz vary a lot in the way they are implemented. For example, some clothes remove the polygons of the character they are applied to in the areas that are obscured by the clothes. This is basically what we're going to be doing for our modular character so that we aren't ending up with unnecessary polygons on our character where the clothing is covering the body.
Also, some clothes (and some additional body parts such as hair) contain extra bones, which isn't a problem as long as you do some intermediate preparations in 3d Max before trying to import them into Unreal Engine.
So, lets export the scene containing the pants as an FBX using these settings:
Note: at this point I would collect, rename and re-save the textures for the pants in preparation to Unreal Engine. As we covered this in Part one for the character, I'm not going to cover it again here as the process is the same. See part 1 if you need more details.
Preparing the clothing in 3d Max
Now, let's jump over to 3d Max.
I prefer to start with an empty scene in 3d Max. Eventually we'll need to combine the clothing with our character inside 3d Max and so you could just start with your character scene and import the clothing directly into that, however I find it easier to prepare the clothing in a separate scene first and then combine them later.
Inside 3d Max, import the pants FBX that we exported from Daz. I use these settings:
Note: I'm going to gloss over the next few steps because it's the same process that we followed for the character mesh in Part 1. Refer back to Part 1 if you need a more detailed guide. Basically we want to create a base resolution and a high resolution version of both the clothing mesh and the clothing skin data.
Once it has finished importing, unlink the clothing mesh from the bones.
Now, extract the skin data from the clothing and then collapse the clothing in the modifier stack.
You can now delete the character and the skeleton so that you're left with just the clothing and the skin data.
Now duplicate the clothing mesh, apply a Turbosmooth modifier to it and then collapse it down to an Editable Poly.
Now duplicate the clothing skin data, apply a Turbosmooth modifier to it and then collapse it down to an Editable Poly.
You should have something like this in your 3d Max scene: