Cage opened this issue on Dec 20, 2006 · 1232 posts
JoePublic posted Wed, 10 January 2007 at 11:36 PM
"For defining features....
One might assume the tip of the nose is the point which lies furthest from the center on +z. One might look for a nostril material to locate the nose. One might have the user place a marker object. One would have to expand to define the nose, overall, beyond that....
For ears, look for clustered geometries on the side of a head which lie outside the basic shape defined by the scalp. More complicated than the tip of the nose, but it seems feasible....
For a mouth, look for lips, teeth, or tongue materials. Or look for the area on +z where the normals of neighbor vertices point toward one another on y. Or look for the place where the mesh turns inward upon itself.
Then if and when any of these are found, find min/max areas for them and calculate basic offsets to use when comparing the meshes. This could (if workable) remedy the worst concerns about incompatible shapes overall, but then there would still be variance within the defined features to be accomodated."
Forgive me if it doesn't make sense, because IANAP (I Am Not A Programmer), but this sounds very complicated.
What I think is needed is a datafile for the face of each known Poser mesh that the script could look up.
Where every part of a face (ear, nose, eyebrow, chin, cheek, etc)
is linked to a group of vertices.
So if you want to transfer a morph the procedure would go ike this:
Make datafiles of the most common Poser meshes that define the face parts: Where are they placed, what vertices do they consist of ? (Could this be done by regrouping the head and splitting it up into a dozend or more sub-parts, one for each feature of the face ?)
Then:
This would transfer the face parts in mesh B into the (relative to the rest of the face) same position as found in mesh A.
The faces might still look a bit different because other features not stored in the datafile (EXACT shape of cheeks, chin, browbone, noseridge etc) might still be different.
To improve it, you could move and resize the body of mesh B according to the datafile so that both heads are the same position and have the same size.
Then you can run your original script and try to finish the morph.
Again, if this doesn't make sense from a technical point of view,
I appologize in advance !