In the absence of an updated toolset, most of us morph modders have felt limited to what can be done using the DA2 character creator. Thankfully we can use Mephales's PYGFF Editor to do the same things if not more. The only drawback is that facial structure modding requires more work since we can only see the changes in game. I'll touch on that more in the Advanced Guide.
Tools Needed:
Mephales's PYGFF Editor
Thought Process's Erf Packer
Mop files attached.
The Basics
I'll be using the hf_cgn_001.mop I extracted from the FACE.erf located in the Program Files\Dragon Age 2\packages\core\data\
There will be 7 Indexes to every mop.
23000 - Morph Parts
These are the base mshes.
0 = Head. The base head msh. For a female it's mt_bas_hf, male mt_bas_hm.
1 = Eyes. This is kept blank since the mop is using the default msh.
2 = Hair.
3 = Beard.
4 = ? Not sure
This mop only has the first 3, if you need to add more just copy and paste any branch and edit. For this tutorial I'll be changing the hair to Bethany's. It's important that you not only enter the msh's name, but it's location. I've pasted the following to the edit box and clicked the save button to apply the change. *You can copy and paste the resource name from the Chargenmorphcfg file*
art\characters\playercharacter\humanfemale\hf_har_beth
23001 - Morph_TintFileNames
0 = Skin
1 = Lips
2 = Eyes
3 = Hair
4 = Eyeshadow
5 = Blush
6 = Tattoo 1 (R Channel)
7 = Tattoo 2 (G Channel)
8 = Tattoo 3 (B Channel)
9 = Tattoo 4 (A Channel)
10 = Brow/Stubble
11 = Stubble?
Just like in the toolset we can add multiple tattoos. I'll add the blood smear and Aveline's freckles which are located in the R and G Channel of the tint texture. I'll also change the hair color to one of my mod's tint. To use a modded tint you need to use the exact resource name.
23008 - Morph_Name
Optional, you don't really need name/rename your mop.
23014 - Morph_Mat_Params
The Morph_Mat_Parameters references the material data for the mop. Essentially it allows us to change the opacity or strength of tints, brow/stubble, and skin texture blending. This mop has 5 branches, the numbering only signifies the number of branches. However within each branch there are four indexes. 23009-23012.
23009 - MOPRH_MAT_NODE_NAME - Specifies the type of material. FaceM1, HairM1, ScalpM1 etc
23010 - MORPH_PARAM_NAME - Identifies the type as Tint, Facial Hair, Tattoo, etc
23011 - MORPH_PARAM_INDEX - Is the numerical name. Lips, Thin Eyebrow, Blush, MiddleForehead.
23012 - MORPH_PARAM_VALUE - Is the opacity/strength from lowest at 0.00 to 1.0. The same as in the toolset.
So in Branch 1 the index of 2 is for Blush and the value of 0.46 strength.
Easy Reference Table
Since I added two Tattoos, I need to update the Morph_Mat_Params to reflect that. To do that I'm going to right click on Branch 1 and paste it into 23014. Doing that will paste the copies at the end giving me branch 5 & 6. I'll change mml_vTintMaskColours to mml_vTattooParameters. I'll also change the Index to 0 (Tattoo1; R Channel) for branch 5 and 1 (Tattoo 2; G Channel) for branch 6. Both will have opacity set to 1.0.
Skipping 23015 & 23018 for the Advanced Tutorial
23022 - Morph Textures
Just like in the Toolset we can add different textures to our morph. We can replace the default skin texture or skin type. Eye textures, lash textures etc. Again like in the Morph_Mat_Params the numbering is only for the amount of branches. Inside each branch are indexes 23019-23021.
23019 - MORPH_TEX_NODE_NAME - Specifies the type of material.
23020 - MORPH_TEX_PARAM_NAME - Identifies the type of texture, diffuse, normal, tint mask..etc
23021 - MORPH_TEX_NAME - The texture name and location.
This mop doesn't have the tattoo tint we need. And if I was to test the mop in game, it would use the default tattoo tint instead.
So we'll need to add another to include the tattoo tint.
Ok lets test what we have so far.
Mop Modding using the PYGFF Editor Tutorial (Intermediate Guide)
Building from what we learned thus far. I'll make some changes to this mop.
1) Change the hair, lip, skin and freckle color
2) Intensify the lip and freckle opacity.
3) Combine two skin textures and blend the following areas: Eyes, Cheeks and Nose.
4) Change the eyebrows (not using the default set or a skin texture with eyebrows)
5) Add one of my eye textures
23001 - MORPH_TINTFILENAMES
23014 - MORPH_MAT_PARAMS
I also changed they eyebrows to bushy which is index 0. Unlike the toolset the opacity maxes out at 1.0, here I gone as far as 2.0.
23022 - MORPH_TEXTURES
To blend Skin Types, I need to add four skin textures. A mml_tDiffuse & mml_tNormalMap for the base skin texture and mml_tAgeDiffuseMap & mml_tAgeNormalMap for the blend skin texture. I'm going to use my mt_hed_flotc8_0d/mt_hed_flotc8_0n from my LOTC s Skins for DA2 as the base. For the blend I'll use the mt_hed_quna_0d/mt_hed_quna_0n. Using the qunari texture will make my morph have a rough aged look. To complete the process I need to return to the MORPH_MAT_PARAMS.
23014 - MORPH_MAT_PARAMS
I only want the eyes, cheeks and nose to be affected so I need to add a separate branch for each area. Using my reference table (below), I can see that I need Indexes 12, 13 ,14, 15 and 18. Therefore I need to create 5 additional branches. I'll make the opacity 1.0.
23022 - MORPH_TEXTURES
Just as done previously, we need to add a new branch for the eye texture, and two for a new stub texture I created (not available yet).
Now lets see what this looks like in game.
She won't win any beauty contests.