I joined specifically to try to clear up a few things about what "can't" be done, what "must" be done, and, importantly, "how to do them."
I'm trying to provide a one-stop-post for a solution for people that want to create Full Body Morphs for their poser figures using multi-grouped objects that otherwise conform to Poser's native rigging requirements. (Native CR2 specs) So, I am very sorry for the length of the post. However, if you don't need this solution, don't worry about reading through all of it.
Vertice order problems are not exclusive to creating morphs from Poser objects or exports or anything to do specifically with Poser. They can happen for a variety of reasons, obviously application specific. Vertice reordering operations for wavefront.obj files are common as they travel across multiple applications during workflow and even single-group objects can get jumbled up when imported then exported from an application. But, Poser, itself, doesn't cause problems with vertice reordering on export. It's always due to user-error in my experience or an object that has something funky going on with it and doesn't conform to Poser's native rigging expectations. (Deformed objects, magnets applied, weird JCMs applied, operator-error, etc.)
There are two "old-school" ways to actually export from Poser that I'm used to, using Poser's export functions, to use a mesh welded from inside Poser during export, creating morphs for it, then applying those morphs from within Poser. (There is a reason Poser's groups have "Load Morph Target" on each one and even allow the import of Full Body Morphs for the figure and it's
not because this is somehow impossible to do, even when creating full-body morphs from outside the application.
)
The first involves the use of a java program that preserves a file reverence for the vertice order and produces an ungrouped, welded, model for morphing. I can't remember the name of the program (free, made by a Japanese fan) and I think the site is dead, so it may only be available on Wayback. I have a copy on another comp and, if I can find it, I'll write out how to use it. It's a bit complicated to use, but it has a decent workflow once you get used to it. The program is old and most people don't know about it, these days. Sorry I can't be more specific, but Brain is off the clock at the moment. If I find it, I'll link it and the process for using it. It saves time on the back-end, only. But, it preserves vertice order natively, so is handy.
The second is easier on the front end, longer on the back end. But, all tools are easily available and are free, aside from the chosen 3D modeling app. (I've posted this process numerous times on DAZ, Renderosity and RDNA, IIRC.)
Tools Needed:
A) A 3d application capable of importing/exporting Wavefront object files and manipulating them to produce the morph without damaging the mesh.
B) UVMapper (Free version)
UVMapper - UV Mapping Software OR any application capable of reading wavefront object files and exporting a UV reference file that follows Wavefront object standards (Can specifically export refs for UVs and Groups) and can apply those references to a compatible model.
C) For Vertice Order problems: Not all applications can solve vertice reordering issues, even if they have a button that implies they can... With multigrouped objects, this can be sometimes problematic. However, one thing I have found that does solve vertice reordering issues, consistently, is this python script:
http://www.renderosity.com/mod/forumpro/index.php?thread_id=2704761 (FixHexMT.py) Right-click on the ".doc" embedded file, save it, rename it as FixHexMT.py, use it either from within Poser, by running it as a script, or use it outside running it with Python. If anyone has any issues downloading it, I can upload it to a file server for you, the permission for distribution being contained in the post, itself.
Getting the base model: It's not hard.
The best way is to simply import the desired multi-grouped object from Poser's (or any other) geometry files. However, in order to really be able to work on a multi-grouped object, you need to weld the groups together, right? Right! Except, there's a problem - Many applications will simply weld the object together and do nothing to preserve UVs and will often disregard things like non-contiguous geometry/vertice distance, in order to produce a contiguous surface that "looks right" but is horribly wrong, since the object will end up with missing vertices. Those welded verts have to go somewhere, right? And, who really cares if part of an eyeball is welded to a character's face? (This varies by program, user and selected operation - YMMV. The javascript program I mentioned above was specifically created to combat this issue. Sorry, again, that I can't get the info atm for you all.)
Poser can export a multi-grouped object as one contiguous group and can keep it clean by not welding groups together that shouldn't be contiguous.
So, if you don't have an app that will reliably and cleanly weld multigrouped objects without removing verts then you can simply export the object from Poser. Here's how:
1) Load up the figure. (Preferably a "Dev" figure, like V4 Base if you're working with Victoria 4.)
2) "Zero" any joint rotations for the character/figure. (Window-Joint Editor-Zero Rotations) Do NOT use someone's "Zero" pose. Make sure all undesired morphs are turned off an that the figure is at 100% scale and all groups are at 100% and that no "morphforms" are active. (Morphforms are complex morphs that generally do things like rescale groups while adding additional morphs, etc.. NO rescaling or otherwise altering of the mesh of the original object by functions in the CR2 are allowed for the export if you want a good morph.)
3) Check the group for the figure's Center, on which the rigging is based. For Victoria 4 and most other human figure's, that will be the Hip group. Navigate to it instead of clicking on it - You do not want to move it. You want this group to be located in the center of the field at 0,0,0 coordinates. Why? Those coordinates will be the absolute reference frame for the rest of the vertice references in the wavefront.obj file. They need to be at 0,0,0, always, for easy morph creation. (Note: A "slight" deviation, like .000001 isn't going to matter.)
4) Export the entire figure from Poser using the following dialogue :
File->Export->Wavefront Object->Single Frame-> Choose only "Weld Body Part Seams" (You can also check "As Morph Target" but this could remove some edits you've done in Poser or otherwise wish to preserve for some reason.)-> In the scene navigation window, first click on "Universe" to clear any possible selections Poser has made for you. Then, navigate to the multigrouped object. Select each group that you wish to export. BE SURE that you do not select any group that does not belong to that figure's base geometry, like an invisible "parented" object. For expediency, if you know it's a clean scene/figure, you can click the main Figure name and it will select all the associated groups for you. -> Then, save it as *.obj (*whatever you want to name it) somewhere you can find it.
This will produce a figure with its groups properly welded without altering the base mesh provided by the referenced parent figure in the Geometry folder. Poser is designed to do this very thing when exporting a Poser grouped mesh like this. (Note: If there are active deformers that are causing deformations at a zero'd pose, switch the deformers off in the Figure's Object window by switching them to "Deformers -1" before exporting.
Making a UVS reference file:
5) Now, before you start pushing verts, you should make a UVS reference file using UVMapper. To do that:
A) Start UVMapper (free version)
B) Import the reference multigrouped object file - This file will be the base multigrouped object located in the Geometries folder (or wherever it is stored). If you don't know where it is for a Poser Character file, open the CR2 in a text editor and the location will be listed there within the first five/ten lines or so.
C) Now, export a UVS reference file - "File -> Export UVs.." Choose to Export Group Names and Export Material Names. (Exporting UVMapper regions does nothing if you haven't created any.) Save the file in same directory, for convenience, that you saved the exported, welded, figure from Poser. This UVS file will later be used to reassign the appropriate groups and materials to the welded object, turning it back into a properly multi-grouped object matching the original.
Pushing Verts (Morphing the object in your app)
D) Open up your 3D application, import the single-grouped object you exported from Poser (don't choose any weird import dialogue choices) and start pushing verts. Do not add or delete vertices! NEVER do that. Just move them around until you have the desired morph. Note: Some operations or actions that push vertices to extremes, place vertices in the same location as another, bork up vertice normals references or just plain result in a mangled mesh can bork this process up, since it may not be possible for some programs or FixHexMT to figure stuffs out. But, for just about any reasonable "morph" one can imagine that shouldn't be a problem. Also - Be very, very careful not to move the entire object, itself. If you do, this will change the "object center" which was first established as the absolute reference point when you exported this mesh from Poser! If you change the object center, either by moving it in your 3D app, scaling it horrendously, or, sometimes, depending on the application, making morphs that are far out-of-bounds, your morph will cause effected regions to "jump" out of place, often with hilarious results... Only move verts, not the entire object, in order to create a good morph.
E) Now that you're done, export the wavefront object from the 3D application. Choose no option that adds/removes/changes groups, adds/removes verts/edges/faces, changes the object center or results in a change of SCALE - Poser's scale is eensy-weensy tiny. If you've increased the scale in your 3D app to better work with the object, reverse that change out after you're done morphing it. (Popular import scales are times 500 import, times .002 export. This equals to 1 for non-math majors.)
Reassigning the Groups from the original, grouped, object to this single-grouped, morphed, object:
F) Now, we reapply the groups using UVMapper - Import the morphed, single-grouped version, of your figure/object - File -> Load New Model -> your morphed single-group object file.
G) Import the UVS file- File -> Import UVs -> Your previously saved UVS file generated using the original,base, mesh of the grouped object. (This will apply the UVS file, regrouping the object as the original is grouped and assigning the proper, original, materials to it. If you have a dialogue error, that means something went wrong. This is possible, but usually only because verts were added/removed during morphing. (Changes in scale/center won't be detected.) Normally, this isn't an issue because of a bad Poser export. However, it CAN happen from Poser's export when exporting complex geometries, like very detailed cloth items that have lots of verts and multiple layers. Rare, but it can happen that Poser will weld two or more bordering verts together that shouldn't be. Poser is designed not to do this, but it can't always use it's "ghost verts/spacing-between-groups" on certain objects very well.)
E) Save the now morphed, regrouped, object under a new name so you know it has been regrouped. Never save over the original object and don't save over your single-grouped object, either, just in case you have to make some fixes.
Preparing Morph Targets and Applying Them to the Original Character/Figure From Within Poser:
F) Here's where it can get tedious - Now, import your now multigrouped object back into your 3D application. Check to be sure it's multiple groups and that they look fairly normal. You'll need to export each, individual, group containing the desired morphs as separate wavefront object files. (You don't have to use the same group name in the corresponding file name as the original. That won't matter to Poser since all that matters is the name of the group inside the file, itself.) Yes, that can be a lot... But, this is how you have to do it in this particular workflow. Why? Because the FixHexMT.py script only works on single, individual, groups to reorder vertices. Poser doesn't care and will import a properly grouped, morphed, multi-group object as a Full Body Morph. But, if there's a vertice reordering issue with a group in that FBM, the only easy way to fix it is to handle it by itself. (Based on the use of FixHexMT.py documented here - There are plenty of other solutions using other applications.)
G) Start Poser, load up the original figure/multigrouped object you have just made morphs for. (It doesn't matter if this figure is posed, already morphed, wearing clothes, scaled, moved or not. However, it's always best to use a zero'd base figure/object so you can easily export a FBM for use, later, if you wish. It's "cleaner" that way and lets you easily apply that FBM to other morphed versions of the figure or CR2 that use the same mesh.)
H) For each group that you have morphed in your application, navigate to the group in the figure/multigrouped object in Poser's Object menu and click on "Load Morph Target." You can "try" to choose the "Attempt Vertex Order Correction" but I think that's only a joke the original developers put in there - I have never seen that work and have been using Poser since Poser 6.
I) Check each morph for the group by dialing it to "1." And, here's where everyone has problems, right? Inevitably, the geometry will asspload all over the place for one of the groups. What to do? Use the FixHexMT.py script, of course!
Using the FixHexMT.py script (linked above) to fix vertice reordering problems caused during wavefront object export from the 3D application used to morph the object and only rarely ever caused by Poser, itself:
J) Open the Python Script Window in Poser - Window->Python Scripts (You could use an outside Python call if you wished) Load the Python Script into the dialogue window (Click on the "..." or otherwise free up a slot and load the FixHexMT.py script. It doesn't matter what directory its in since it doesn't care, itself.)
K) To Fix the reordered vertice problem, you will need an original reference group. To obtain that, load up the original multigrouped object from within Poser and export the group you're having a problem with in your morphed figure. For instance, if you're having a problem with a V4 morph for the Head group, then load up the base V4 figure and export its head using the following dialogue: Export->Wavefront Object->Single Frame->Head-> Choose only the "Include Body Part Names in Polygon Groups" and save somewhere you can find it and know it's the "head" for V4. (It does not matter if this particular object is morphed or not. ALL the FixHexMT script requires is the proper vertex order from this file.)
L) Now that we have an original copy of the "good" single group, we run the FixHexMT script - Click on it in the Python Window. You will get a dialogue. The first choice is that you navigate to the Original group Object. (The one you exported during K when you discovered you had a problem.) Then, you will be asked to navigate to the Morphed version of that object. Choose that. Finally, you will be asked to rename the now regrouped object and save it. (You can, generally, save over your morphed object without fear and not bother renaming it, saving you some file space.)
M) Once you have saved the now properly ordered group, you can try to load it back into the group your morphing in you figure as a Morph Target. When you do, it should be fine, with vertices ordered the way they are in the original group.
N) If you are going to be making an FBM for use with other characters based on this mesh, then you should apply the individual group morphs to a non-morphed, zero'd, figure. Don't move/scale/alter the figure other than applying the individual group morphs to the figure and turning them "on" by setting them to 1. Once you have loaded all the individual group morphs and have set them to 1, then you can export these as one multigrouped object from Poser for future use. To do that, go to the File->Export->Wavefront Object->Single Frame-> Choose the entire figure or only the groups of it that you have morphed-> Dialogue settings should be "Include Body Part Names in Polygon Groups" which will render an multi-grouped object file. Save it somewhere you can find it. Versions of Poser that support the direct import of a multigrouped FBM file (most of them) can load up this multigrouped file as an FBM with no issues at all, since it is clean and Poser is designed to do this... To import this file as an FBM, load the figure, choose Figure->Load Full Body Morph-> then navigate to your now clean, multgrouped, morph file.
Considerations:
If you're going to be frequently making FBMs for a figure, it's a good idea to create a directory and to store a collection of files consisting of individual files containing one group of each group in the figure. This way, if you ever have a vertice reordering issue with a morph you can easily load up the FixHexMT script and quickly navigate to an already saved reference group file for that particular group.
If you're trying to export clothing items or other complex meshes from Poser so you can create FBMs for it, you have to check to see if any verts were improperly welded during export. This can happen and its not uncommon for these sorts of items, but its due to how the clothing item was constructed and, likely, due to its complexity. There are workarounds for the issue, but not all will be successful. However, most importantly, this doesn't constitute a "vertice reordering" issue, it's simply a bad export. (I haven't experienced this for properly exported, professionally developed, human character figures that obey Poser's CR2 standards.)
This process is
not as complex as it seems, simply because of all the steps. It's simply tedious for producing FBMs. However... it
works and it's a free solution if you already have your chosen 3D application to create the morphs.
Lastly - In someone's experience, Poser might be causing vertice reordering issues when an object is exported. However, I have never experienced this being caused by a
properly done Poser export. Never. I have probably made hundreds of morphs and full body morphs and have never once experienced a vertice reordering problem caused by a Poser export. However, I have frequently experienced vertice reordering problems caused on export from another application.
It's become popular in certain places to "blame Poser" for user problems. Why? It's because of the war... The truth is most problems I see mentioned are entirely due to user error. Not all, mind you - Poser isn't perfect. But, most complaints I read these days are a bit unjust when it comes down to Poser problems. I've tried to help solve a common issue, largely due to misunderstandings when creating morphs, and to hopefully correct some misconceptions concerning what's going on with vertice reordering. If someone is having problems with newer DAZ figures, I wish I could help in detail, but I don't know enough about them nor do I use them. I'd be happy to try to help, though I don't know if I could.