Maya Figure Report And Options


A DTL figure report and options dialog with the default, recommended options selected

Figure Report: Figure Details

The figure report give details about the figure described in the .dtu file that was exported from DazStudio by the DazToUnreal plugin. It provides a way to check the state of the model before starting the conversion process.

The report lists the number of vertices and the subdivision levels at which the mesh/s were exported from DazStudio. These details are supplied as an aid to figure optimisation.

Figure Report: Non-manifold Geometry Report

Nonmanifold Geometry: The main purpose of the report is to highlight any issues with nonmanifold geometry because it can cause the conversion to take much longer, fail or create distorted geometry. Nonmanifold geometry can also create performance bottlenecks in game engines.
See here for more information about nonmanifold geometry.

If you have an asset listed as having nonmanifold geometry it is probably best to convert it separately because Maya's nonmanifold geometry fixes are more likely to work when a nonmanifold mesh is processed spearately.

You may also want to consider contacting the creator of the asset and asking them to fix the problem, as if the asset has been sold with an interactive license it seems only reasonable to expect it to be nonmanifold.

Exporting nonmanifold geometry separately

Imported Foot Pose (if any): If a foot pose has been set for exported shoes (e.g. high heels) then the joint angles are listed in the figure report. By default, DTL zeros out these rotations, as this is a requirement for the conversion process and skeleton compatibility in Unreal Engine. The joint angles must then be set manually in Unreal Engine. This can easily be achieved by using the DTL Component that is supplied with the DTL UE Demo Project (see here for details). The foot pose rotations are given here for reference for when they are manually set in Unreal Engine. The rotations can also be found in the script dialog console output at the end of the conversion process and in the 'MeshProcessingStats.json' file found in Documents/DazToUnreal/Config.

Conversion Stages

The DTL conversion in Maya is a three stage process:

  • Create JCMs: The custom JCMs optimised for game engines that use linear skinning (e.g. like Unreal Engine) are created during this stage of the conversion. This is the most time consuming part of the process.
  • Import Morphs: The morphs selected in the DazToUnreal plugin export dialog are loaded and applied to the figure as morphs during this stage. The time taken by this stage of the conversion is directly proportional to the number of morphs exported from DazStudio.
  • Convert Skeleton: The skeleton is rebuilt so that the joint names, rotation orders and orientations match those of the standard UE Mannequin during this stage. This is the quickest stage of the conversion process, typically taking only a few minutes.

Sometimes, when troubleshooting a particularly challenging conversion, disabling one or more stages of the conversion is desirable. The conversion stages option settings enable this.

Conversion Options

Merge Materials

Many of the materials exported by DazStudio are the same - or at least very similar. DTL can merge the more common ones, so that (for example) the Face material can be combined with the Lips, Ears and EyeSocket materials, thus creating a lighter asset that uses fewer draw calls when used in a realtime application. Enabling 'Merge Materials' is recommended for this reason. The default is enabled.

Triangulate Mesh

Unreal Engine does not handle quads. Daz figures are exported with quads. When enabled, the DTL script will convert the quads to triangles before export. However, if further, manual editing of the mesh is to be performed after conversion, it may be desirable to postpone triangulation, so this option is made available. The default is enabled.

Rename Joints

When enabled, DTL will rename the joints to match the standard Unreal Engine naming scheme. The default is enabled.

Optional Joints

DTL can add joints during the skeleton conversion process. Below are descriptions of the different joints that DTL can add.

  • IK joints: For use during IK operations in Animation Blueprints and Control Rigs
  • Finger / Toe end extensions: These are useful for finger IK and for enhancing finger collision functionality, particularly in VR
  • Muscle Joints: Whilst these joints have no geometry bound to them, they provide a place to anchor physics bodies whost movement can be used to drive morphs. See here for more details

Export Pose

Standard Daz Pose (Default)

In most cases, the Standard Daz 'APose' is the recommended export pose, as all the JCMs work from the assumption that this is the pose in which all the joint rotations are at zero.


A converted DTL figure in the standard Daz A Pose
Retargetting Pose

If a figure is being made for the express purpose of creating a retargetting rig in Unreal Engine, then it is best to export the figure in the standard Unreal Engine pose.


A converted DTL figure in the Retargetting Pose
TPose

If the figure is going to be used for animation in Motionbuilder or Maya, exporting the figure in a TPose will greatly speed up the figure characterisation process.


A converted DTL figure in a TPose
Export with flat feet pose

For Unreal Engine compatibility, this needs to be enabled for all figures, regardless of the foot pose required for any shoes worn (The DTL UE demo project contains functionality for restoring feet poses at runtime). However, there may be circumstances when exporting a figure with a shoes pose is desirable, so this setting is exposed for such eventualities. See here for more details.

File Export Options

Export Filename

DTL suggests a suitable name for the converted mesh, complete with the 'SKM_' prefix recommended by Epic. However, users are free to specify a different filename here.

Re-save fbx file

Re-saving the fbx file at the end of the conversion process ensures that what-you-see-is-what-you-get.

The reason this is necessary is because when Maya exports an fbx file it makes some changes. For example, joints that are bound to a second mesh might be disconnected from the skeleton. In addition, when re-importing an fbx file, Maya will create hidden meshes for all of the blendshape targets (morphs). These hidden meshes are required by other DCC applications (e.g. Blender) to make the morphs function correctly. Re-save fbx file is enabled by default.

Info: Manually Exporting After Making Changes

Once the DTL conversion has taken place you are free to edit the final fbx before importing to Unreal Engine. Once you have finished editing the DTL figure it can be exported using the options shown below.


FBX Export Settings

Beta Debug Options

Bake History Frequency

This setting is for users who are experiencing memory issues (slow performance, crashes) due to the system RAM being 32GB or less. All figure fbx files must have their non-deformer history deleted before export. During the JCM creation process, the accumulated non-deformer history progressively slows down each operation. To speed up the JCM creation process, the non-deformer history is regularly deleted. How often this needs to happen is dependent on the user's RAM. If the user's RAM is 32GB or less and memory issues are experienced, setting the slider to 'Bake History Frequency: Stability' will usually solve any issues.

Minimal Console Updates

This setting is only required when troubleshooting. When disabled, the DTL plugin will print additional information in the script console. Note that extra console output does slow down the conversion process, but not by much. Default is enabled.

Attempt Nonmanifold Geometry Fix

Nonmanifold geometry is considered highly undesirable. Please see here for further information. Maya has built in tools that can often fix nonmanifold geometry. The DTL script in Maya will attempt three different methods to fix nonmanifold geometry (when found) when this option is enabled. However, there are no guarantees that Maya will be able to fix the issues, especially when 'clean' meshes are combined with nonmanifold ones or figures with assets that have different subdivision levels are converted. The default is enabled.

Fast Vertex Manipulation

Fast Vertex Manipulation (MfnMesh) is the method DTL has used to move individual vertices around since the first beta release. However, some AMD users have reported crashes that always seem to happen when using Fast Vertex Manipulation, so for test purposes, vertex position changes whilst the Reference Pose Update process is going on are performed using the standard Maya api. This is signficantly slower, but much less prone to causing crashes on AMD systems.
This option is intended only for AMD users that are experiencing crashes that occur either during Update Reference Pose or during JCM creation. If you are experiencing crashes during Update Reference Pose, please try unchecking this option. If it solves the problem please let me know.

Update Reference Pose

When the fbx file is imported into Maya there are sometimes small changes in vertex position. Tests indicate that this is caused by the DazStudio fbx export process. At the start of DTL's export process in DazStudio, a snapshot of the combined mesh is saved as an obj file. To ensure that the figure matches exactly what was seen in DazStudio, the vertex positions from the snapshot obj are applied to the imported figure mesh. In this way, any issues created by the fbx export / import process are automatically fixed. Occasionally, when trying to convert a particularly mangled, nonmanifold figure, the updating of the reference pose can cause problems, so the option to disable this feature is made available to the user. However, in most cases the best idea idea is to address mesh issues more directly; exporting as a separate asset, manually fixing and re-importing into Daz studio or asking the creator to fix the nonmanifold issues are all better solutions. The default is enabled.

Disable Undo History

Undo history during the conversion process is disabled by default. However, enabling it may help with rare, random crashes.