padme4000 wrote:how would I go about extracting the mesh and morph files for Inquisition and/or Mass Effect Andromeda?
Regardless what Frostbite game you'd like to work on, all
mesh tools developed by
id-daemon work the same, so the link tutorial by
Crofty from first post is still valid and current for anyone's needs, now when comes about the newly developed
morph tools for
DA:I/ME:A it works as follows.
Lets make this tutorial example for
DA:I game:
The
Fb_DAI_morph.exe tool needs the following assets to work:
3 parameters:
meshset,
skeleton,
morphresource
chunk will be found automatically
Usage example:
Code: Select all
Fb_DAI_morph.exe mt_basa_hf.meshset hf_skeleton.ebx hf_adamant_clarel.MorphResource
Basically the string above inside a text file with extension
.bat/.cmd will give you the following results.
- It will output a distorted head mesh with distorted face in
ASCII/SMD format, and a small
SMD fix for it.
- For heads which are not distorted, you can just use 2nd animation frame from
SMD fix as a rest pose of a skeleton.
- Non-distorted heads are those made not from "generic" base mesh, but have their own base mesh and most main characters are like this.
- If you're not sure which mesh is used for base, its name is inside of
MorphResource file, use any HEX software to find it in the beginning.
NOTE: In case no one knew,
BF4 tool
Fb_BF4_mesh.exe works for "usual" DA:I meshes.
Make sure you have a fully dumped game with all it's assets in their required file/folder structure.
Now go in your dumped folder and in
bundles folder create another new folder, I usually use "
_"
(underscore) to make sure its at the top, why use a new folder? to keep track of your progress and not get lost.
Now in your newly created folder make sure you have the following assets for the morph tool to work, I will use for this test
ElfFemale.
- Fb_DAI_morph.exe
- mt_basa_ef_mesh.MeshSet
- ef_skeleton.ebx <- skeletons are easy to find in the
ebx folder, they are named accordingly
- and any
.MorphResource you want to extract morphs, you get these from
res folder
Now I use the string above like this to do a morph, let's say Briala.
Code: Select all
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_briala.MorphResource
The result will be three new assets:
Code: Select all
ef_briala.ascii <-base head mesh with Briala morph applied in ASCII format
ef_briala.smd <-base head mesh with Briala morph applied in SMD format
ef_briala_ani.smd <- actual skeleton FIX in SMD format
Now we go to Blender to make them work.
Import the
ef_briala.ascii format,
it has correct normals in comparison to the SMD version.
Delete its skeleton, and import the small SMD fix
ef_briala_ani.smd skeleton as
Make New Armature, it will be imported rotated 90degrees so make sure to rotate it back to match the mesh.
Once you have rotated it properly 90degrees, no more no less, this is important, select
ALL meshes, head/eyes/eyelashes and what ever else it has, and while holding
CTRL select the skeleton, they need to be in exact order, meshes then select skeleton, now do
CTRL+P and click
Armature Deform to parent them.
Now you can apply the second frame of the animation and watch how the face gets fixed, easy right?
PS: For other details you can still check Crofty's tutorial, besides how to extract the morphs, applying a face fix is the same for all Frostbite games, and how to apply rest pose and what not.
If you want to do all morphs in a batch for ElfFemale then your .bat/.cmd should look like this. Take notice for 2 differences in base mesh/skeleton.
Code: Select all
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_angry_widow_p3.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_briala.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_bulls_charger_dalish_p2.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_bulls_charger_skinner_p2.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_dalishscout_p3.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_emalien_p2.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_fiona.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_hav_assistant_researcher.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_hav_elf_servant_p3.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_hav_minaeve_p4.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_01.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_02.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_03.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_04.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_05.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_06.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_dalish_01.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_dalish_02.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_dalish_03.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_dalish_04.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_dalish_05.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_head_dalish_06.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_inquisitionmessenger_p3.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_inquisitor.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_mastertaniel_p2.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_medic_p3.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_mihris_p3.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_nissa_p2.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_proxy.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_savedelf_p3.MorphResource
Fb_DAI_morph.exe mt_cbt_sera_mesh.MeshSet hf_skeleton.ebx ef_sera.MorphResource
Fb_DAI_morph.exe mt_cbt_sera_mesh.MeshSet hf_skeleton.ebx ef_sera_noears.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_sky_apothecary_p4.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_trainer_assassin_p4.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_trainer_knightenchanter_p4.MorphResource
Fb_DAI_morph.exe mt_basa_ef_mesh.MeshSet ef_skeleton.ebx ef_trainer_reaver_p4.MorphResource
have fun