Meaning of "split" parameter in flex and eyelid QC commands?

I’m trying to understand how flexes work internally in the source engine, but I’m [del]a bit[/del]very confused about the “split”-parameter for eyelids and flexes (I’m assuming they’re related). Here’s what the vdc has to say about both of them:


What determines a mesh’s Y origin? Shouldn’t that just be 0?
And what are the “sides” it mentions? That entire sentence makes no sense to me. Looking at the source engine’s source code it looks like the vertices are split along the y-axis, so I’m assuming that’s what that means? That seems very arbitrary though.

I also don’t know what it means by “smooth the divide”.


What’s the “0” line supposed to be? An axis? I’m just gonna assume that’s refering to the y-axis again (dear lord, who documented this crap).
I’m also guessing the “distance” would have the same effect as the “units” for the “flex” command, whatever that may be.

Maybe someone has worked with these before and has a little more insight? I’m mainly interested in what the “distance”/“units” values do exactly, I think I more or less got the rest.

Right, so:[/t]

The mesh’s Y-origin is the world’s Y-origin, Y=0. You are correct there.

The sides refer to the mesh on either side of that Y=0 line. Everything with a positive X coordinate is on the “left” side, everything with a negative X coordinate is on the “right” side.

What the flexpair split control does for flexes is it splits an otherwise mono morph, which affects the entire mesh, into two morphs - one that controls the left side of the mesh, and one that controls the right side of the mesh. Together, these are referred to as “stereo” flexes. They are extremely useful for creating a set of facial morphs that are mono, and then having the engine split them automatically for controlling different sides of the face independent (such as for winking, for example).

The “smooth the divide” refers to a radius of gradient applied to vertices around the Y=0 line. Here is a quick GIF showing off a value of 0.001, a value of 1, and a value of 5 (for extreme example). The jaw-drop was made stereo to make this demonstration very clear.


Note that when it says that “0 disables”, it means that if you use “flexpair <name> 0 frame <index>”, then it will behave identically to “flex <name> frame <index>”, and make a mono flex.

I don’t know anything about eyelids, I don’t use them (I just use flexes for everything), but I assume they operate the same as flexes.

If you ever have any model/Source related issues, feel free to hit me up on Steam, mate.