Export DA:I model into Blender

From Nexus Mods Wiki
Jump to: navigation, search

This tutorial will walk you through the process of exporting a 3d model out of Inquisition and into Blender. 

What you need:

I am using the following programs/versions:

Frosty Editor https://frostytoolsuite.com/downloads.html
part of the Frosty Tool Suite, not the ModManager
Blender 2.8 http://www.blender.org/download/releases/2-80/

If you are using other versions of the tools that will probably still work, but the user interface may look different.


1)  Find the character you want to export in Frosty Editor.

Filtering in Frosty

You can filter by using the topmost box in the Data Explorer part of the UI. The example below shows only meshes that are not animated and have "templar" as part of their file name (such as prp_re_seeker_templar_flag_mesh). To search for only animated templars (armour etc.), use skinnedmeshasset instead.


rigidmeshasset: A non-animated object
skinnedmeshasset: An animated object (character, monster...) 
textureasset: A texture

AND/OR: needs to be in uppercase, or it won't work

contains: limits the display by asset name


I'm going with Cassandra's Skyhold PJ plate, because first of all she's pretty and I love her, and second of all, she has six meshes in total, which is sort of a lot. Also, how many people use plate armor as part of their pajamas? How badass is that?

For any character that you want to hook up in Blender, you will need to export MeshAssets and TextureAssets for head, face, hair, armor.

You export an asset by opening it in the preview, and then clicking on "export" (screenshot_03).RTENOTITLE

For meshes:

Skeleton DA3/Animation/Humanoid/Human/AdultFemale/hf_skeleton
Version FBX_2017 (the latest)
Scale Meters

For textures: I'll use PNG format.

1.1) Armor

Armor can either come in parts or as a single mesh

Cassandra has four pieces of armor, whereas Alistair has just one. If you want to read up more on that, check out Padme4000's excellent Tutorial on DeviantArt.

You can see which meshes you need by looking them up in the AppearanceMeshSet (screenshot_02), you can also open them directly from there.

01 frostyExport.png

That will give you the following meshes:

Mesh(es) Path Files
Legs DA3/Actors/Cassandra/Appearances/Var1/Models hf_cassandra_var1_core_0001_model_mesh
Arms DA3/Actors/Cassandra/Appearances/Var1/Models hf_cassandra_var1_core_0010_model_mesh
Chest DA3/Actors/Cassandra/Appearances/Var1/Models hf_cassandra_var1_core_0100_model_mesh
Buttflap DA3/Actors/Cassandra/Appearances/Var1/Cloth hf_cassandra_var1_core_0100_cloth_model_mesh


You may want to export the textures as well, while you are at it. They won't be needed until part 2 of the tutorial (forthcoming), but I will assume that you have them by then and link here, so you may as well do it now.

Armor base textures and bumpmap: DA3/Actors/Cassandra/Appearances/Var1/Textures.

  • hf_cassandra_var1_0111_t
  • hf_cassandra_var1_0111_n
  • hf_cassandra_var1_0111_d
  • hf_cassandra_var1_0111_s

Textures for the colored parts: DA3/Actors/BaseMaterials/Cloth.

  • ptrn_cloth_lustrouscotton_d
  • ptrn_cloth_lustrouscotton_s
  • ptrn_cloth_samite_d
  • ptrn_cloth_samite_s
  • ptrn_leather_bear_d
  • ptrn_leather_bear_s

1.2) Head

You will need to export the textures for eyes and eyebrows just once, as they are part of the head mesh.

Head DA3/Actors/BaseHeads/Cassandra mt_cbt_cass_mesh
Face DA3/Actors/BaseHeads/Cassandra hf_har_cass_n_e3
Hair DA3/Actors/BaseHeads/Hair/Textures mh_hf_cassandra_d


UHEL_F_d (lashes female)
UH_eye_t (Eye tint)
UH_Iris_n (iris bumpmap)
UH_eye_n (eye bumpmap)
UH_eye_d (eye normal map)
... and whatever else you want to experiment with.

2) Importing it into Blender

The interface

Now it's time to fire up Blender. Do File/New/General. You'll see this:



Delete the cube and select the root object, "SceneCollection", in the Outliner.

Importing the files 

Now we start importing all the meshes. Select File -> Import -> FBX from the menu and do one at a time.
If you have no idea what you're doing, best import all files first, then proceed with the instructions below.

I'm starting with hf_cassandra_var1_core_0001_model_mesh.fbx

You will see a blue X-like thing. That's the skeleton - it'll be required for animation. Look at the scene editor now - there is a yellow thing called "Skeleton". Hiding that will make the blue thing go away, which is fine, because we don't need it for a long time yet. 

Exporting the files again

Select File / Export / FBX. Make sure that under "Geometry", "Tangent space" is selected. Save, and try reimporting into Frosty. If you haven't made any mistakes, you should be good to go now!

What are these things I am seeing? 

Expand the yellow Skeleton. You will see the following things:

  • Meshes (the triangular icon): The actual 3d objects
  • LODs (the spiky object, annotated blue below): Those are for the purpose of grouping meshes together for the different mesh quality levels
  • Skeleton (annotated purple below): This hooks up the different objects with the animation data.

The annotations below assume that you don't want to reimport because you want a high-quality mesh to play around with. Please disregard them if you want to re-import.

04 overview.png

Why are there duplicates, and which one do I want? 

The fbx-Files we exported contain data for every resolution, that is, one empty and one copy of every mesh. 

  • Most files will have one mesh per resolution, but the head fbx contains three: Head, eyes, and eyelashes. 

Sort the duplicates for re-import

04 blender group mesh to LOD.png

You need to distribute the individual meshes to the correct LOD groups. _lod0 contains the highest resolution, _lod1 the next-highest, and so on. 
Find out which mesh has which number of polygons / vertices, and distribute them accordingly:

  1. Select the mesh (triangular icon) in the outliner
  2. Select the LOD (three axes) in the outliner
  3. Press Ctrl+P to parent the mesh to the LOD
  4. select "Object (Keep Transform)

Delete the duplicates

We want to keep the one with the highest poly count. Because we're lazy, we will use a python script to do this. 

Careful: This may crash Blender, so save now. If you crash, just open it and try again. 

By script

Switch to the "Scripting" perspective: 
055 open scripting perspective.png

Copy this script to your clipboard and paste it into the window. If you can't paste, click on "Text -> New" (Alt+N). 
Then, click the "Run Script" button.
0555 runscript.png

This script was written by yours truly (~manavortex), if I improve it, I'll update the source on github. 
This should remove all but the highest poly count version of a mesh, and any empty LODs. If it doesn't, check out the "by hand" section for manual cleanup.

By hand (the script doesn't work/wtf is it doing)

Go back to the "Layout" perspective if you are in the "Scripting" perspective so you can use the Outliner again. Delete any LODs that are still sticking around. 
Now you need to find out which of the remaining meshes actually has the highest poly count so you can delete the others. 

You can either do this (again) by running this script (you will see the results in the system console, or by using the edit mode.
05 editmode and console.png

You will be taken to edit mode automatically if you click the green icon under a mesh instead of the yellow one.
Compare the Vertex count in the taskbar, and delete the low-poly versions. 

05 poly count.png

Check if the root element is selected

If it's not, do that - otherwise, your stuff will end up nested and will look different from the tutorial.

Add all meshes to the first skeleton

First, switch the View back to Object Mode.

For every Skeleton.00x, repeat the following steps:

  • Click on each of the contained meshes
  • In the preferences area on the bottom right, set the "Object" to "Skeleton"
  • Shift-Click on the first Skeleton object
  • Move the mouse over the 3d viewer
  • press Ctrl+P to assign a new parent
  • Select "Object (Keep Transform)"
  • Rinse and repeat



This is how your Outliner should look now: