Forum: Poser Python Scripting


Subject: Moving morphs between different figures

Cage opened this issue on Dec 20, 2006 · 1232 posts


Cage posted Wed, 27 December 2006 at 3:40 PM

This version integrates Ockham's method for normalizing the deltas as they pass between actors.  It also makes minor changes to the default settings.

-X-mirroring is off by default.  The process can speed things up a bit, but it can mirror the wrong vertex when multiple verts have the same coordinates in the mesh.  It also fails with centered actors which aren't really symmetrical.

-The octree subdivisions now default to zero.  Zero is 'no cuts', using a single bounding box without subdivisions.  The best setting seems to be 1, which is one cut per edge, for 2x2 on each side or 8 total subdivision regions.  Settings above 1 are slower than using 1, in my tests.  The current 0 setting is faster than the original script.

The overall process hasn't changed, however.  I'm having some trouble deciding how to proceed.  So far, suggestions have focused on using vertex to polygon surface comparisons, but it seems that this wouldn't really be compatible with the current vertex-to-vertex methods.  Switching to vert-to-surface would seem to me to require that all comparison calculations be run anew for each morph, since the morph surfaces will be different each time.  The vert-to-vert process can make the main comparisons only once, then save the correlations to a datafile, which speeds up final morph creation.  I'd prefer to find a way to correct the misplaced vertices without having to use surface comparisons.

The problem is that going 'downhill' from a higher-res mesh to a lower, all verts in the high-res mesh are forced to find correlated verts in the lower-res mesh.  That leads to 'piggybacking' of vertices and improper placement.  If I can find the 'true' matched verts and then adjust the neighboring 'false' matches somehow, it would seem to me that vertices can be used for the whole process.  But can this be done?  Can I use the delta of the 'true' match and somehow adjust the 'neighbor' matched verts by their offset relative to the 'true' match?  It seems like something akin to Ockham's normalization process should help accomplish this, but my efforts so far fall flat, as it were.

So, at risk of being an ongoing annoyance, does anyone have any thoughts on all of this?  Can vertex-to-vertex be rescued, or should the process be rejected and the entire procedure of the script be re-thought?

Any ideas, or suggested resources I could study?  Am I thinking about things the wrong way?

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.