Download - 761.50 KB
Name: Face Mix
Author: Alecu aka Cold Blood
This is just a small application that tries to simplify and ease the process of
making new heads for oblivion.This was previously known as Vertex Selector.
It can also remove vampire effect from heads.
This utility opens a head file,egm and tri, and allows you to perform changes
on them based on a modifier stack. A stack is pretty much a given set of items
in a certain order in this case the items being modifiers. After you apply the
modifiers you must save the new egm and tri files from the menu.
You open a egm or tri file,the other file automatically loads, and you are
given the choice of adding modifiers to the faces files in an order of your
choice. The options currently supported are:
-Replace FaceGen Morph
Replaces one FaceGen Morph that you can select from the properties plane in the
right side of the window. Accuracy refers to how small are the distances that
will be taken into consideration when generating the replaced facegen
morph.High value means low accuracy and will cause bumps and distorsions in the
Ignore list refers to the vertices that won't be altered in any way in the
morph. This is to always preserve the exact position of the neck's vertices or
else an annoying seam can occur. Ideally,the accuracy should be set to 0,every
change will be accounted for, and the ignore list should consist of neck and
seam vertices. You can select which one to replace from a drop-down list in the
properties plane. These morphs are used to customize the face in the race menu.
But this is aproach may be very wrong and it almost impossbile to do anything
just by replacing the face morphs since each of them affect at least 3 sliders
in the race menu.
-Replace Face Expression Morph
Nearly identical to the Replace FaceGen Morph modifier. The only exception is
the target morph,which in this case are face expressions. The other difference
is that these morphs have a scale mult, scale min x,scale min y and scale min z.
I don't know exactly what each one means but I believe that scale mult somehow
gives the base unit which get's multiplied and added to each coordinates of the
vertices in the head. I've added options to edit these values as you please.
Also, new in version 0.4, there is also a scale value in the menu. This affects
how much will the head mesh get distorted by the resulting morph. Lower values
mean less changes and higher one means more changes. Max is 32767.
-Add Eye Morph
This modifier takes a conformulated head with tri and egm files with a modified
shape and and the changes as an eye morph.It has to options: to load the
modified vertices from a text file or to autodetect them. Accuracy refers to
the minimum distance that will be accounted for. The Name text box refers to
the that the new modifier will have.
-Remove Vampirism Morph
This removes the vampire morph from a face. Characters that use the race
shouldn't transform into a vampire anymore.
-Compute FaceGen EGM Morphs
This feature doesn't work yet.Try to use this feature and the application will
crash with a NotImplementedException .This feature will take a text file with a
set of percentages or weights for each facegen slider and egm morph. It will
load a set of obj files that corresponds to each slider at a max value in a
given direction.Then it will compute the egm morphs based on exact
mathematical formula computed from the weights. If the weights corresponds to
those in-game,then the new morphs should work fine. But this is still a big
guess and I'm not too sure about this. I may be very wrong. But chances that it
will work are quite high. On the other hand, I haven't been able to find out
the weights and it's still incomplete without the weights and they are probably
very hard to find out.The mathematical formula should be very simple,
like y = 66%x + 34%z - 15%h or something like that. This feature has been removed
for now until I get to experiment more with how to generate the facegen morphs.
-Generate DispHappy Expression Morphs
This feature works very similar to how Compute FaceGen Morphs works. It takes
5 modified meshes(happy at 60%,happy at 70%,happy at 80%,happy at 90%, happy at
100% ,interpolates between them to create 4 morphs used for smile
They resulting expressions will look very similar to the original ones.
They will look a little more uniform and the transition will be made more uniform,
because some information will be lost but this is the only way to do this.This
happens because at first,each vertex has 5 possible morph "directions" and
after when it generates,it removes one direction and redistributes it across the
But this effect was hardly noticeable ,let's say that when you look up front, in
some cases,one pixel will be a little up or down by one pixel. This effect is so
small that is hardly noticeable. And it is well within the natural limits.
Real people always have small variantions when smilling,blinking etc.
When using this,you are given a list of weights,name and file for each expression
in the user interface. Just double click any row corresponding to the expression
that you want to assign the modified mesh to,and you will be shown an open dialog
window from which you can load the file,in obj or nif format. Or you can just select
a row and press the open obj button instead of double clicking the row.
You can even open custom weights file,if you don't find the default weights good
enough. In the Defaults directory,you can find example of weight files. These weights
aren't perfect but thye should be a good starting point. You can copy them and start
adjusting the numbers until you achieve the desired expressions in-game.
Also, the morphs can be computed in 2 ways. Generate 4 intermediate meshes and then
compute the morphs for those meshes. You can choose this option by pressing the absolute
button/circle. The other way to do this is to compute 5 intermediate morphs and then
interpolate between them to generate the 4 final morphs and it is called relative mode.
There is a small difference between these two as absolute mode will make full use of every
possible value but it will only take into account the direction in which to move every vertex
whereas relative mode will also take into account how much to move that vertex in the given
direction when morphing the mesh. For absolute mode, playing with scale min x, scale mult,scale
min y, scale min z should solve the problem of how much to move each vertex in the given
direction, better said, how much much effect the morph has on the mesh.
-Generate DispAnger Expression Morphs
This feature works nearly identically with Generate DispHappy Expressions Morphs,
but instead it will generate the morphs used for anger expressions. So instead of
happy 60%,happy 70% and so on,you will have anger 40%,anger 30%,anger 20%,anger 10%
and anger 0%. The same rules that apply for Generate DispHappy Expression Morphs,
apply for this one too.
New in version 0.4 you have the overview window in which you can see the innards of the tri
file. You can change some things here and there and you can also export face expressions and
eye modifiers. Unfortunately it works a little bit slow. To acces the overview, just change
the tab from the tab menu to the "Overview" tab. Yes, it has overview written on it and you just
click it. It will run a bit slow but eventually you will see some kind of dropdown list that
is actually a tree view. You can expand most items to see what they actually contain. Items that
can be expanded have a "+" in front of them. And you can select some items.
In case you select an item corresponding to a "morph", a face expression morph, a menu with options
will appear on the right.Just expand the tri and then expands the morphs item and select one of the
Here you can edit the morph. You can change the name of the morph,
and also change the special Scale Min X, Scale Min Y, Scale Min Z and Scale Mult values that affect
the overall strength of the morph. I still don't quite understand what those values mean but
from what I have seen, a higher Scale Mult value should increase the effect of the morph.
By effect, I mean the fact that the morph will deform the mesh a LOT more. From the menu
you can also export the morph. I haven't been able to find exactly how to properly apply morphs
to a mesh so I have added many options. The most relevant one is the "Export Scale".
This options governs the effect that a morph will have on the mesh. Smaller values will result
in a LOT of deformation on the mesh. I'm talking about completely ruining the mesh. If
you see the mesh so deformed then increase this value at least 10 times or even 20 times until
it tones down. The other options are mostly the same and you should just leave them as they are.
Modifiers can be exported too. These work just fine. From the overview, expand the tri and then expand
the modifiers item. Select one of the modifiers and a menu will appear on the right which will allow
you to export the modifier. This is very usefull for synchronizing eye lashes to follow the movement
of the eye lids when they blink,squints etc. You will get the deformed mesh when the eye blinks,squints etc
1. Extract the files to a location.
2. Run the executable.
.Net Framework 3.5 http://www.microsoft.com/downloads/en/details.aspx?FamilyId=333325fd-ae52-4e35-b531-508d977d32a6&displaylang=en
Visual C++ 2005 redistributable http://www.microsoft.com/downloads/en/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&displaylang=en
Visual C++ 2008 redistributable http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
Known Issues or Bugs
Probably has some bugs left. Now it can handle just about any tri file,added support for quad faces. Some issues with bad names,
actions that you shouldn't be normally able to do, and some slight misbehaviour.
0.4 2011/02/17 - Another major release. Included a newer niflib with support for newer nif formats,fixed some problems and added new features, mainly the Overview
0.3, 2010/11/26 - Another major release. Fixed some bugs,added support for nif files and added new features.
0.2, 2010/10/25 - Major update and name changed to FaceMix.
0.1, 2010/10/7 - Initial Release.
Official ElderScrolls forums: Cold Blood
scanti and throttlekitty for their work which allowed me to make the
Shon, amorilia, tazpn,xoalin, dragongeo2 for making NifLib
Readme Generator - http://lhammonds.game-host.org/obmm/tools_readme_generator1.asp
NifLib - http://niftools.sourceforge.net/wiki/Niflib
This mod is released under the GNU General Public License.
The GPL can be found here: http://www.gnu.org/licenses/gpl.txt
Licensing for NifLib
Copyright (c) 2006, NIF File Format Library and Tools
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the NIF File Format Library and Tools
project nor the names of its contributors may be used to endorse
or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.