• Welcome to the Community Forums at HiveWire 3D! Please note that our store and forum are on two separate servers so you will require a separate login for each. The store will ask you for your Real Name (WILL NOT BE displayed to the public) and the forum will ask you for a User Name (WILL BE displayed to the public). You may use the same email address and password for both.
  • The 14th Annual Songbird Remix Open Rendering Season Contest is now open! See the contest thread for details.

Exporting figure from Poser for full body morphing

Bejaymac

Inspired
So my understanding from previous posts was the Studio would have the same issues exporting a posed figure for morph creation as Poser. Later posts suggest otherwise. I wouldn't mind exporting from Daz to create a Poser morph target. But I'd be using Blender. Is this not possible? Otherwise, maybe I can convince CC to sell me a copy of PML.
It's safe to export the OBJ from DS as I do it the time, Poser figures usually load with a memorized pose, so you need to remember to zero the figure before you export.

The OBJ export in DS allows you to export the mesh without the mesh groups, so it doesn't "really" matter if the mesh groups are welded or not.

Morph Loader also allows you to import an OBJ for morphs using just the vertex data, so as long as the vertex count and winding order are the same DS will create a working morph from it.

No idea about GoZ for DS/Poser as I don't have ZB, but if it's anything like the DS to Hexagon bridge, then mesh groups are not sent across the bridge, so you end up with just one item in the scene.
 

Ken1171

Wise
Contributing Artist
No idea about GoZ for DS/Poser as I don't have ZB, but if it's anything like the DS to Hexagon bridge, then mesh groups are not sent across the bridge, so you end up with just one item in the scene.
Poser and DS internally use groups in different ways. DS4 works with single mesh internally, while Poser breaks it into split geometries, and only welds them back in runtime. Even in Poser Pro 11 there are some cases where it fails to properly weld all groups when rigging new models. This can result into tears, gaps, and rendering artifacts between groups, in most cases just involving a few faces. Poser offers an option to "weld" groups when exporting to OBJ, but this will change the vertex count and order comparing to the version it internally uses, making it invalid for morph targets. At least that's what happened when I tried. It doesn't know how to export properly welded OBJs while preserving groups. When it welds on exports, all body groupings are lost.

ZBrush, on the other hand, doesn't use or need groups, but can still import them as means to help making selections. Even when it imports groups, it will not know how to export them back, because it only works with vertexes. This is where GoZ comes in - it automatically handles the groups for us between Poser/DS and ZB, while keeping the mesh in ONE piece. Whenever I tried to export OBJs from ZB as morph targets for Poser, I ended up with differences in vertex count, vertex order, and even in scale. This is why Tony was suggesting NOT to use OBJs created by Poser, because they WILL be saved as split geometry and NOT as single mesh as the geometry was when it was originally created and imported. This will only become more apparent when we start creating morphs for it, or try to use the morph targets in DS, which doesn't work with split geometries.

The problem with creating body groups outside Poser is that MOST 3D modeling programs do not know how to make groups while keeping the mesh in ONE piece. All Autodesk modeling programs are like this, to include 3DSMAX and Maya. Looks like Blender and Modo are the only programs I know of that can handle groups without splitting the geometry.

Therefore, if you didn't create your own groups before rigging the models in Poser, you CANNOT use it to replace OBJs created by Poser because they won't contain any grouping information.
 
Last edited:

Darryl

Adventurous
Thanks Bejaymac, Ken1171, and everyone else who's chimed in on this. I've used morph packs to modify some figures but sometimes I can't get exactly what I'm looking for and would like to polish it off in an external modeler. It sounds like I would be able to create a work flow of dial spinning in Studio, exporting to Blender and using the resulting obj as a morph target in Poser. Or, optionally, bringing it back to Studio and exporting a CR2. A bit convoluted, but isn't it always?
 

Pendraia

Seasoned
Contributing Artist
Bejaymac is right...that's exactly what GoZ does. The only thing to remember is to change the subD level to 0. Resolution is fine though at whatever setting it's on.

Edited to add you can do a manual export which also has no problems and retains the surface groups which GoZ loses.
 

Morkonan

Inspired
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. :)
 

Pendraia

Seasoned
Contributing Artist
Welcome to the Hive Morkonan and thanks for taking the time to post the information. I know that I still have a huge amount to learn about Poser so I very much appreciate the time you took to post.
 

Minyassa

Enthusiast
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.
I know this is major necromancy here but I found this thread while trying to search for information about this specific program because I wanted to try using it again, after years and a couple of hard drive changes. I have to post here because I DID find it, on an old hard drive, in an obscure folder...on a whim, I searched my entire old hard drive for .jar files and that actually worked. It's called Compose. I'm shocked but pleased that I still have it.
 

Ken1171

Wise
Contributing Artist
If all you want is a clean figure mesh to create morphs from, then do NOT export anything from Poser. There is absolutely no need to do that, because it will bring you more trouble than benefits. Simply use the original OBJ from the Geometries folder. Exporting may cause all kinds of trouble, like scaling (figure changes size when morphed), offsetting (figure moves when morphed), and most of all, Poser will change the vertex count and order - this cannot be avoided.

If you instead use the original OBJ from the Geometries folder, there will be much better chance that your morphs will work when imported back, EXCEPT if the program you use do not support unimesh geometry - MOST don't. For instance, all of Autodesk programs don't (3DSMAX, Maya, etc). Poser itself doesn't support unimesh geometry, and that's why it cannot preserve vertex count and/or winding when OBJs are exported. Two programs I already know to support unimesh geometry are Blender3D and Modo. If you do your morphs there, you are safe to assume the resulting morph target will work in both Poser and DS.

However, DS does support unimesh geometry, so that can be used as a bridge for morph targets intended for use in Poser. We cannot export any morphs created in Poser (using the Morphing Tool), but we can save to CR2, load it in DS, and then export to OBJ using the Poser scale preset. That will always produce a properly welded OBJ with all groups and UVs intact. This can be use for general purpose morphs, but, unfortunately, not for JCMs where the figure is posed, unless it uses old legacy rigging like V4 does. In other words, this method cannot be used with modern weight-mapped figures when it comes to JCMs, or anything where the figure is posed.

When it comes to GoZ (if you own zBrush), it's a quick and easy solution for creating morphs, BUT if you export the morph to OBJ from zBrush, it will NOT preserve vertex count and winding because that's how it came from Poser - not because zBrush did something to it. Therefore, if you use GoZ from Poser with intentions of having a DS version of the morph, that will not work. It's better to create the morph in Poser with the Morphing Tool, save to CR2, and load it into DS to export to OBJ from there.

Personally, I prefer to avoid all this and do my morphs in Poser itself using the Morphing Tool. This way, we don't need to export anything, so there is no worries about split geometry or vertex winding order.
 
Top